merge union room with master
This commit is contained in:
+336
-369
File diff suppressed because it is too large
Load Diff
+133
-130
@@ -19,18 +19,20 @@ static bool8 ShouldSwitchIfPerishSong(void)
|
||||
if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG
|
||||
&& gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
{
|
||||
u8 opposingPosition;
|
||||
u8 opposingBank;
|
||||
u8 opposingBattler;
|
||||
u8 moveFlags;
|
||||
s32 i, j;
|
||||
s32 firstId;
|
||||
@@ -46,22 +48,22 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
if (gBattleMons[GetBattlerAtPosition(opposingPosition)].ability != ABILITY_WONDER_GUARD)
|
||||
return FALSE;
|
||||
|
||||
// check if pokemon has a super effective move
|
||||
for (opposingBank = GetBattlerAtPosition(opposingPosition), i = 0; i < 4; i++)
|
||||
// Check if Pokemon has a super effective move.
|
||||
for (opposingBattler = GetBattlerAtPosition(opposingPosition), i = 0; i < 4; i++)
|
||||
{
|
||||
move = gBattleMons[gActiveBattler].moves[i];
|
||||
if (move == MOVE_NONE)
|
||||
continue;
|
||||
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// get party information
|
||||
// Get party information.
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
{
|
||||
if ((gActiveBattler & BIT_FLANK) == 0)
|
||||
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
|
||||
firstId = 0, lastId = 3;
|
||||
else
|
||||
firstId = 3, lastId = 6;
|
||||
@@ -76,7 +78,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
else
|
||||
party = gEnemyParty;
|
||||
|
||||
// find a pokemon in the party that has a super effective move
|
||||
// Find a Pokemon in the party that has a super effective move.
|
||||
for (i = firstId; i < lastId; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) == 0)
|
||||
@@ -88,19 +90,19 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
if (i == gBattlerPartyIndexes[gActiveBattler])
|
||||
continue;
|
||||
|
||||
GetMonData(&party[i], MON_DATA_SPECIES); // unused return value
|
||||
GetMonData(&party[i], MON_DATA_ALT_ABILITY); // unused return value
|
||||
GetMonData(&party[i], MON_DATA_SPECIES); // Unused return value.
|
||||
GetMonData(&party[i], MON_DATA_ALT_ABILITY); // Unused return value.
|
||||
|
||||
for (opposingBank = GetBattlerAtPosition(opposingPosition), j = 0; j < 4; j++)
|
||||
for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < 4; j++)
|
||||
{
|
||||
move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
|
||||
if (move == MOVE_NONE)
|
||||
continue;
|
||||
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % 3 < 2)
|
||||
{
|
||||
// we found a mon
|
||||
// We found a mon.
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
@@ -108,12 +110,12 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard
|
||||
return FALSE; // There is not a single Pokemon in the party that has a super effective move against a mon with Wonder Guard.
|
||||
}
|
||||
|
||||
static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
{
|
||||
u8 bankIn1, bankIn2;
|
||||
u8 battlerIn1, battlerIn2;
|
||||
u8 absorbingTypeAbility;
|
||||
s32 firstId;
|
||||
s32 lastId; // + 1
|
||||
@@ -131,16 +133,16 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
bankIn1 = gActiveBattler;
|
||||
battlerIn1 = gActiveBattler;
|
||||
if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
|
||||
bankIn2 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
else
|
||||
bankIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
|
||||
battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
|
||||
}
|
||||
else
|
||||
{
|
||||
bankIn1 = gActiveBattler;
|
||||
bankIn2 = gActiveBattler;
|
||||
battlerIn1 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
}
|
||||
|
||||
if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
|
||||
@@ -157,7 +159,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
{
|
||||
if ((gActiveBattler & BIT_FLANK) == 0)
|
||||
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
|
||||
firstId = 0, lastId = 3;
|
||||
else
|
||||
firstId = 3, lastId = 6;
|
||||
@@ -183,13 +185,13 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
continue;
|
||||
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn1])
|
||||
if (i == gBattlerPartyIndexes[battlerIn1])
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn2])
|
||||
if (i == gBattlerPartyIndexes[battlerIn2])
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1))
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
continue;
|
||||
|
||||
species = GetMonData(&party[i], MON_DATA_SPECIES);
|
||||
@@ -200,7 +202,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
|
||||
if (absorbingTypeAbility == monAbility && Random() & 1)
|
||||
{
|
||||
// we found a mon
|
||||
// we found a mon.
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
@@ -221,13 +223,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
||||
|
||||
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -236,9 +238,10 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
||||
return TRUE;
|
||||
if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1))
|
||||
return TRUE;
|
||||
|
||||
if (Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -249,15 +252,15 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
||||
static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
|
||||
{
|
||||
u8 opposingPosition;
|
||||
u8 opposingBank;
|
||||
u8 opposingBattler;
|
||||
s32 i;
|
||||
u8 moveFlags;
|
||||
u16 move;
|
||||
|
||||
opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler));
|
||||
opposingBank = GetBattlerAtPosition(opposingPosition);
|
||||
opposingBattler = GetBattlerAtPosition(opposingPosition);
|
||||
|
||||
if (!(gAbsentBattlerFlags & gBitTable[opposingBank]))
|
||||
if (!(gAbsentBattlerFlags & gBitTable[opposingBattler]))
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
@@ -265,7 +268,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
|
||||
if (move == MOVE_NONE)
|
||||
continue;
|
||||
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
|
||||
{
|
||||
if (noRng)
|
||||
@@ -278,9 +281,9 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
return FALSE;
|
||||
|
||||
opposingBank = GetBattlerAtPosition(BATTLE_PARTNER(opposingPosition));
|
||||
opposingBattler = GetBattlerAtPosition(BATTLE_PARTNER(opposingPosition));
|
||||
|
||||
if (!(gAbsentBattlerFlags & gBitTable[opposingBank]))
|
||||
if (!(gAbsentBattlerFlags & gBitTable[opposingBattler]))
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
@@ -288,7 +291,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
|
||||
if (move == MOVE_NONE)
|
||||
continue;
|
||||
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBattler].species, gBattleMons[opposingBattler].ability);
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
|
||||
{
|
||||
if (noRng)
|
||||
@@ -318,7 +321,7 @@ static bool8 AreStatsRaised(void)
|
||||
|
||||
static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
{
|
||||
u8 bankIn1, bankIn2;
|
||||
u8 battlerIn1, battlerIn2;
|
||||
s32 firstId;
|
||||
s32 lastId; // + 1
|
||||
struct Pokemon *party;
|
||||
@@ -337,16 +340,16 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
bankIn1 = gActiveBattler;
|
||||
battlerIn1 = gActiveBattler;
|
||||
if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
|
||||
bankIn2 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
else
|
||||
bankIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
|
||||
battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
|
||||
}
|
||||
else
|
||||
{
|
||||
bankIn1 = gActiveBattler;
|
||||
bankIn2 = gActiveBattler;
|
||||
battlerIn1 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
@@ -377,13 +380,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
continue;
|
||||
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn1])
|
||||
if (i == gBattlerPartyIndexes[battlerIn1])
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn2])
|
||||
if (i == gBattlerPartyIndexes[battlerIn2])
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1))
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
continue;
|
||||
|
||||
species = GetMonData(&party[i], MON_DATA_SPECIES);
|
||||
@@ -395,7 +398,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBattler], species, monAbility);
|
||||
if (moveFlags & flags)
|
||||
{
|
||||
bankIn1 = gLastHitBy[gActiveBattler];
|
||||
battlerIn1 = gLastHitBy[gActiveBattler];
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
@@ -403,7 +406,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
if (move == 0)
|
||||
continue;
|
||||
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability);
|
||||
moveFlags = AI_TypeCalc(move, gBattleMons[battlerIn1].species, gBattleMons[battlerIn1].ability);
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
@@ -419,23 +422,23 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
|
||||
static bool8 ShouldSwitch(void)
|
||||
{
|
||||
u8 bankIn1, bankIn2;
|
||||
u8 *activeBankPtr; // needed to match
|
||||
u8 battlerIn1, battlerIn2;
|
||||
u8 *activeBattlerPtr; // Needed to match.
|
||||
s32 firstId;
|
||||
s32 lastId; // + 1
|
||||
struct Pokemon *party;
|
||||
s32 i;
|
||||
s32 availableToSwitch;
|
||||
|
||||
if (gBattleMons[*(activeBankPtr = &gActiveBattler)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
|
||||
if (gBattleMons[*(activeBattlerPtr = &gActiveBattler)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
|
||||
return FALSE;
|
||||
if (gStatuses3[gActiveBattler] & STATUS3_ROOTED)
|
||||
return FALSE;
|
||||
if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0))
|
||||
if (ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|
||||
return FALSE;
|
||||
if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0))
|
||||
return FALSE; // misses the flying or levitate check
|
||||
if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0))
|
||||
if (ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP)) // Misses the flying type and Levitate check.
|
||||
return FALSE;
|
||||
if (ABILITY_ON_FIELD2(ABILITY_MAGNET_PULL))
|
||||
{
|
||||
if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL)
|
||||
return FALSE;
|
||||
@@ -448,21 +451,21 @@ static bool8 ShouldSwitch(void)
|
||||
availableToSwitch = 0;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
bankIn1 = *activeBankPtr;
|
||||
if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(*activeBankPtr) ^ BIT_FLANK)])
|
||||
bankIn2 = *activeBankPtr;
|
||||
battlerIn1 = *activeBattlerPtr;
|
||||
if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(*activeBattlerPtr) ^ BIT_FLANK)])
|
||||
battlerIn2 = *activeBattlerPtr;
|
||||
else
|
||||
bankIn2 = GetBattlerAtPosition(GetBattlerPosition(*activeBankPtr) ^ BIT_FLANK);
|
||||
battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(*activeBattlerPtr) ^ BIT_FLANK);
|
||||
}
|
||||
else
|
||||
{
|
||||
bankIn1 = *activeBankPtr;
|
||||
bankIn2 = *activeBankPtr;
|
||||
battlerIn1 = *activeBattlerPtr;
|
||||
battlerIn2 = *activeBattlerPtr;
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
{
|
||||
if ((gActiveBattler & BIT_FLANK) == 0)
|
||||
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
|
||||
firstId = 0, lastId = 3;
|
||||
else
|
||||
firstId = 3, lastId = 6;
|
||||
@@ -485,13 +488,13 @@ static bool8 ShouldSwitch(void)
|
||||
continue;
|
||||
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn1])
|
||||
if (i == gBattlerPartyIndexes[battlerIn1])
|
||||
continue;
|
||||
if (i == gBattlerPartyIndexes[bankIn2])
|
||||
if (i == gBattlerPartyIndexes[battlerIn2])
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1))
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
continue;
|
||||
|
||||
availableToSwitch++;
|
||||
@@ -521,10 +524,10 @@ static bool8 ShouldSwitch(void)
|
||||
void AI_TrySwitchOrUseItem(void)
|
||||
{
|
||||
struct Pokemon *party;
|
||||
u8 bankIn1, bankIn2;
|
||||
u8 battlerIn1, battlerIn2;
|
||||
s32 firstId;
|
||||
s32 lastId; // + 1
|
||||
u8 bankIdentity = GetBattlerPosition(gActiveBattler);
|
||||
u8 battlerIdentity = GetBattlerPosition(gActiveBattler);
|
||||
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
party = gPlayerParty;
|
||||
@@ -535,25 +538,25 @@ void AI_TrySwitchOrUseItem(void)
|
||||
{
|
||||
if (ShouldSwitch())
|
||||
{
|
||||
if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6)
|
||||
if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE)
|
||||
{
|
||||
s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
|
||||
if (monToSwitchId == 6)
|
||||
if (monToSwitchId == PARTY_SIZE)
|
||||
{
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
{
|
||||
bankIn1 = GetBattlerAtPosition(bankIdentity);
|
||||
bankIn2 = bankIn1;
|
||||
battlerIn1 = GetBattlerAtPosition(battlerIdentity);
|
||||
battlerIn2 = battlerIn1;
|
||||
}
|
||||
else
|
||||
{
|
||||
bankIn1 = GetBattlerAtPosition(bankIdentity);
|
||||
bankIn2 = GetBattlerAtPosition(bankIdentity ^ BIT_FLANK);
|
||||
battlerIn1 = GetBattlerAtPosition(battlerIdentity);
|
||||
battlerIn2 = GetBattlerAtPosition(battlerIdentity ^ BIT_FLANK);
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
{
|
||||
if ((gActiveBattler & BIT_FLANK) == 0)
|
||||
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
|
||||
firstId = 0, lastId = 3;
|
||||
else
|
||||
firstId = 3, lastId = 6;
|
||||
@@ -567,13 +570,13 @@ void AI_TrySwitchOrUseItem(void)
|
||||
{
|
||||
if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0)
|
||||
continue;
|
||||
if (monToSwitchId == gBattlerPartyIndexes[bankIn1])
|
||||
if (monToSwitchId == gBattlerPartyIndexes[battlerIn1])
|
||||
continue;
|
||||
if (monToSwitchId == gBattlerPartyIndexes[bankIn2])
|
||||
if (monToSwitchId == gBattlerPartyIndexes[battlerIn2])
|
||||
continue;
|
||||
if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + bankIn1))
|
||||
if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn1))
|
||||
continue;
|
||||
if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
continue;
|
||||
|
||||
break;
|
||||
@@ -608,10 +611,10 @@ static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8
|
||||
}
|
||||
else if (TYPE_EFFECT_ATK_TYPE(i) == atkType)
|
||||
{
|
||||
// check type1
|
||||
// Check type1.
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
|
||||
*var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
// check type2
|
||||
// Check type2.
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
|
||||
*var = (*var * TYPE_EFFECT_MULTIPLIER(i)) / 10;
|
||||
}
|
||||
@@ -621,10 +624,10 @@ static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8
|
||||
|
||||
u8 GetMostSuitableMonToSwitchInto(void)
|
||||
{
|
||||
u8 opposingBank;
|
||||
u8 bestDmg; // note : should be changed to u32 for obvious reasons
|
||||
u8 opposingBattler;
|
||||
u8 bestDmg; // Note : should be changed to u32 for obvious reasons.
|
||||
u8 bestMonId;
|
||||
u8 bankIn1, bankIn2;
|
||||
u8 battlerIn1, battlerIn2;
|
||||
s32 firstId;
|
||||
s32 lastId; // + 1
|
||||
struct Pokemon *party;
|
||||
@@ -632,34 +635,34 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
u8 invalidMons;
|
||||
u16 move;
|
||||
|
||||
if (*(gBattleStruct->monToSwitchIntoId + gActiveBattler) != 6)
|
||||
if (*(gBattleStruct->monToSwitchIntoId + gActiveBattler) != PARTY_SIZE)
|
||||
return *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
return gBattlerPartyIndexes[gActiveBattler] + 1;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
bankIn1 = gActiveBattler;
|
||||
battlerIn1 = gActiveBattler;
|
||||
if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)])
|
||||
bankIn2 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
else
|
||||
bankIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
|
||||
battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
|
||||
|
||||
// UB: It considers the opponent only player's side even though it can battle alongside player;
|
||||
opposingBank = Random() & BIT_FLANK;
|
||||
if (gAbsentBattlerFlags & gBitTable[opposingBank])
|
||||
opposingBank ^= BIT_FLANK;
|
||||
// UB: It considers the opponent only player's side even though it can battle alongside player.
|
||||
opposingBattler = Random() & BIT_FLANK;
|
||||
if (gAbsentBattlerFlags & gBitTable[opposingBattler])
|
||||
opposingBattler ^= BIT_FLANK;
|
||||
}
|
||||
else
|
||||
{
|
||||
opposingBank = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_SIDE);
|
||||
bankIn1 = gActiveBattler;
|
||||
bankIn2 = gActiveBattler;
|
||||
opposingBattler = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_SIDE);
|
||||
battlerIn1 = gActiveBattler;
|
||||
battlerIn2 = gActiveBattler;
|
||||
}
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
|
||||
{
|
||||
if ((gActiveBattler & BIT_FLANK) == 0)
|
||||
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
|
||||
firstId = 0, lastId = 3;
|
||||
else
|
||||
firstId = 3, lastId = 6;
|
||||
@@ -676,27 +679,27 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
|
||||
invalidMons = 0;
|
||||
|
||||
while (invalidMons != 0x3F) // all mons are invalid
|
||||
while (invalidMons != 0x3F) // All mons are invalid.
|
||||
{
|
||||
bestDmg = 0;
|
||||
bestMonId = 6;
|
||||
// find the mon which type is the most suitable offensively
|
||||
// Find the mon whose type is the most suitable offensively.
|
||||
for (i = firstId; i < lastId; i++)
|
||||
{
|
||||
u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
|
||||
if (species != SPECIES_NONE
|
||||
&& GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& !(gBitTable[i] & invalidMons)
|
||||
&& gBattlerPartyIndexes[bankIn1] != i
|
||||
&& gBattlerPartyIndexes[bankIn2] != i
|
||||
&& i != *(gBattleStruct->monToSwitchIntoId + bankIn1)
|
||||
&& i != *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
&& gBattlerPartyIndexes[battlerIn1] != i
|
||||
&& gBattlerPartyIndexes[battlerIn2] != i
|
||||
&& i != *(gBattleStruct->monToSwitchIntoId + battlerIn1)
|
||||
&& i != *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
{
|
||||
u8 type1 = gBaseStats[species].type1;
|
||||
u8 type2 = gBaseStats[species].type2;
|
||||
u8 typeDmg = 10;
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBank].type1, type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBank].type2, type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type1, type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type2, type1, type2, &typeDmg);
|
||||
if (bestDmg < typeDmg)
|
||||
{
|
||||
bestDmg = typeDmg;
|
||||
@@ -709,24 +712,24 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
}
|
||||
}
|
||||
|
||||
// ok, we know the mon has the right typing but does it have at least one super effective move?
|
||||
if (bestMonId != 6)
|
||||
// Ok, we know the mon has the right typing but does it have at least one super effective move?
|
||||
if (bestMonId != PARTY_SIZE)
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
move = GetMonData(&party[bestMonId], MON_DATA_MOVE1 + i);
|
||||
if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBank) & MOVE_RESULT_SUPER_EFFECTIVE)
|
||||
if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBattler) & MOVE_RESULT_SUPER_EFFECTIVE)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i != 4)
|
||||
return bestMonId; // has both the typing and at least one super effective move
|
||||
return bestMonId; // Has both the typing and at least one super effective move.
|
||||
|
||||
invalidMons |= gBitTable[bestMonId]; // sorry buddy, we want something better
|
||||
invalidMons |= gBitTable[bestMonId]; // Sorry buddy, we want something better.
|
||||
}
|
||||
else
|
||||
{
|
||||
invalidMons = 0x3F; // no viable mon to switch
|
||||
invalidMons = 0x3F; // No viable mon to switch.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -738,20 +741,20 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
bestDmg = 0;
|
||||
bestMonId = 6;
|
||||
|
||||
// if we couldn't find the best mon in terms of typing, find the one that deals most damage
|
||||
// If we couldn't find the best mon in terms of typing, find the one that deals most damage.
|
||||
for (i = firstId; i < lastId; i++)
|
||||
{
|
||||
if ((u16)(GetMonData(&party[i], MON_DATA_SPECIES)) == SPECIES_NONE)
|
||||
continue;
|
||||
if (GetMonData(&party[i], MON_DATA_HP) == 0)
|
||||
continue;
|
||||
if (gBattlerPartyIndexes[bankIn1] == i)
|
||||
if (gBattlerPartyIndexes[battlerIn1] == i)
|
||||
continue;
|
||||
if (gBattlerPartyIndexes[bankIn2] == i)
|
||||
if (gBattlerPartyIndexes[battlerIn2] == i)
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1))
|
||||
continue;
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn2))
|
||||
if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))
|
||||
continue;
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
@@ -760,8 +763,8 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
gBattleMoveDamage = 0;
|
||||
if (move != MOVE_NONE && gBattleMoves[move].power != 1)
|
||||
{
|
||||
AI_CalcDmg(gActiveBattler, opposingBank);
|
||||
TypeCalc(move, gActiveBattler, opposingBank);
|
||||
AI_CalcDmg(gActiveBattler, opposingBattler);
|
||||
TypeCalc(move, gActiveBattler, opposingBattler);
|
||||
}
|
||||
if (bestDmg < gBattleMoveDamage)
|
||||
{
|
||||
@@ -774,21 +777,21 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
return bestMonId;
|
||||
}
|
||||
|
||||
// TODO: use PokemonItemEffect struct instead of u8 once it's documented
|
||||
// TODO: use PokemonItemEffect struct instead of u8 once it's documented.
|
||||
static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument
|
||||
{
|
||||
if (itemId == ITEM_FULL_RESTORE)
|
||||
return AI_ITEM_FULL_RESTORE;
|
||||
if (itemEffect[4] & 4)
|
||||
else if (itemEffect[4] & 4)
|
||||
return AI_ITEM_HEAL_HP;
|
||||
if (itemEffect[3] & 0x3F)
|
||||
else if (itemEffect[3] & 0x3F)
|
||||
return AI_ITEM_CURE_CONDITION;
|
||||
if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
|
||||
else if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
|
||||
return AI_ITEM_X_STAT;
|
||||
if (itemEffect[3] & 0x80)
|
||||
else if (itemEffect[3] & 0x80)
|
||||
return AI_ITEM_GUARD_SPECS;
|
||||
|
||||
return AI_ITEM_NOT_RECOGNIZABLE;
|
||||
else
|
||||
return AI_ITEM_NOT_RECOGNIZABLE;
|
||||
}
|
||||
|
||||
static bool8 ShouldUseItem(void)
|
||||
@@ -806,7 +809,7 @@ static bool8 ShouldUseItem(void)
|
||||
else
|
||||
party = gEnemyParty;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
|
||||
@@ -821,7 +824,7 @@ static bool8 ShouldUseItem(void)
|
||||
u16 item;
|
||||
const u8 *itemEffects;
|
||||
u8 paramOffset;
|
||||
u8 bankSide;
|
||||
u8 battlerSide;
|
||||
|
||||
if (i != 0 && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1)
|
||||
continue;
|
||||
@@ -908,8 +911,8 @@ static bool8 ShouldUseItem(void)
|
||||
shouldUse = TRUE;
|
||||
break;
|
||||
case AI_ITEM_GUARD_SPECS:
|
||||
bankSide = GetBattlerSide(gActiveBattler);
|
||||
if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0)
|
||||
battlerSide = GetBattlerSide(gActiveBattler);
|
||||
if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0)
|
||||
shouldUse = TRUE;
|
||||
break;
|
||||
case AI_ITEM_NOT_RECOGNIZABLE:
|
||||
|
||||
+59
-58
@@ -120,7 +120,7 @@ EWRAM_DATA static u16 sSoundAnimFramesToWait = 0;
|
||||
EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0};
|
||||
EWRAM_DATA u8 gAnimMoveTurn = 0;
|
||||
EWRAM_DATA static u8 sAnimBackgroundFadeState = 0;
|
||||
EWRAM_DATA static u16 sAnimMoveIndex = 0; // set but unused.
|
||||
EWRAM_DATA static u16 sAnimMoveIndex = 0; // Set but unused.
|
||||
EWRAM_DATA u8 gBattleAnimAttacker = 0;
|
||||
EWRAM_DATA u8 gBattleAnimTarget = 0;
|
||||
EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
|
||||
@@ -179,6 +179,7 @@ static void (* const sScriptCmdTable[])(void) =
|
||||
ScriptCmd_stopsound
|
||||
};
|
||||
|
||||
// code
|
||||
void ClearBattleAnimationVars(void)
|
||||
{
|
||||
s32 i;
|
||||
@@ -192,11 +193,11 @@ void ClearBattleAnimationVars(void)
|
||||
gAnimMovePower = 0;
|
||||
gAnimFriendship = 0;
|
||||
|
||||
// clear index array.
|
||||
// Clear index array.
|
||||
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
|
||||
sAnimSpriteIndexArray[i] |= 0xFFFF;
|
||||
|
||||
// clear anim args.
|
||||
// Clear anim args.
|
||||
for (i = 0; i < ANIM_ARGS_COUNT; i++)
|
||||
gBattleAnimArgs[i] = 0;
|
||||
|
||||
@@ -459,7 +460,7 @@ static void ScriptCmd_delay(void)
|
||||
gAnimScriptCallback = WaitAnimFrameCount;
|
||||
}
|
||||
|
||||
// wait for visual tasks to finish.
|
||||
// Wait for visual tasks to finish.
|
||||
static void ScriptCmd_waitforvisualfinish(void)
|
||||
{
|
||||
if (gAnimVisualTaskCount == 0)
|
||||
@@ -486,7 +487,7 @@ static void ScriptCmd_end(void)
|
||||
s32 i;
|
||||
bool32 continuousAnim = FALSE;
|
||||
|
||||
// keep waiting as long as there is animations to be done.
|
||||
// Keep waiting as long as there are animations to be done.
|
||||
if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0
|
||||
|| sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF)
|
||||
{
|
||||
@@ -495,10 +496,10 @@ static void ScriptCmd_end(void)
|
||||
return;
|
||||
}
|
||||
|
||||
// finish the sound effects.
|
||||
// Finish the sound effects.
|
||||
if (IsSEPlaying())
|
||||
{
|
||||
if (++sSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect.
|
||||
if (++sSoundAnimFramesToWait <= 90) // Wait 90 frames, then halt the sound effect.
|
||||
{
|
||||
gAnimFramesToWait = 1;
|
||||
return;
|
||||
@@ -510,7 +511,7 @@ static void ScriptCmd_end(void)
|
||||
}
|
||||
}
|
||||
|
||||
// the SE has halted, so set the SE Frame Counter to 0 and continue.
|
||||
// The SE has halted, so set the SE Frame Counter to 0 and continue.
|
||||
sSoundAnimFramesToWait = 0;
|
||||
|
||||
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
|
||||
@@ -523,7 +524,7 @@ static void ScriptCmd_end(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (!continuousAnim) // may have been used for debug?
|
||||
if (!continuousAnim) // May have been used for debug?
|
||||
{
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 256);
|
||||
if (!IsContest())
|
||||
@@ -592,12 +593,12 @@ static void ScriptCmd_monbg(void)
|
||||
bool8 toBG_2;
|
||||
u8 taskId;
|
||||
u8 battlerId;
|
||||
u8 animBank;
|
||||
u8 animBattler;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
|
||||
animBank = sBattleAnimScriptPtr[0];
|
||||
if (animBank & ANIM_TARGET)
|
||||
animBattler = sBattleAnimScriptPtr[0];
|
||||
if (animBattler & ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
@@ -655,7 +656,7 @@ bool8 IsBattlerSpriteVisible(u8 battlerId)
|
||||
if (!IsBattlerSpritePresent(battlerId))
|
||||
return FALSE;
|
||||
if (IsContest())
|
||||
return TRUE; // this line wont ever be reached.
|
||||
return TRUE; // This line won't ever be reached.
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].invisible || !gSprites[gBattlerSpriteIds[battlerId]].invisible)
|
||||
return TRUE;
|
||||
|
||||
@@ -847,32 +848,32 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
|
||||
|
||||
static void ScriptCmd_clearmonbg(void)
|
||||
{
|
||||
u8 animBankId;
|
||||
u8 animBattlerId;
|
||||
u8 battlerId;
|
||||
u8 taskId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
animBankId = sBattleAnimScriptPtr[0];
|
||||
animBattlerId = sBattleAnimScriptPtr[0];
|
||||
|
||||
if (animBankId == ANIM_ATTACKER)
|
||||
animBankId = ANIM_ATK_PARTNER;
|
||||
else if (animBankId == ANIM_TARGET)
|
||||
animBankId = ANIM_DEF_PARTNER;
|
||||
if (animBattlerId == ANIM_ATTACKER)
|
||||
animBattlerId = ANIM_ATK_PARTNER;
|
||||
else if (animBattlerId == ANIM_TARGET)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
|
||||
if (sMonAnimTaskIdArray[0] != 0xFF)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = 0;
|
||||
if (animBankId > 1 && sMonAnimTaskIdArray[1] != 0xFF)
|
||||
if (animBattlerId > 1 && sMonAnimTaskIdArray[1] != 0xFF)
|
||||
gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = 0;
|
||||
else
|
||||
animBankId = 0;
|
||||
animBattlerId = 0;
|
||||
|
||||
taskId = CreateTask(sub_80A4980, 5);
|
||||
gTasks[taskId].data[0] = animBankId;
|
||||
gTasks[taskId].data[0] = animBattlerId;
|
||||
gTasks[taskId].data[2] = battlerId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@@ -910,18 +911,18 @@ static void ScriptCmd_monbg_22(void)
|
||||
{
|
||||
bool8 toBG_2;
|
||||
u8 battlerId;
|
||||
u8 animBankId;
|
||||
u8 animBattlerId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
|
||||
animBankId = sBattleAnimScriptPtr[0];
|
||||
animBattlerId = sBattleAnimScriptPtr[0];
|
||||
|
||||
if (animBankId == ANIM_ATTACKER)
|
||||
animBankId = ANIM_ATK_PARTNER;
|
||||
else if (animBankId == ANIM_TARGET)
|
||||
animBankId = ANIM_DEF_PARTNER;
|
||||
if (animBattlerId == ANIM_ATTACKER)
|
||||
animBattlerId = ANIM_ATK_PARTNER;
|
||||
else if (animBattlerId == ANIM_TARGET)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
@@ -938,7 +939,7 @@ static void ScriptCmd_monbg_22(void)
|
||||
}
|
||||
|
||||
battlerId ^= BIT_FLANK;
|
||||
if (animBankId > 1 && IsBattlerSpriteVisible(battlerId))
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId))
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
@@ -954,32 +955,32 @@ static void ScriptCmd_monbg_22(void)
|
||||
|
||||
static void ScriptCmd_clearmonbg_23(void)
|
||||
{
|
||||
u8 animBankId;
|
||||
u8 animBattlerId;
|
||||
u8 battlerId;
|
||||
u8 taskId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
animBankId = sBattleAnimScriptPtr[0];
|
||||
animBattlerId = sBattleAnimScriptPtr[0];
|
||||
|
||||
if (animBankId == ANIM_ATTACKER)
|
||||
animBankId = ANIM_ATK_PARTNER;
|
||||
else if (animBankId == ANIM_TARGET)
|
||||
animBankId = ANIM_DEF_PARTNER;
|
||||
if (animBattlerId == ANIM_ATTACKER)
|
||||
animBattlerId = ANIM_ATK_PARTNER;
|
||||
else if (animBattlerId == ANIM_TARGET)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = 0;
|
||||
if (animBankId > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK))
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK))
|
||||
gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = 0;
|
||||
else
|
||||
animBankId = 0;
|
||||
animBattlerId = 0;
|
||||
|
||||
taskId = CreateTask(sub_80A4BB0, 5);
|
||||
gTasks[taskId].data[0] = animBankId;
|
||||
gTasks[taskId].data[0] = animBattlerId;
|
||||
gTasks[taskId].data[2] = battlerId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@@ -1419,18 +1420,18 @@ void Task_PanFromInitialToTarget(u8 taskId)
|
||||
pan = currentPan + incrementPan;
|
||||
gTasks[taskId].tCurrentPan = pan;
|
||||
|
||||
if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately
|
||||
if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately.
|
||||
{
|
||||
destroyTask = TRUE;
|
||||
}
|
||||
else if (initialPanning < targetPanning) // Panning increasing
|
||||
else if (initialPanning < targetPanning) // Panning increasing.
|
||||
{
|
||||
if (pan >= targetPanning) // Target reached
|
||||
if (pan >= targetPanning) // Target reached.
|
||||
destroyTask = TRUE;
|
||||
}
|
||||
else // Panning decreasing
|
||||
else // Panning decreasing.
|
||||
{
|
||||
if (pan <= targetPanning) // Target reached
|
||||
if (pan <= targetPanning) // Target reached.
|
||||
destroyTask = TRUE;
|
||||
}
|
||||
|
||||
@@ -1684,14 +1685,14 @@ static void ScriptCmd_jumpifcontest(void)
|
||||
|
||||
static void ScriptCmd_monbgprio_28(void)
|
||||
{
|
||||
u8 wantedBank;
|
||||
u8 wantedBattler;
|
||||
u8 battlerId;
|
||||
u8 battlerPosition;
|
||||
|
||||
wantedBank = sBattleAnimScriptPtr[1];
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
|
||||
if (wantedBank != ANIM_ATTACKER)
|
||||
if (wantedBattler != ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
@@ -1716,15 +1717,15 @@ static void ScriptCmd_monbgprio_29(void)
|
||||
|
||||
static void ScriptCmd_monbgprio_2A(void)
|
||||
{
|
||||
u8 wantedBank;
|
||||
u8 wantedBattler;
|
||||
u8 battlerPosition;
|
||||
u8 battlerId;
|
||||
|
||||
wantedBank = sBattleAnimScriptPtr[1];
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
if (wantedBank != ANIM_ATTACKER)
|
||||
if (wantedBattler != ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
@@ -1762,16 +1763,16 @@ static void ScriptCmd_visible(void)
|
||||
|
||||
static void ScriptCmd_doublebattle_2D(void)
|
||||
{
|
||||
u8 wantedBank;
|
||||
u8 wantedBattler;
|
||||
u8 r4;
|
||||
u8 spriteId;
|
||||
|
||||
wantedBank = sBattleAnimScriptPtr[1];
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
if (!IsContest() && IsDoubleBattle()
|
||||
&& GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
if (wantedBank == ANIM_ATTACKER)
|
||||
if (wantedBattler == ANIM_ATTACKER)
|
||||
{
|
||||
r4 = sub_80A8364(gBattleAnimAttacker);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
@@ -1797,16 +1798,16 @@ static void ScriptCmd_doublebattle_2D(void)
|
||||
|
||||
static void ScriptCmd_doublebattle_2E(void)
|
||||
{
|
||||
u8 wantedBank;
|
||||
u8 wantedBattler;
|
||||
u8 r4;
|
||||
u8 spriteId;
|
||||
|
||||
wantedBank = sBattleAnimScriptPtr[1];
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
if (!IsContest() && IsDoubleBattle()
|
||||
&& GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
if (wantedBank == ANIM_ATTACKER)
|
||||
if (wantedBattler == ANIM_ATTACKER)
|
||||
{
|
||||
r4 = sub_80A8364(gBattleAnimAttacker);
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
|
||||
@@ -133,13 +133,13 @@ void sub_8158D8C(u8 taskId)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
species = gContestResources->field_18->field_0;
|
||||
else
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 battlerId;
|
||||
|
||||
// get wanted battler
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
@@ -149,7 +149,7 @@ void sub_8158D8C(u8 taskId)
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
|
||||
// check if battler is visible
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
@@ -179,13 +179,13 @@ void sub_8158E9C(u8 taskId)
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
species = gContestResources->field_18->field_0;
|
||||
else
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task
|
||||
DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 battlerId;
|
||||
|
||||
// get wanted battler
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
@@ -195,7 +195,7 @@ void sub_8158E9C(u8 taskId)
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
|
||||
// check if battler is visible
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
|
||||
+52
-51
@@ -18,6 +18,7 @@
|
||||
#include "text_window.h"
|
||||
#include "menu.h"
|
||||
#include "battle_setup.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
struct BattleBackground
|
||||
{
|
||||
@@ -31,8 +32,8 @@ struct BattleBackground
|
||||
extern const struct SpriteTemplate gUnknown_0831A9D0;
|
||||
extern const struct SpriteTemplate gUnknown_0831A9E8;
|
||||
extern const struct CompressedSpriteSheet gUnknown_0831AA00;
|
||||
extern const struct BgTemplate gUnknown_0831AA08[4];
|
||||
extern const struct WindowTemplate *gUnknown_0831ABA0[];
|
||||
extern const struct BgTemplate gBattleBgTemplates[4];
|
||||
extern const struct WindowTemplate *const gBattleWindowTemplates[];
|
||||
extern const struct BattleBackground gBattleTerrainTable[];
|
||||
|
||||
extern u16 gBattle_BG1_X;
|
||||
@@ -42,23 +43,23 @@ extern u16 gBattle_BG2_Y;
|
||||
|
||||
extern u8 GetCurrentMapBattleScene(void);
|
||||
|
||||
void sub_8035658(void)
|
||||
void BattleInitBgsAndWindows(void)
|
||||
{
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_0831AA08, ARRAY_COUNT(gUnknown_0831AA08));
|
||||
InitBgsFromTemplates(0, gBattleBgTemplates, ARRAY_COUNT(gBattleBgTemplates));
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
{
|
||||
gBattleScripting.field_24 = 1;
|
||||
gBattleScripting.windowsType = 1;
|
||||
SetBgTilemapBuffer(1, gUnknown_02023060);
|
||||
SetBgTilemapBuffer(2, gUnknown_02023060);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleScripting.field_24 = 0;
|
||||
gBattleScripting.windowsType = 0;
|
||||
}
|
||||
|
||||
InitWindows(gUnknown_0831ABA0[gBattleScripting.field_24]);
|
||||
InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]);
|
||||
DeactivateAllTextPrinters();
|
||||
}
|
||||
|
||||
@@ -66,23 +67,23 @@ void sub_80356D0(void)
|
||||
{
|
||||
DisableInterrupts(INTR_FLAG_HBLANK);
|
||||
EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
|
||||
sub_8035658();
|
||||
BattleInitBgsAndWindows();
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON | DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||
}
|
||||
|
||||
void ApplyPlayerChosenFrameToBattleMenu(void)
|
||||
void LoadBattleMenuWindowGfx(void)
|
||||
{
|
||||
sub_809882C(2, 0x12, 0x10);
|
||||
sub_809882C(2, 0x22, 0x10);
|
||||
LoadUserWindowBorderGfx(2, 0x12, 0x10);
|
||||
LoadUserWindowBorderGfx(2, 0x22, 0x10);
|
||||
LoadCompressedPalette(gUnknown_08D85600, 0x50, 0x20);
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
{
|
||||
sub_81978B0(0x70);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0x30, 0x70);
|
||||
LoadMessageBoxGfx(0, 0x30, 0x70);
|
||||
gPlttBufferUnfaded[0x76] = 0;
|
||||
CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2);
|
||||
}
|
||||
@@ -193,12 +194,12 @@ void LoadBattleTextboxAndBackground(void)
|
||||
CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
|
||||
ApplyPlayerChosenFrameToBattleMenu();
|
||||
LoadBattleMenuWindowGfx();
|
||||
|
||||
DrawMainBattleBackground();
|
||||
}
|
||||
|
||||
static void sub_8035AE4(u8 taskId, u8 bank, u8 bgId, u8 destX, u8 destY)
|
||||
static void sub_8035AE4(u8 taskId, u8 battlerId, u8 bgId, u8 destX, u8 destY)
|
||||
{
|
||||
s32 i;
|
||||
u16 var = 0;
|
||||
@@ -208,7 +209,7 @@ static void sub_8035AE4(u8 taskId, u8 bank, u8 bgId, u8 destX, u8 destY)
|
||||
{
|
||||
if (gTasks[taskId].data[5] != 0)
|
||||
{
|
||||
switch (bank)
|
||||
switch (battlerId)
|
||||
{
|
||||
case 0:
|
||||
var = 0x3F & gTasks[taskId].data[3];
|
||||
@@ -226,7 +227,7 @@ static void sub_8035AE4(u8 taskId, u8 bank, u8 bgId, u8 destX, u8 destY)
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (bank)
|
||||
switch (battlerId)
|
||||
{
|
||||
case 0:
|
||||
var = 0x3F & gTasks[taskId].data[3];
|
||||
@@ -253,7 +254,7 @@ static void sub_8035AE4(u8 taskId, u8 bank, u8 bgId, u8 destX, u8 destY)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bank == gBattleScripting.multiplayerId)
|
||||
if (battlerId == gBattleScripting.multiplayerId)
|
||||
var = gTasks[taskId].data[3];
|
||||
else
|
||||
var = gTasks[taskId].data[4];
|
||||
@@ -272,7 +273,7 @@ static void sub_8035C4C(void)
|
||||
{
|
||||
if (gBattleOutcome == B_OUTCOME_DREW)
|
||||
{
|
||||
BattleHandleAddTextPrinter(gText_Draw, 0x15);
|
||||
BattlePutTextOnWindow(gText_Draw, 0x15);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
@@ -281,20 +282,20 @@ static void sub_8035C4C(void)
|
||||
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
break;
|
||||
case 1:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
break;
|
||||
case 2:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
break;
|
||||
case 3:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -303,20 +304,20 @@ static void sub_8035C4C(void)
|
||||
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
break;
|
||||
case 1:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
break;
|
||||
case 2:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
break;
|
||||
case 3:
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -325,26 +326,26 @@ static void sub_8035C4C(void)
|
||||
{
|
||||
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
||||
{
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
||||
{
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x16);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleHandleAddTextPrinter(gText_Win, 0x17);
|
||||
BattleHandleAddTextPrinter(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -368,19 +369,19 @@ void sub_8035D74(u8 taskId)
|
||||
switch (linkPlayer->id)
|
||||
{
|
||||
case 0:
|
||||
BattleHandleAddTextPrinter(name, 0x11);
|
||||
BattlePutTextOnWindow(name, 0x11);
|
||||
sub_8035AE4(taskId, linkPlayer->id, 1, 2, 4);
|
||||
break;
|
||||
case 1:
|
||||
BattleHandleAddTextPrinter(name, 0x12);
|
||||
BattlePutTextOnWindow(name, 0x12);
|
||||
sub_8035AE4(taskId, linkPlayer->id, 2, 2, 4);
|
||||
break;
|
||||
case 2:
|
||||
BattleHandleAddTextPrinter(name, 0x13);
|
||||
BattlePutTextOnWindow(name, 0x13);
|
||||
sub_8035AE4(taskId, linkPlayer->id, 1, 2, 8);
|
||||
break;
|
||||
case 3:
|
||||
BattleHandleAddTextPrinter(name, 0x14);
|
||||
BattlePutTextOnWindow(name, 0x14);
|
||||
sub_8035AE4(taskId, linkPlayer->id, 2, 2, 8);
|
||||
break;
|
||||
}
|
||||
@@ -396,10 +397,10 @@ void sub_8035D74(u8 taskId)
|
||||
opponentId = playerId, playerId = opponentId_copy;
|
||||
|
||||
name = gLinkPlayers[playerId].name;
|
||||
BattleHandleAddTextPrinter(name, 0xF);
|
||||
BattlePutTextOnWindow(name, 0xF);
|
||||
|
||||
name = gLinkPlayers[opponentId].name;
|
||||
BattleHandleAddTextPrinter(name, 0x10);
|
||||
BattlePutTextOnWindow(name, 0x10);
|
||||
|
||||
sub_8035AE4(taskId, playerId, 1, 2, 7);
|
||||
sub_8035AE4(taskId, opponentId, 2, 2, 7);
|
||||
@@ -457,7 +458,7 @@ void sub_8035D74(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void LoadBattleEntryBackground(void)
|
||||
void DrawBattleEntryBackground(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
@@ -478,7 +479,7 @@ void LoadBattleEntryBackground(void)
|
||||
}
|
||||
else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
|
||||
{
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void*)(VRAM + 0x4000));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void*)(VRAM + 0xE000));
|
||||
@@ -740,7 +741,7 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
ApplyPlayerChosenFrameToBattleMenu();
|
||||
LoadBattleMenuWindowGfx();
|
||||
break;
|
||||
default:
|
||||
ret = TRUE;
|
||||
|
||||
@@ -34,7 +34,6 @@ extern struct UnusedControllerStruct gUnknown_02022D0C;
|
||||
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_81851A8(u8 *);
|
||||
extern u16 sub_8068B48(void);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
@@ -89,8 +88,8 @@ static void LinkOpponentHandleFaintingCry(void);
|
||||
static void LinkOpponentHandleIntroSlide(void);
|
||||
static void LinkOpponentHandleIntroTrainerBallThrow(void);
|
||||
static void LinkOpponentHandleDrawPartyStatusSummary(void);
|
||||
static void LinkOpponentHandleCmd49(void);
|
||||
static void LinkOpponentHandleCmd50(void);
|
||||
static void LinkOpponentHandleHidePartyStatusSummary(void);
|
||||
static void LinkOpponentHandleEndBounceEffect(void);
|
||||
static void LinkOpponentHandleSpriteInvisibility(void);
|
||||
static void LinkOpponentHandleBattleAnimation(void);
|
||||
static void LinkOpponentHandleLinkStandbyMsg(void);
|
||||
@@ -161,8 +160,8 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
LinkOpponentHandleIntroSlide,
|
||||
LinkOpponentHandleIntroTrainerBallThrow,
|
||||
LinkOpponentHandleDrawPartyStatusSummary,
|
||||
LinkOpponentHandleCmd49,
|
||||
LinkOpponentHandleCmd50,
|
||||
LinkOpponentHandleHidePartyStatusSummary,
|
||||
LinkOpponentHandleEndBounceEffect,
|
||||
LinkOpponentHandleSpriteInvisibility,
|
||||
LinkOpponentHandleBattleAnimation,
|
||||
LinkOpponentHandleLinkStandbyMsg,
|
||||
@@ -191,7 +190,7 @@ static void LinkOpponentBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
LinkOpponentBufferExecCompleted();
|
||||
@@ -395,7 +394,7 @@ static void sub_8064B04(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1135,9 +1134,9 @@ static void LinkOpponentHandleLoadMonSprite(void)
|
||||
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1168,10 +1167,10 @@ static void sub_8066494(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1302,8 +1301,8 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1314,7 +1313,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleTrainerSlide(void)
|
||||
@@ -1327,8 +1326,8 @@ static void LinkOpponentHandleTrainerSlide(void)
|
||||
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
@@ -1366,7 +1365,7 @@ static void LinkOpponentHandleFaintAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8064C14;
|
||||
}
|
||||
}
|
||||
@@ -1475,7 +1474,7 @@ static void LinkOpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
@@ -1716,8 +1715,8 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_8067618, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_28;
|
||||
@@ -1762,7 +1761,7 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
{
|
||||
@@ -1796,14 +1795,14 @@ static void sub_806782C(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd49(void)
|
||||
static void LinkOpponentHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkOpponentHandleCmd50(void)
|
||||
static void LinkOpponentHandleEndBounceEffect(void)
|
||||
{
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
@@ -1854,7 +1853,7 @@ static void LinkOpponentHandleCmd55(void)
|
||||
else
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
|
||||
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "sound.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
@@ -33,7 +34,6 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_81851A8(u8 *);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
|
||||
@@ -87,8 +87,8 @@ static void LinkPartnerHandleFaintingCry(void);
|
||||
static void LinkPartnerHandleIntroSlide(void);
|
||||
static void LinkPartnerHandleIntroTrainerBallThrow(void);
|
||||
static void LinkPartnerHandleDrawPartyStatusSummary(void);
|
||||
static void LinkPartnerHandleCmd49(void);
|
||||
static void LinkPartnerHandleCmd50(void);
|
||||
static void LinkPartnerHandleHidePartyStatusSummary(void);
|
||||
static void LinkPartnerHandleEndBounceEffect(void);
|
||||
static void LinkPartnerHandleSpriteInvisibility(void);
|
||||
static void LinkPartnerHandleBattleAnimation(void);
|
||||
static void LinkPartnerHandleLinkStandbyMsg(void);
|
||||
@@ -158,8 +158,8 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
LinkPartnerHandleIntroSlide,
|
||||
LinkPartnerHandleIntroTrainerBallThrow,
|
||||
LinkPartnerHandleDrawPartyStatusSummary,
|
||||
LinkPartnerHandleCmd49,
|
||||
LinkPartnerHandleCmd50,
|
||||
LinkPartnerHandleHidePartyStatusSummary,
|
||||
LinkPartnerHandleEndBounceEffect,
|
||||
LinkPartnerHandleSpriteInvisibility,
|
||||
LinkPartnerHandleBattleAnimation,
|
||||
LinkPartnerHandleLinkStandbyMsg,
|
||||
@@ -188,7 +188,7 @@ static void LinkPartnerBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
LinkPartnerBufferExecCompleted();
|
||||
@@ -279,7 +279,7 @@ static void sub_814B290(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1023,9 +1023,9 @@ static void LinkPartnerHandleLoadMonSprite(void)
|
||||
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1053,10 +1053,10 @@ static void sub_814CC98(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1133,12 +1133,12 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_FIRE_RED
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RED;
|
||||
}
|
||||
else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RS_BRENDAN;
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1146,15 +1146,15 @@ static void LinkPartnerHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleTrainerSlide(void)
|
||||
@@ -1299,7 +1299,7 @@ static void LinkPartnerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
@@ -1545,12 +1545,12 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_FIRE_RED
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RED;
|
||||
}
|
||||
else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RS_BRENDAN;
|
||||
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1564,8 +1564,8 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_814DCCC, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_112;
|
||||
@@ -1611,7 +1611,7 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
|
||||
|
||||
@@ -1631,14 +1631,14 @@ static void sub_814DE9C(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd49(void)
|
||||
static void LinkPartnerHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void LinkPartnerHandleCmd50(void)
|
||||
static void LinkPartnerHandleEndBounceEffect(void)
|
||||
{
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
@@ -1684,7 +1684,7 @@ static void LinkPartnerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
@@ -37,9 +38,8 @@ extern struct UnusedControllerStruct gUnknown_02022D0C;
|
||||
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_81A57E4(u8 battlerId, u16 stringId);
|
||||
extern u8 sub_81A4CB0(void);
|
||||
extern u8 GetFrontierBrainTrainerPicIndex(void);
|
||||
extern u8 sub_81D5588(u16 trainerId);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
extern u8 GetEreaderTrainerFrontSpriteId(void);
|
||||
@@ -94,8 +94,8 @@ static void OpponentHandleFaintingCry(void);
|
||||
static void OpponentHandleIntroSlide(void);
|
||||
static void OpponentHandleIntroTrainerBallThrow(void);
|
||||
static void OpponentHandleDrawPartyStatusSummary(void);
|
||||
static void OpponentHandleCmd49(void);
|
||||
static void OpponentHandleCmd50(void);
|
||||
static void OpponentHandleHidePartyStatusSummary(void);
|
||||
static void OpponentHandleEndBounceEffect(void);
|
||||
static void OpponentHandleSpriteInvisibility(void);
|
||||
static void OpponentHandleBattleAnimation(void);
|
||||
static void OpponentHandleLinkStandbyMsg(void);
|
||||
@@ -166,8 +166,8 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
OpponentHandleIntroSlide,
|
||||
OpponentHandleIntroTrainerBallThrow,
|
||||
OpponentHandleDrawPartyStatusSummary,
|
||||
OpponentHandleCmd49,
|
||||
OpponentHandleCmd50,
|
||||
OpponentHandleHidePartyStatusSummary,
|
||||
OpponentHandleEndBounceEffect,
|
||||
OpponentHandleSpriteInvisibility,
|
||||
OpponentHandleBattleAnimation,
|
||||
OpponentHandleLinkStandbyMsg,
|
||||
@@ -199,7 +199,7 @@ static void OpponentBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -391,7 +391,7 @@ static void sub_805F994(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
if (hpValue != -1)
|
||||
{
|
||||
@@ -1127,9 +1127,9 @@ static void OpponentHandleLoadMonSprite(void)
|
||||
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1162,9 +1162,9 @@ static void sub_80613DC(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1232,9 +1232,9 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
{
|
||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||
}
|
||||
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
|
||||
else if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
|
||||
{
|
||||
trainerPicId = sub_81A4CB0();
|
||||
trainerPicId = GetFrontierBrainTrainerPicIndex();
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
|
||||
{
|
||||
@@ -1293,8 +1293,8 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1305,7 +1305,7 @@ static void OpponentHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void OpponentHandleTrainerSlide(void)
|
||||
@@ -1316,9 +1316,9 @@ static void OpponentHandleTrainerSlide(void)
|
||||
{
|
||||
trainerPicId = GetSecretBaseTrainerPicIndex();
|
||||
}
|
||||
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
|
||||
else if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
|
||||
{
|
||||
trainerPicId = sub_81A4CB0();
|
||||
trainerPicId = GetFrontierBrainTrainerPicIndex();
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
|
||||
{
|
||||
@@ -1365,8 +1365,8 @@ static void OpponentHandleTrainerSlide(void)
|
||||
}
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
|
||||
@@ -1403,7 +1403,7 @@ static void OpponentHandleFaintAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_805FAC4;
|
||||
}
|
||||
}
|
||||
@@ -1511,7 +1511,7 @@ static void OpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
sub_81A57E4(gActiveBattler, *stringId);
|
||||
}
|
||||
@@ -1865,8 +1865,8 @@ static void OpponentHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_8062828, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_26;
|
||||
@@ -1916,7 +1916,7 @@ static void OpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
{
|
||||
@@ -1950,14 +1950,14 @@ static void sub_8062A2C(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void OpponentHandleCmd49(void)
|
||||
static void OpponentHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void OpponentHandleCmd50(void)
|
||||
static void OpponentHandleEndBounceEffect(void)
|
||||
{
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
+117
-117
@@ -15,6 +15,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
@@ -29,6 +30,7 @@
|
||||
#include "battle_setup.h"
|
||||
#include "item_use.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "party_menu.h"
|
||||
|
||||
extern u8 gUnknown_0203CEE8;
|
||||
extern u8 gUnknown_0203CEE9;
|
||||
@@ -38,15 +40,13 @@ extern u16 gBattle_BG0_Y;
|
||||
extern s32 gUnknown_0203CD70;
|
||||
extern struct UnusedControllerStruct gUnknown_02022D0C;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern struct SpriteTemplate gUnknown_0202499C;
|
||||
extern struct SpriteTemplate gMultiuseSpriteTemplate;
|
||||
|
||||
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_81B89AC(u8 arg0);
|
||||
extern void sub_81AABB0(void);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_81A57E4(u8 battlerId, u16 stringId);
|
||||
extern void sub_81851A8(u8 *);
|
||||
|
||||
@@ -100,8 +100,8 @@ static void PlayerHandleFaintingCry(void);
|
||||
static void PlayerHandleIntroSlide(void);
|
||||
static void PlayerHandleIntroTrainerBallThrow(void);
|
||||
static void PlayerHandleDrawPartyStatusSummary(void);
|
||||
static void PlayerHandleCmd49(void);
|
||||
static void PlayerHandleCmd50(void);
|
||||
static void PlayerHandleHidePartyStatusSummary(void);
|
||||
static void PlayerHandleEndBounceEffect(void);
|
||||
static void PlayerHandleSpriteInvisibility(void);
|
||||
static void PlayerHandleBattleAnimation(void);
|
||||
static void PlayerHandleLinkStandbyMsg(void);
|
||||
@@ -120,13 +120,13 @@ static void MoveSelectionDisplayMoveType(void);
|
||||
static void MoveSelectionDisplayMoveNames(void);
|
||||
static void HandleMoveSwitchting(void);
|
||||
static void sub_8058FC0(void);
|
||||
static void sub_8059828(void);
|
||||
static void WaitForMonSelection(void);
|
||||
static void CompleteWhenChoseItem(void);
|
||||
static void sub_8059544(u8 taskId);
|
||||
static void Task_LaunchLvlUpAnim(u8 taskId);
|
||||
static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
|
||||
static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
|
||||
static void sub_8059400(u8 taskId);
|
||||
static void sub_80595A4(u8 taskId);
|
||||
static void Task_UpdateLvlInHealthbox(u8 taskId);
|
||||
static void PrintLinkStandbyMsg(void);
|
||||
static u32 CopyPlayerMonData(u8 monId, u8 *dst);
|
||||
static void SetPlayerMonData(u8 monId);
|
||||
@@ -187,8 +187,8 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
PlayerHandleIntroSlide,
|
||||
PlayerHandleIntroTrainerBallThrow,
|
||||
PlayerHandleDrawPartyStatusSummary,
|
||||
PlayerHandleCmd49,
|
||||
PlayerHandleCmd50,
|
||||
PlayerHandleHidePartyStatusSummary,
|
||||
PlayerHandleEndBounceEffect,
|
||||
PlayerHandleSpriteInvisibility,
|
||||
PlayerHandleBattleAnimation,
|
||||
PlayerHandleLinkStandbyMsg,
|
||||
@@ -250,10 +250,10 @@ static void HandleInputChooseAction(void)
|
||||
{
|
||||
u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||
|
||||
dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
|
||||
dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
|
||||
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
|
||||
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
|
||||
|
||||
if (gMain.newAndRepeatedKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == 2)
|
||||
if (gMain.newAndRepeatedKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
|
||||
gPlayerDpadHoldFrames++;
|
||||
else
|
||||
gPlayerDpadHoldFrames = 0;
|
||||
@@ -347,8 +347,8 @@ static void HandleInputChooseAction(void)
|
||||
|
||||
static void sub_80577F0(void) // unused
|
||||
{
|
||||
dp11b_obj_free(gActiveBattler, 1);
|
||||
dp11b_obj_free(gActiveBattler, 0);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_MON);
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseTarget;
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ static void HandleInputChooseTarget(void)
|
||||
u8 identities[4];
|
||||
memcpy(identities, sTargetIdentities, ARRAY_COUNT(sTargetIdentities));
|
||||
|
||||
dp11b_obj_instanciate(gMultiUsePlayerCursor, 1, 0xF, 1);
|
||||
DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1);
|
||||
|
||||
// what a weird loop
|
||||
i = 0;
|
||||
@@ -367,7 +367,7 @@ static void HandleInputChooseTarget(void)
|
||||
do
|
||||
{
|
||||
if (i != gMultiUsePlayerCursor)
|
||||
dp11b_obj_free(i, 1);
|
||||
EndBounceEffect(i, BOUNCE_HEALTHBOX);
|
||||
i++;
|
||||
} while (i < gBattlersCount);
|
||||
}
|
||||
@@ -382,7 +382,7 @@ static void HandleInputChooseTarget(void)
|
||||
PlaySE(SE_SELECT);
|
||||
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
|
||||
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
|
||||
dp11b_obj_free(gMultiUsePlayerCursor, 1);
|
||||
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
|
||||
@@ -390,9 +390,9 @@ static void HandleInputChooseTarget(void)
|
||||
PlaySE(SE_SELECT);
|
||||
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
|
||||
dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
|
||||
dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
|
||||
dp11b_obj_free(gMultiUsePlayerCursor, 1);
|
||||
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
|
||||
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
|
||||
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
|
||||
}
|
||||
else if (gMain.newKeys & (DPAD_LEFT | DPAD_UP))
|
||||
{
|
||||
@@ -485,7 +485,7 @@ static void HandleInputChooseMove(void)
|
||||
bool32 canSelectTarget = FALSE;
|
||||
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
|
||||
|
||||
if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == 2)
|
||||
if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
|
||||
gPlayerDpadHoldFrames++;
|
||||
else
|
||||
gPlayerDpadHoldFrames = 0;
|
||||
@@ -620,7 +620,7 @@ static void HandleInputChooseMove(void)
|
||||
gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1;
|
||||
|
||||
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
|
||||
BattleHandleAddTextPrinter(gText_BattleSwitchWhich, 0xB);
|
||||
BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB);
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitchting;
|
||||
}
|
||||
}
|
||||
@@ -916,7 +916,7 @@ void sub_80587B0(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
PlayerBufferExecCompleted();
|
||||
@@ -1120,7 +1120,7 @@ void c3_0802FDF4(u8 taskId)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1143,16 +1143,16 @@ static void CompleteOnInactiveTextPrinter(void)
|
||||
|
||||
#define tExpTask_monId data[0]
|
||||
#define tExpTask_gainedExp data[1]
|
||||
#define tExpTask_bank data[2]
|
||||
#define tExpTask_battler data[2]
|
||||
#define tExpTask_frames data[10]
|
||||
|
||||
static void Task_GiveExpToMon(u8 taskId)
|
||||
{
|
||||
u32 monId = (u8)(gTasks[taskId].tExpTask_monId);
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
|
||||
|
||||
if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // give exp without the expbar
|
||||
if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // Give exp without moving the expbar.
|
||||
{
|
||||
struct Pokemon *mon = &gPlayerParty[monId];
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
@@ -1162,19 +1162,19 @@ static void Task_GiveExpToMon(u8 taskId)
|
||||
|
||||
if (currExp + gainedExp >= nextLvlExp)
|
||||
{
|
||||
u8 savedActiveBank;
|
||||
u8 savedActiveBattler;
|
||||
|
||||
SetMonData(mon, MON_DATA_EXP, &nextLvlExp);
|
||||
CalculateMonStats(mon);
|
||||
gainedExp -= nextLvlExp - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
savedActiveBattler = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBattler;
|
||||
|
||||
if (IsDoubleBattle() == TRUE
|
||||
&& ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
|
||||
gTasks[taskId].func = sub_8059544;
|
||||
gTasks[taskId].func = Task_LaunchLvlUpAnim;
|
||||
else
|
||||
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
|
||||
}
|
||||
@@ -1196,7 +1196,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
|
||||
{
|
||||
u8 monIndex = gTasks[taskId].tExpTask_monId;
|
||||
s32 gainedExp = gTasks[taskId].tExpTask_gainedExp;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
struct Pokemon *mon = &gPlayerParty[monIndex];
|
||||
u8 level = GetMonData(mon, MON_DATA_LEVEL);
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
@@ -1221,12 +1221,12 @@ static void sub_8059400(u8 taskId)
|
||||
{
|
||||
u8 monId = gTasks[taskId].tExpTask_monId;
|
||||
s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
s16 r4;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
s16 newExpPoints;
|
||||
|
||||
r4 = sub_8074AA0(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0);
|
||||
newExpPoints = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]);
|
||||
if (r4 == -1)
|
||||
if (newExpPoints == -1) // The bar has been filled with given exp points.
|
||||
{
|
||||
u8 level;
|
||||
s32 currExp;
|
||||
@@ -1241,16 +1241,16 @@ static void sub_8059400(u8 taskId)
|
||||
|
||||
if (currExp + gainedExp >= expOnNextLvl)
|
||||
{
|
||||
u8 savedActiveBank;
|
||||
u8 savedActiveBattler;
|
||||
|
||||
SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl);
|
||||
CalculateMonStats(&gPlayerParty[monId]);
|
||||
gainedExp -= expOnNextLvl - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
savedActiveBattler = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
gTasks[taskId].func = sub_8059544;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBattler;
|
||||
gTasks[taskId].func = Task_LaunchLvlUpAnim;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1263,27 +1263,27 @@ static void sub_8059400(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8059544(u8 taskId)
|
||||
static void Task_LaunchLvlUpAnim(u8 taskId)
|
||||
{
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
u8 monIndex = gTasks[taskId].tExpTask_monId;
|
||||
|
||||
if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])
|
||||
battlerId ^= BIT_FLANK;
|
||||
|
||||
InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP);
|
||||
gTasks[taskId].func = sub_80595A4;
|
||||
gTasks[taskId].func = Task_UpdateLvlInHealthbox;
|
||||
}
|
||||
|
||||
static void sub_80595A4(u8 taskId)
|
||||
static void Task_UpdateLvlInHealthbox(u8 taskId)
|
||||
{
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
u8 battlerId = gTasks[taskId].tExpTask_battler;
|
||||
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[battlerId].specialAnimActive)
|
||||
{
|
||||
u8 monIndex = gTasks[taskId].tExpTask_monId;
|
||||
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
|
||||
|
||||
if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL);
|
||||
@@ -1300,8 +1300,8 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
|
||||
u8 battlerId;
|
||||
|
||||
monIndex = gTasks[taskId].tExpTask_monId;
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
|
||||
battlerId = gTasks[taskId].tExpTask_bank;
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value.
|
||||
battlerId = gTasks[taskId].tExpTask_battler;
|
||||
gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -1337,21 +1337,21 @@ static void CompleteOnInactiveTextPrinter2(void)
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void sub_80597CC(void)
|
||||
static void OpenPartyMenuToChooseMon(void)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
u8 r4;
|
||||
u8 caseId;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8059828;
|
||||
r4 = gTasks[gUnknown_03005D7C[gActiveBattler]].data[0];
|
||||
gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection;
|
||||
caseId = gTasks[gUnknown_03005D7C[gActiveBattler]].data[0];
|
||||
DestroyTask(gUnknown_03005D7C[gActiveBattler]);
|
||||
FreeAllWindowBuffers();
|
||||
sub_81B89AC(r4);
|
||||
OpenPartyMenuInBattle(caseId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8059828(void)
|
||||
static void WaitForMonSelection(void)
|
||||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
@@ -1458,7 +1458,7 @@ static void MoveSelectionDisplayMoveNames(void)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(i);
|
||||
StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, i + 3);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
|
||||
if (moveInfo->moves[i] != MOVE_NONE)
|
||||
gNumberOfMovesToChoose++;
|
||||
}
|
||||
@@ -1467,7 +1467,7 @@ static void MoveSelectionDisplayMoveNames(void)
|
||||
static void MoveSelectionDisplayPpString(void)
|
||||
{
|
||||
StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 7);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 7);
|
||||
}
|
||||
|
||||
static void MoveSelectionDisplayPpNumber(void)
|
||||
@@ -1485,7 +1485,7 @@ static void MoveSelectionDisplayPpNumber(void)
|
||||
txtPtr++;
|
||||
ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2);
|
||||
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 9);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 9);
|
||||
}
|
||||
|
||||
static void MoveSelectionDisplayMoveType(void)
|
||||
@@ -1502,7 +1502,7 @@ static void MoveSelectionDisplayMoveType(void)
|
||||
txtPtr++;
|
||||
|
||||
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 10);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 10);
|
||||
}
|
||||
|
||||
static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
|
||||
@@ -1573,7 +1573,7 @@ static void PrintLinkStandbyMsg(void)
|
||||
{
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
BattleHandleAddTextPrinter(gText_LinkStandby, 0);
|
||||
BattlePutTextOnWindow(gText_LinkStandby, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2199,10 +2199,10 @@ static void sub_805B258(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -2259,9 +2259,9 @@ static void DoSwitchOutAnimation(void)
|
||||
}
|
||||
}
|
||||
|
||||
// some explanation here
|
||||
// in emerald it's possible to have a tag battle in the battle frontier facilities with AI
|
||||
// which use the front sprite for both the player and the partner as opposed to any other battles (including the one with Steven) that use the back pic as well as animate it
|
||||
// In emerald it's possible to have a tag battle in the battle frontier facilities with AI
|
||||
// which use the front sprite for both the player and the partner as opposed to any other battles (including the one with Steven)
|
||||
// that use an animated back pic.
|
||||
static void PlayerHandleDrawTrainerPic(void)
|
||||
{
|
||||
s16 xPos, yPos;
|
||||
@@ -2272,16 +2272,16 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_FIRE_RED
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_LEAF_GREEN)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RED;
|
||||
}
|
||||
else if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RS_BRENDAN;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_BRENDAN;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2291,12 +2291,12 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
|
||||
if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != B_FLANK_LEFT) // Second mon, on the right.
|
||||
xPos = 90;
|
||||
else // first mon
|
||||
else // First mon, on the left.
|
||||
xPos = 32;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != STEVEN_PARTNER_ID)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
xPos = 90;
|
||||
yPos = (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
@@ -2314,12 +2314,12 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
// Use front pic table for any tag battles unless your partner is Steven.
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != STEVEN_PARTNER_ID)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -2329,12 +2329,12 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = 0;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
|
||||
}
|
||||
// use the back pic in any other scenario
|
||||
// Use the back pic in any other scenario.
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -2342,7 +2342,7 @@ static void PlayerHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void PlayerHandleTrainerSlide(void)
|
||||
@@ -2354,26 +2354,26 @@ static void PlayerHandleTrainerSlide(void)
|
||||
if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_FIRE_RED
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_LEAF_GREEN)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RED;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RED;
|
||||
}
|
||||
else if ((gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_RUBY
|
||||
|| (gLinkPlayers[GetMultiplayerId()].version & 0xFF) == VERSION_SAPPHIRE)
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + BACK_PIC_RS_BRENDAN;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN;
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender;
|
||||
trainerPicId = gLinkPlayers[GetMultiplayerId()].gender + TRAINER_BACK_PIC_BRENDAN;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender;
|
||||
trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN;
|
||||
}
|
||||
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 80, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, 30);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, 30);
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
@@ -2420,7 +2420,7 @@ static void PlayerHandleFaintAnimation(void)
|
||||
|
||||
static void PlayerHandlePaletteFade(void)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 2, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2466,7 +2466,7 @@ static void PlayerHandleMoveAnimation(void)
|
||||
gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
|
||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
|
||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
|
||||
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // Always returns FALSE.
|
||||
{
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
@@ -2536,7 +2536,7 @@ static void PlayerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
sub_81A57E4(gActiveBattler, *stringId);
|
||||
@@ -2566,14 +2566,14 @@ static void PlayerHandleChooseAction(void)
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattleTv_ClearExplosionFaintCause();
|
||||
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
|
||||
BattlePutTextOnWindow(gText_BattleMenu, 2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
}
|
||||
|
||||
static void PlayerHandleUnknownYesNoBox(void)
|
||||
@@ -2581,7 +2581,7 @@ static void PlayerHandleUnknownYesNoBox(void)
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 12);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 12);
|
||||
gMultiUsePlayerCursor = 1;
|
||||
BattleCreateYesNoCursorAt(1);
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerHandleUnknownYesNoInput;
|
||||
@@ -2640,7 +2640,7 @@ static void PlayerHandleChooseItem(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
|
||||
gBattlerInMenuId = gActiveBattler;
|
||||
|
||||
@@ -2655,7 +2655,7 @@ static void PlayerHandleChoosePokemon(void)
|
||||
for (i = 0; i < 3; i++)
|
||||
gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][4 + i];
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != 2)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_CANT_SWITCH)
|
||||
{
|
||||
BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gUnknown_0203CF00);
|
||||
PlayerBufferExecCompleted();
|
||||
@@ -2664,11 +2664,11 @@ static void PlayerHandleChoosePokemon(void)
|
||||
{
|
||||
gUnknown_03005D7C[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
|
||||
gTasks[gUnknown_03005D7C[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
|
||||
*(&gBattleStruct->field_49) = gBattleBufferA[gActiveBattler][1] >> 4;
|
||||
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
|
||||
*(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
|
||||
*(&gBattleStruct->field_B0) = gBattleBufferA[gActiveBattler][3];
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_80597CC;
|
||||
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon;
|
||||
gBattlerInMenuId = gActiveBattler;
|
||||
}
|
||||
}
|
||||
@@ -2676,7 +2676,7 @@ static void PlayerHandleChoosePokemon(void)
|
||||
static void PlayerHandleCmd23(void)
|
||||
{
|
||||
BattleStopLowHpSound();
|
||||
BeginNormalPaletteFade(-1, 2, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2722,19 +2722,19 @@ static void PlayerHandleExpUpdate(void)
|
||||
u8 taskId;
|
||||
|
||||
LoadBattleBarGfx(1);
|
||||
GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // unused return value
|
||||
expPointsToGive = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
|
||||
GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // Unused return value.
|
||||
expPointsToGive = T1_READ_16(&gBattleBufferA[gActiveBattler][2]);
|
||||
taskId = CreateTask(Task_GiveExpToMon, 10);
|
||||
gTasks[taskId].tExpTask_monId = monId;
|
||||
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
|
||||
gTasks[taskId].tExpTask_bank = gActiveBattler;
|
||||
gTasks[taskId].tExpTask_battler = gActiveBattler;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
|
||||
}
|
||||
}
|
||||
|
||||
#undef tExpTask_monId
|
||||
#undef tExpTask_gainedExp
|
||||
#undef tExpTask_bank
|
||||
#undef tExpTask_battler
|
||||
#undef tExpTask_frames
|
||||
|
||||
static void PlayerHandleStatusIconUpdate(void)
|
||||
@@ -2945,8 +2945,8 @@ static void PlayerHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(task05_08033660, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
|
||||
@@ -2971,7 +2971,7 @@ static void task05_08033660(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 savedActiveBank = gActiveBattler;
|
||||
u8 savedActiveBattler = gActiveBattler;
|
||||
|
||||
gActiveBattler = gTasks[taskId].data[0];
|
||||
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
@@ -2990,7 +2990,7 @@ static void task05_08033660(u8 taskId)
|
||||
gActiveBattler ^= BIT_FLANK;
|
||||
}
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8058B40;
|
||||
gActiveBattler = savedActiveBank;
|
||||
gActiveBattler = savedActiveBattler;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
@@ -3003,7 +3003,7 @@ static void PlayerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
|
||||
|
||||
@@ -3023,17 +3023,17 @@ static void sub_805CE38(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void PlayerHandleCmd49(void)
|
||||
static void PlayerHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleCmd50(void)
|
||||
static void PlayerHandleEndBounceEffect(void)
|
||||
{
|
||||
dp11b_obj_free(gActiveBattler, 1);
|
||||
dp11b_obj_free(gActiveBattler, 0);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_MON);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -3072,8 +3072,8 @@ static void PlayerHandleLinkStandbyMsg(void)
|
||||
PrintLinkStandbyMsg();
|
||||
// fall through
|
||||
case 1:
|
||||
dp11b_obj_free(gActiveBattler, 1);
|
||||
dp11b_obj_free(gActiveBattler, 0);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_MON);
|
||||
break;
|
||||
case 2:
|
||||
PrintLinkStandbyMsg();
|
||||
@@ -3104,7 +3104,7 @@ static void PlayerHandleCmd55(void)
|
||||
{
|
||||
sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
|
||||
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
|
||||
gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
gSaveBlock2Ptr->frontier.field_CA9_b = gBattleBufferA[gActiveBattler][2];
|
||||
FadeOutMapMusic(5);
|
||||
BeginFastPaletteFade(3);
|
||||
PlayerBufferExecCompleted();
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "sound.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
@@ -34,7 +35,7 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern void sub_81358F4(void);
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void SetMultiuseSpriteTemplateToPokemon(u16, u8);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
|
||||
// this file's functions
|
||||
@@ -87,8 +88,8 @@ static void PlayerPartnerHandleFaintingCry(void);
|
||||
static void PlayerPartnerHandleIntroSlide(void);
|
||||
static void PlayerPartnerHandleIntroTrainerBallThrow(void);
|
||||
static void PlayerPartnerHandleDrawPartyStatusSummary(void);
|
||||
static void PlayerPartnerHandleCmd49(void);
|
||||
static void PlayerPartnerHandleCmd50(void);
|
||||
static void PlayerPartnerHandleHidePartyStatusSummary(void);
|
||||
static void PlayerPartnerHandleEndBounceEffect(void);
|
||||
static void PlayerPartnerHandleSpriteInvisibility(void);
|
||||
static void PlayerPartnerHandleBattleAnimation(void);
|
||||
static void PlayerPartnerHandleLinkStandbyMsg(void);
|
||||
@@ -164,8 +165,8 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
PlayerPartnerHandleIntroSlide,
|
||||
PlayerPartnerHandleIntroTrainerBallThrow,
|
||||
PlayerPartnerHandleDrawPartyStatusSummary,
|
||||
PlayerPartnerHandleCmd49,
|
||||
PlayerPartnerHandleCmd50,
|
||||
PlayerPartnerHandleHidePartyStatusSummary,
|
||||
PlayerPartnerHandleEndBounceEffect,
|
||||
PlayerPartnerHandleSpriteInvisibility,
|
||||
PlayerPartnerHandleBattleAnimation,
|
||||
PlayerPartnerHandleLinkStandbyMsg,
|
||||
@@ -203,7 +204,7 @@ static void PlayerPartnerBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
@@ -294,7 +295,7 @@ static void sub_81BB1D4(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -344,7 +345,7 @@ static void Task_GiveExpToMon(u8 taskId)
|
||||
gainedExp -= nextLvlExp - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
|
||||
if (IsDoubleBattle() == TRUE
|
||||
@@ -399,7 +400,7 @@ static void sub_81BB4E4(u8 taskId)
|
||||
u8 battlerId = gTasks[taskId].tExpTask_bank;
|
||||
s16 r4;
|
||||
|
||||
r4 = sub_8074AA0(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0);
|
||||
r4 = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0);
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]);
|
||||
if (r4 == -1)
|
||||
{
|
||||
@@ -423,7 +424,7 @@ static void sub_81BB4E4(u8 taskId)
|
||||
gainedExp -= expOnNextLvl - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
gTasks[taskId].func = sub_81BB628;
|
||||
}
|
||||
@@ -1210,9 +1211,9 @@ static void PlayerPartnerHandleLoadMonSprite(void)
|
||||
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1240,10 +1241,10 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1308,9 +1309,9 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
s16 xPos, yPos;
|
||||
u32 trainerPicId;
|
||||
|
||||
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
trainerPicId = BACK_PIC_STEVEN;
|
||||
trainerPicId = TRAINER_BACK_PIC_STEVEN;
|
||||
xPos = 90;
|
||||
yPos = (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80;
|
||||
}
|
||||
@@ -1322,11 +1323,11 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
// Use back pic only if the partner is Steven
|
||||
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -1336,8 +1337,8 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
else // otherwise use front sprite
|
||||
{
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -1348,7 +1349,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void PlayerPartnerHandleTrainerSlide(void)
|
||||
@@ -1492,7 +1493,7 @@ static void PlayerPartnerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
|
||||
}
|
||||
|
||||
@@ -1793,9 +1794,9 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
|
||||
paletteNum = AllocSpritePalette(0xD6F9);
|
||||
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
u8 spriteId = BACK_PIC_STEVEN;
|
||||
u8 spriteId = TRAINER_BACK_PIC_STEVEN;
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[spriteId].data, 0x100 + paletteNum * 16, 32);
|
||||
}
|
||||
else
|
||||
@@ -1810,8 +1811,8 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_81BE2C8, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_77;
|
||||
@@ -1857,7 +1858,7 @@ static void PlayerPartnerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
|
||||
|
||||
@@ -1877,14 +1878,14 @@ static void sub_81BE498(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void PlayerPartnerHandleCmd49(void)
|
||||
static void PlayerPartnerHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerPartnerHandleCmd50(void)
|
||||
static void PlayerPartnerHandleEndBounceEffect(void)
|
||||
{
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "util.h"
|
||||
#include "main.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "sound.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
@@ -36,7 +37,6 @@ extern u8 gUnknown_0203C7B4;
|
||||
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern u16 sub_8068B48(void);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
|
||||
@@ -90,8 +90,8 @@ static void RecordedOpponentHandleFaintingCry(void);
|
||||
static void RecordedOpponentHandleIntroSlide(void);
|
||||
static void RecordedOpponentHandleIntroTrainerBallThrow(void);
|
||||
static void RecordedOpponentHandleDrawPartyStatusSummary(void);
|
||||
static void RecordedOpponentHandleCmd49(void);
|
||||
static void RecordedOpponentHandleCmd50(void);
|
||||
static void RecordedOpponentHandleHidePartyStatusSummary(void);
|
||||
static void RecordedOpponentHandleEndBounceEffect(void);
|
||||
static void RecordedOpponentHandleSpriteInvisibility(void);
|
||||
static void RecordedOpponentHandleBattleAnimation(void);
|
||||
static void RecordedOpponentHandleLinkStandbyMsg(void);
|
||||
@@ -162,8 +162,8 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
|
||||
RecordedOpponentHandleIntroSlide,
|
||||
RecordedOpponentHandleIntroTrainerBallThrow,
|
||||
RecordedOpponentHandleDrawPartyStatusSummary,
|
||||
RecordedOpponentHandleCmd49,
|
||||
RecordedOpponentHandleCmd50,
|
||||
RecordedOpponentHandleHidePartyStatusSummary,
|
||||
RecordedOpponentHandleEndBounceEffect,
|
||||
RecordedOpponentHandleSpriteInvisibility,
|
||||
RecordedOpponentHandleBattleAnimation,
|
||||
RecordedOpponentHandleLinkStandbyMsg,
|
||||
@@ -192,7 +192,7 @@ static void RecordedOpponentBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
@@ -377,7 +377,7 @@ static void sub_8186C48(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1118,9 +1118,9 @@ static void RecordedOpponentHandleLoadMonSprite(void)
|
||||
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1153,9 +1153,9 @@ static void sub_81885D8(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1251,8 +1251,8 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
|
||||
}
|
||||
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
xPos,
|
||||
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1263,7 +1263,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void RecordedOpponentHandleTrainerSlide(void)
|
||||
@@ -1296,7 +1296,7 @@ static void RecordedOpponentHandleFaintAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon;
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_8186D58;
|
||||
}
|
||||
}
|
||||
@@ -1404,7 +1404,7 @@ static void RecordedOpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1658,8 +1658,8 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_8189548, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_70;
|
||||
@@ -1704,7 +1704,7 @@ static void RecordedOpponentHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
|
||||
if (gBattleBufferA[gActiveBattler][2] != 0)
|
||||
{
|
||||
@@ -1738,14 +1738,14 @@ static void sub_818975C(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void RecordedOpponentHandleCmd49(void)
|
||||
static void RecordedOpponentHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void RecordedOpponentHandleCmd50(void)
|
||||
static void RecordedOpponentHandleEndBounceEffect(void)
|
||||
{
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
|
||||
|
||||
// this file's functions
|
||||
@@ -89,8 +88,8 @@ static void RecordedPlayerHandleFaintingCry(void);
|
||||
static void RecordedPlayerHandleIntroSlide(void);
|
||||
static void RecordedPlayerHandleIntroTrainerBallThrow(void);
|
||||
static void RecordedPlayerHandleDrawPartyStatusSummary(void);
|
||||
static void RecordedPlayerHandleCmd49(void);
|
||||
static void RecordedPlayerHandleCmd50(void);
|
||||
static void RecordedPlayerHandleHidePartyStatusSummary(void);
|
||||
static void RecordedPlayerHandleEndBounceEffect(void);
|
||||
static void RecordedPlayerHandleSpriteInvisibility(void);
|
||||
static void RecordedPlayerHandleBattleAnimation(void);
|
||||
static void RecordedPlayerHandleLinkStandbyMsg(void);
|
||||
@@ -160,8 +159,8 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
|
||||
RecordedPlayerHandleIntroSlide,
|
||||
RecordedPlayerHandleIntroTrainerBallThrow,
|
||||
RecordedPlayerHandleDrawPartyStatusSummary,
|
||||
RecordedPlayerHandleCmd49,
|
||||
RecordedPlayerHandleCmd50,
|
||||
RecordedPlayerHandleHidePartyStatusSummary,
|
||||
RecordedPlayerHandleEndBounceEffect,
|
||||
RecordedPlayerHandleSpriteInvisibility,
|
||||
RecordedPlayerHandleBattleAnimation,
|
||||
RecordedPlayerHandleLinkStandbyMsg,
|
||||
@@ -190,7 +189,7 @@ static void RecordedPlayerBufferRunCommand(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
@@ -363,7 +362,7 @@ static void sub_818A064(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1107,9 +1106,9 @@ static void RecordedPlayerHandleLoadMonSprite(void)
|
||||
|
||||
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
|
||||
sub_806A068(species, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler));
|
||||
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(gActiveBattler, 2),
|
||||
GetBattlerSpriteDefault_Y(gActiveBattler),
|
||||
sub_80A82E4(gActiveBattler));
|
||||
@@ -1137,10 +1136,10 @@ static void sub_818BA6C(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1242,8 +1241,8 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
{
|
||||
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -1256,8 +1255,8 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
else
|
||||
{
|
||||
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
|
||||
sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
|
||||
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
@@ -1265,7 +1264,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
}
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void RecordedPlayerHandleTrainerSlide(void)
|
||||
@@ -1409,7 +1408,7 @@ static void RecordedPlayerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1693,8 +1692,8 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
|
||||
taskId = CreateTask(sub_818CC24, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_120;
|
||||
@@ -1740,7 +1739,7 @@ static void RecordedPlayerHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
|
||||
|
||||
@@ -1760,14 +1759,14 @@ static void sub_818CDF4(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void RecordedPlayerHandleCmd49(void)
|
||||
static void RecordedPlayerHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void RecordedPlayerHandleCmd50(void)
|
||||
static void RecordedPlayerHandleEndBounceEffect(void)
|
||||
{
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ static void SafariHandleFaintingCry(void);
|
||||
static void SafariHandleIntroSlide(void);
|
||||
static void SafariHandleIntroTrainerBallThrow(void);
|
||||
static void SafariHandleDrawPartyStatusSummary(void);
|
||||
static void SafariHandleCmd49(void);
|
||||
static void SafariHandleCmd50(void);
|
||||
static void SafariHandleHidePartyStatusSummary(void);
|
||||
static void SafariHandleEndBounceEffect(void);
|
||||
static void SafariHandleSpriteInvisibility(void);
|
||||
static void SafariHandleBattleAnimation(void);
|
||||
static void SafariHandleLinkStandbyMsg(void);
|
||||
@@ -144,8 +144,8 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
SafariHandleIntroSlide,
|
||||
SafariHandleIntroTrainerBallThrow,
|
||||
SafariHandleDrawPartyStatusSummary,
|
||||
SafariHandleCmd49,
|
||||
SafariHandleCmd50,
|
||||
SafariHandleHidePartyStatusSummary,
|
||||
SafariHandleEndBounceEffect,
|
||||
SafariHandleSpriteInvisibility,
|
||||
SafariHandleBattleAnimation,
|
||||
SafariHandleLinkStandbyMsg,
|
||||
@@ -239,7 +239,7 @@ static void HandleInputChooseAction(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
SafariBufferExecCompleted();
|
||||
@@ -358,9 +358,9 @@ static void SafariHandleReturnMonToBall(void)
|
||||
static void SafariHandleDrawTrainerPic(void)
|
||||
{
|
||||
DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, gActiveBattler);
|
||||
sub_806A12C(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
|
||||
&gUnknown_0202499C,
|
||||
&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
|
||||
30);
|
||||
@@ -368,7 +368,7 @@ static void SafariHandleDrawTrainerPic(void)
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void SafariHandleTrainerSlide(void)
|
||||
@@ -427,7 +427,7 @@ static void SafariHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -454,14 +454,14 @@ static void SafariHandleChooseAction(void)
|
||||
s32 i;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattleHandleAddTextPrinter(gText_SafariZoneMenu, 2);
|
||||
BattlePutTextOnWindow(gText_SafariZoneMenu, 2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
}
|
||||
|
||||
static void SafariHandleUnknownYesNoBox(void)
|
||||
@@ -478,7 +478,7 @@ static void SafariHandleChooseItem(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = SafariOpenPokeblockCase;
|
||||
gBattlerInMenuId = gActiveBattler;
|
||||
}
|
||||
@@ -645,12 +645,12 @@ static void SafariHandleDrawPartyStatusSummary(void)
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void SafariHandleCmd49(void)
|
||||
static void SafariHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void SafariHandleCmd50(void)
|
||||
static void SafariHandleEndBounceEffect(void)
|
||||
{
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "window.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
@@ -38,7 +39,6 @@ extern struct UnusedControllerStruct gUnknown_02022D0C;
|
||||
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
|
||||
|
||||
extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
|
||||
extern void sub_806A068(u16, u8);
|
||||
|
||||
// this file's functions
|
||||
static void WallyHandleGetMonData(void);
|
||||
@@ -90,8 +90,8 @@ static void WallyHandleFaintingCry(void);
|
||||
static void WallyHandleIntroSlide(void);
|
||||
static void WallyHandleIntroTrainerBallThrow(void);
|
||||
static void WallyHandleDrawPartyStatusSummary(void);
|
||||
static void WallyHandleCmd49(void);
|
||||
static void WallyHandleCmd50(void);
|
||||
static void WallyHandleHidePartyStatusSummary(void);
|
||||
static void WallyHandleEndBounceEffect(void);
|
||||
static void WallyHandleSpriteInvisibility(void);
|
||||
static void WallyHandleBattleAnimation(void);
|
||||
static void WallyHandleLinkStandbyMsg(void);
|
||||
@@ -159,8 +159,8 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
|
||||
WallyHandleIntroSlide,
|
||||
WallyHandleIntroTrainerBallThrow,
|
||||
WallyHandleDrawPartyStatusSummary,
|
||||
WallyHandleCmd49,
|
||||
WallyHandleCmd50,
|
||||
WallyHandleHidePartyStatusSummary,
|
||||
WallyHandleEndBounceEffect,
|
||||
WallyHandleSpriteInvisibility,
|
||||
WallyHandleBattleAnimation,
|
||||
WallyHandleLinkStandbyMsg,
|
||||
@@ -253,7 +253,7 @@ static void WallyHandleActions(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void CompleteOnBankSpriteCallbackDummy(void)
|
||||
static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
{
|
||||
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
|
||||
WallyBufferExecCompleted();
|
||||
@@ -349,7 +349,7 @@ static void sub_8168818(void)
|
||||
|
||||
static void CompleteOnHealthbarDone(void)
|
||||
{
|
||||
s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
|
||||
|
||||
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
|
||||
@@ -1037,26 +1037,26 @@ static void WallyHandleReturnMonToBall(void)
|
||||
|
||||
static void WallyHandleDrawTrainerPic(void)
|
||||
{
|
||||
DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBattler);
|
||||
sub_806A12C(BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
DecompressTrainerBackPic(TRAINER_BACK_PIC_WALLY, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords),
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
|
||||
}
|
||||
|
||||
static void WallyHandleTrainerSlide(void)
|
||||
{
|
||||
DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBattler);
|
||||
sub_806A12C(BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
|
||||
DecompressTrainerBackPic(TRAINER_BACK_PIC_WALLY, gActiveBattler);
|
||||
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
|
||||
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
80,
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords),
|
||||
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords),
|
||||
30);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
|
||||
@@ -1179,7 +1179,7 @@ static void WallyHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1206,14 +1206,14 @@ static void WallyHandleChooseAction(void)
|
||||
s32 i;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
|
||||
BattlePutTextOnWindow(gText_BattleMenu, 2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
}
|
||||
|
||||
static void WallyHandleUnknownYesNoBox(void)
|
||||
@@ -1251,7 +1251,7 @@ static void WallyHandleChooseMove(void)
|
||||
|
||||
static void WallyHandleChooseItem(void)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = OpenBagAfterPaletteFade;
|
||||
gBattlerInMenuId = gActiveBattler;
|
||||
}
|
||||
@@ -1444,14 +1444,14 @@ static void WallyHandleIntroTrainerBallThrow(void)
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
|
||||
|
||||
paletteNum = AllocSpritePalette(0xD6F8);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_WALLY].data, 0x100 + paletteNum * 16, 32);
|
||||
LoadCompressedPalette(gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_WALLY].data, 0x100 + paletteNum * 16, 32);
|
||||
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
|
||||
|
||||
taskId = CreateTask(sub_816AC04, 5);
|
||||
gTasks[taskId].data[0] = gActiveBattler;
|
||||
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
|
||||
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
|
||||
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
|
||||
|
||||
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
|
||||
gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
|
||||
@@ -1465,8 +1465,8 @@ static void sub_816AA80(u8 battlerId)
|
||||
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
|
||||
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
|
||||
gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
|
||||
sub_806A068(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gUnknown_0202499C,
|
||||
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
|
||||
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
|
||||
GetBattlerSpriteCoord(battlerId, 2),
|
||||
GetBattlerSpriteDefault_Y(battlerId),
|
||||
sub_80A82E4(battlerId));
|
||||
@@ -1511,18 +1511,18 @@ static void WallyHandleDrawPartyStatusSummary(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
|
||||
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
|
||||
static void WallyHandleCmd49(void)
|
||||
static void WallyHandleHidePartyStatusSummary(void)
|
||||
{
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void WallyHandleCmd50(void)
|
||||
static void WallyHandleEndBounceEffect(void)
|
||||
{
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
+26
-26
@@ -587,7 +587,7 @@ static void SetBattlePartyIds(void)
|
||||
{
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
for (j = 0; j < 6; j++)
|
||||
for (j = 0; j < PARTY_SIZE; j++)
|
||||
{
|
||||
if (i < 2)
|
||||
{
|
||||
@@ -1082,14 +1082,14 @@ void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 m
|
||||
void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
||||
{
|
||||
s32 i;
|
||||
struct StringInfoBattle* stringInfo;
|
||||
struct BattleMsgData* stringInfo;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING;
|
||||
sBattleBuffersTransferData[1] = gBattleOutcome;
|
||||
sBattleBuffersTransferData[2] = stringID;
|
||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||
|
||||
stringInfo = (struct StringInfoBattle*)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo = (struct BattleMsgData*)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo->currentMove = gCurrentMove;
|
||||
stringInfo->originallyUsedMove = gChosenMove;
|
||||
stringInfo->lastItem = gLastUsedItem;
|
||||
@@ -1097,7 +1097,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
||||
stringInfo->scrActive = gBattleScripting.battler;
|
||||
stringInfo->unk1605E = gBattleStruct->field_52;
|
||||
stringInfo->hpScale = gBattleStruct->hpScale;
|
||||
stringInfo->StringBank = gPotentialItemEffectBattler;
|
||||
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
|
||||
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
@@ -1108,20 +1108,20 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
|
||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||
stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
|
||||
}
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
{
|
||||
s32 i;
|
||||
struct StringInfoBattle *stringInfo;
|
||||
struct BattleMsgData *stringInfo;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
|
||||
sBattleBuffersTransferData[2] = stringID;
|
||||
sBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
|
||||
|
||||
stringInfo = (struct StringInfoBattle*)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo = (struct BattleMsgData*)(&sBattleBuffersTransferData[4]);
|
||||
stringInfo->currentMove = gCurrentMove;
|
||||
stringInfo->originallyUsedMove = gChosenMove;
|
||||
stringInfo->lastItem = gLastUsedItem;
|
||||
@@ -1137,7 +1137,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
|
||||
stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
|
||||
}
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
|
||||
@@ -1181,7 +1181,7 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8 *arg4)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -1191,7 +1191,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 ability
|
||||
sBattleBuffersTransferData[3] = abilityId;
|
||||
for (i = 0; i < 3; i++)
|
||||
sBattleBuffersTransferData[4 + i] = arg4[i];
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // but only 7 bytes were written
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
|
||||
}
|
||||
|
||||
void BtlController_EmitCmd23(u8 bufferId)
|
||||
@@ -1449,26 +1449,26 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
|
||||
sBattleBuffersTransferData[1] = arg2 & 0x7F;
|
||||
sBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * 6); i++)
|
||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
|
||||
sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitCmd49(u8 bufferId)
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_49;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_49;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_49;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_49;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_HIDEPARTYSTATUSSUMMARY;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_HIDEPARTYSTATUSSUMMARY;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_HIDEPARTYSTATUSSUMMARY;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_HIDEPARTYSTATUSSUMMARY;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitCmd50(u8 bufferId)
|
||||
void BtlController_EmitEndBounceEffect(u8 bufferId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_50;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_50;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_50;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_50;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_ENDBOUNCE;
|
||||
sBattleBuffersTransferData[1] = CONTROLLER_ENDBOUNCE;
|
||||
sBattleBuffersTransferData[2] = CONTROLLER_ENDBOUNCE;
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_ENDBOUNCE;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
@@ -1511,12 +1511,12 @@ void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
void BtlController_EmitCmd55(u8 bufferId, u8 arg1)
|
||||
void BtlController_EmitCmd55(u8 bufferId, u8 battleOutcome)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_55;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b;
|
||||
sBattleBuffersTransferData[1] = battleOutcome;
|
||||
sBattleBuffersTransferData[2] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[3] = gSaveBlock2Ptr->frontier.field_CA9_b;
|
||||
sBattleBuffersTransferData[5] = sBattleBuffersTransferData[4] = sub_81850DC(&sBattleBuffersTransferData[6]);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[4] + 6);
|
||||
}
|
||||
|
||||
@@ -16,14 +16,15 @@ extern const struct CompressedSpriteSheet gTrainerBackPicTable[];
|
||||
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
|
||||
extern const union AffineAnimCmd *const gUnknown_082FF618[];
|
||||
extern const union AffineAnimCmd *const gUnknown_082FF694[];
|
||||
extern const union AnimCmd *const gUnknown_082FF70C[];
|
||||
extern const union AnimCmd *const gPlayerMonSpriteAnimsTable[];
|
||||
extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
|
||||
extern const union AnimCmd *const *const gUnknown_0830536C[];
|
||||
extern const u8 gFacilityClassToPicIndex[];
|
||||
|
||||
// Static type declarations
|
||||
|
||||
struct BattleDomeCard {
|
||||
struct BattleDomeCard
|
||||
{
|
||||
u8 *frames;
|
||||
struct SpriteFrameImage *images;
|
||||
u16 paletteTag;
|
||||
@@ -41,10 +42,12 @@ static EWRAM_DATA struct BattleDomeCard gUnknown_0203CD04[8] = {};
|
||||
// .rodata
|
||||
|
||||
static const struct BattleDomeCard gUnknown_0860B058 = {};
|
||||
static const struct OamData gUnknown_0860B064 = {
|
||||
static const struct OamData gUnknown_0860B064 =
|
||||
{
|
||||
.size = 3
|
||||
};
|
||||
static const struct OamData gUnknown_0860B06C = {
|
||||
static const struct OamData gUnknown_0860B06C =
|
||||
{
|
||||
.affineMode = 1, .size = 3
|
||||
};
|
||||
|
||||
@@ -158,7 +161,7 @@ static void uns_builder_assign_animtable1(bool8 isTrainer)
|
||||
{
|
||||
if (!isTrainer)
|
||||
{
|
||||
gUnknown_0203CCEC.anims = gUnknown_082FF70C;
|
||||
gUnknown_0203CCEC.anims = gPlayerMonSpriteAnimsTable;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+104
-103
@@ -67,48 +67,48 @@ static void sub_805D7EC(struct Sprite *sprite);
|
||||
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId);
|
||||
static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId);
|
||||
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId);
|
||||
static void ClearSpritesBankHealthboxAnimData(void);
|
||||
static void ClearSpritesBattlerHealthboxAnimData(void);
|
||||
|
||||
// const rom data
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C0D0 =
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_SinglesPlayerHealthbox =
|
||||
{
|
||||
gUnknown_08C1F1C8, 0x1000, TAG_HEALTHBOX_PLAYER1_TILE
|
||||
};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C0D8 =
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_SinglesOpponentHealthbox =
|
||||
{
|
||||
gUnknown_08C1F46C, 0x1000, TAG_HEALTHBOX_OPPONENT1_TILE
|
||||
};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C0E0[2] =
|
||||
static const struct CompressedSpriteSheet sSpriteSheets_DoublesPlayerHealthbox[2] =
|
||||
{
|
||||
{gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER1_TILE},
|
||||
{gUnknown_08C1F5E8, 0x800, TAG_HEALTHBOX_PLAYER2_TILE}
|
||||
};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C0F0[2] =
|
||||
static const struct CompressedSpriteSheet sSpriteSheets_DoublesOpponentHealthbox[2] =
|
||||
{
|
||||
{gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT1_TILE},
|
||||
{gUnknown_08C1F76C, 0x800, TAG_HEALTHBOX_OPPONENT2_TILE}
|
||||
};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C100 =
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_SafariHealthbox =
|
||||
{
|
||||
gUnknown_08C1F8E8, 0x1000, TAG_HEALTHBOX_SAFARI_TILE
|
||||
};
|
||||
|
||||
static const struct CompressedSpriteSheet gUnknown_0832C108[MAX_BATTLERS_COUNT] =
|
||||
static const struct CompressedSpriteSheet sSpriteSheets_HealthBar[MAX_BATTLERS_COUNT] =
|
||||
{
|
||||
{gBlankGfxCompressed, 0x0100, 0xd704},
|
||||
{gBlankGfxCompressed, 0x0120, 0xd705},
|
||||
{gBlankGfxCompressed, 0x0100, 0xd706},
|
||||
{gBlankGfxCompressed, 0x0120, 0xd707}
|
||||
{gBlankGfxCompressed, 0x0100, TAG_HEALTHBAR_PLAYER1_TILE},
|
||||
{gBlankGfxCompressed, 0x0120, TAG_HEALTHBAR_OPPONENT1_TILE},
|
||||
{gBlankGfxCompressed, 0x0100, TAG_HEALTHBAR_PLAYER2_TILE},
|
||||
{gBlankGfxCompressed, 0x0120, TAG_HEALTHBAR_OPPONENT2_TILE}
|
||||
};
|
||||
|
||||
static const struct SpritePalette gUnknown_0832C128[2] =
|
||||
static const struct SpritePalette sSpritePalettes_HealthBoxHealthBar[2] =
|
||||
{
|
||||
{gBattleInterface_BallStatusBarPal, TAG_HEALTHBOX_PAL},
|
||||
{gBattleInterface_BallDisplayPal, 0xd704}
|
||||
{gBattleInterface_BallDisplayPal, TAG_HEALTHBAR_PAL}
|
||||
};
|
||||
|
||||
// code
|
||||
@@ -411,35 +411,35 @@ void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status)
|
||||
|
||||
#define tBattlerId data[0]
|
||||
|
||||
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument)
|
||||
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId, u16 argument)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
|
||||
{
|
||||
gBattleMonForms[activeBank] = (argument & ~(0x80));
|
||||
gBattleMonForms[activeBattler] = (argument & ~(0x80));
|
||||
return TRUE;
|
||||
}
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBank].behindSubstitute
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
|
||||
&& !ShouldAnimBeDoneRegardlessOfSubsitute(tableId))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBank].behindSubstitute
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
|
||||
&& tableId == B_ANIM_SUBSTITUTE_FADE
|
||||
&& gSprites[gBattlerSpriteIds[activeBank]].invisible)
|
||||
&& gSprites[gBattlerSpriteIds[activeBattler]].invisible)
|
||||
{
|
||||
LoadBattleMonGfxAndAnimate(activeBank, TRUE, gBattlerSpriteIds[activeBank]);
|
||||
ClearBehindSubstituteBit(activeBank);
|
||||
LoadBattleMonGfxAndAnimate(activeBattler, TRUE, gBattlerSpriteIds[activeBattler]);
|
||||
ClearBehindSubstituteBit(activeBattler);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gBattleAnimAttacker = atkBank;
|
||||
gBattleAnimTarget = defBank;
|
||||
gBattleAnimAttacker = atkBattler;
|
||||
gBattleAnimTarget = defBattler;
|
||||
gBattleSpritesDataPtr->animationData->animArg = argument;
|
||||
LaunchBattleAnimation(gBattleAnims_VariousTable, tableId, FALSE);
|
||||
taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10);
|
||||
gTasks[taskId].tBattlerId = activeBank;
|
||||
gTasks[taskId].tBattlerId = activeBattler;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1;
|
||||
|
||||
return FALSE;
|
||||
@@ -475,15 +475,15 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
|
||||
|
||||
#define tBattlerId data[0]
|
||||
|
||||
void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId)
|
||||
void InitAndLaunchSpecialAnimation(u8 activeBattler, u8 atkBattler, u8 defBattler, u8 tableId)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
gBattleAnimAttacker = atkBank;
|
||||
gBattleAnimTarget = defBank;
|
||||
gBattleAnimAttacker = atkBattler;
|
||||
gBattleAnimTarget = defBattler;
|
||||
LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE);
|
||||
taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10);
|
||||
gTasks[taskId].tBattlerId = activeBank;
|
||||
gTasks[taskId].tBattlerId = activeBattler;
|
||||
gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1;
|
||||
}
|
||||
|
||||
@@ -499,7 +499,7 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
|
||||
|
||||
#undef tBattlerId
|
||||
|
||||
// great function to include newly added moves that don't have animation yet
|
||||
// Great function to include newly added moves that don't have animation yet.
|
||||
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -679,29 +679,30 @@ void FreeTrainerFrontPicPalette(u16 frontPicId)
|
||||
FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag);
|
||||
}
|
||||
|
||||
void sub_805DFFC(void)
|
||||
// Unused.
|
||||
void BattleLoadAllHealthBoxesGfxAtOnce(void)
|
||||
{
|
||||
u8 numberOfBanks = 0;
|
||||
u8 numberOfBattlers = 0;
|
||||
u8 i;
|
||||
|
||||
LoadSpritePalette(&gUnknown_0832C128[0]);
|
||||
LoadSpritePalette(&gUnknown_0832C128[1]);
|
||||
LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]);
|
||||
LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]);
|
||||
if (!IsDoubleBattle())
|
||||
{
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0D0);
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0D8);
|
||||
numberOfBanks = 2;
|
||||
LoadCompressedObjectPic(&sSpriteSheet_SinglesPlayerHealthbox);
|
||||
LoadCompressedObjectPic(&sSpriteSheet_SinglesOpponentHealthbox);
|
||||
numberOfBattlers = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0E0[0]);
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0E0[1]);
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0F0[0]);
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0F0[1]);
|
||||
numberOfBanks = 4;
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[0]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[1]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[0]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[1]);
|
||||
numberOfBattlers = 4;
|
||||
}
|
||||
for (i = 0; i < numberOfBanks; i++)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[i]]);
|
||||
for (i = 0; i < numberOfBattlers; i++)
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[i]]);
|
||||
}
|
||||
|
||||
bool8 BattleLoadAllHealthBoxesGfx(u8 state)
|
||||
@@ -712,45 +713,45 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
|
||||
{
|
||||
if (state == 1)
|
||||
{
|
||||
LoadSpritePalette(&gUnknown_0832C128[0]);
|
||||
LoadSpritePalette(&gUnknown_0832C128[1]);
|
||||
LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]);
|
||||
LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[1]);
|
||||
}
|
||||
else if (!IsDoubleBattle())
|
||||
{
|
||||
if (state == 2)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C100);
|
||||
LoadCompressedObjectPic(&sSpriteSheet_SafariHealthbox);
|
||||
else
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0D0);
|
||||
LoadCompressedObjectPic(&sSpriteSheet_SinglesPlayerHealthbox);
|
||||
}
|
||||
else if (state == 3)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0D8);
|
||||
LoadCompressedObjectPic(&sSpriteSheet_SinglesOpponentHealthbox);
|
||||
else if (state == 4)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[0]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[0]]);
|
||||
else if (state == 5)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[1]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[1]]);
|
||||
else
|
||||
retVal = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (state == 2)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0E0[0]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[0]);
|
||||
else if (state == 3)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0E0[1]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesPlayerHealthbox[1]);
|
||||
else if (state == 4)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0F0[0]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[0]);
|
||||
else if (state == 5)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C0F0[1]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_DoublesOpponentHealthbox[1]);
|
||||
else if (state == 6)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[0]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[0]]);
|
||||
else if (state == 7)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[1]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[1]]);
|
||||
else if (state == 8)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[2]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[2]]);
|
||||
else if (state == 9)
|
||||
LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[3]]);
|
||||
LoadCompressedObjectPic(&sSpriteSheets_HealthBar[gBattlerPositions[3]]);
|
||||
else
|
||||
retVal = TRUE;
|
||||
}
|
||||
@@ -771,7 +772,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
|
||||
switch (*state1)
|
||||
{
|
||||
case 0:
|
||||
ClearSpritesBankHealthboxAnimData();
|
||||
ClearSpritesBattlerHealthboxAnimData();
|
||||
(*state1)++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -849,7 +850,7 @@ void ClearSpritesHealthboxAnimData(void)
|
||||
memset(gBattleSpritesDataPtr->animationData, 0, sizeof(struct BattleAnimationInfo));
|
||||
}
|
||||
|
||||
static void ClearSpritesBankHealthboxAnimData(void)
|
||||
static void ClearSpritesBattlerHealthboxAnimData(void)
|
||||
{
|
||||
ClearSpritesHealthboxAnimData();
|
||||
memset(gBattleSpritesDataPtr->battlerData, 0, sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT);
|
||||
@@ -868,7 +869,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId)
|
||||
gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
|
||||
}
|
||||
|
||||
void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform)
|
||||
{
|
||||
u16 paletteOffset;
|
||||
u32 personalityValue;
|
||||
@@ -878,16 +879,16 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
|
||||
|
||||
if (notTransform)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bankAtk]], gBattleSpritesDataPtr->animationData->animArg);
|
||||
paletteOffset = 0x100 + bankAtk * 16;
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
|
||||
paletteOffset = 0x100 + battlerAtk * 16;
|
||||
LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32);
|
||||
gBattleMonForms[bankAtk] = gBattleSpritesDataPtr->animationData->animArg;
|
||||
if (gBattleSpritesDataPtr->battlerData[bankAtk].transformSpecies != SPECIES_NONE)
|
||||
gBattleMonForms[battlerAtk] = gBattleSpritesDataPtr->animationData->animArg;
|
||||
if (gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies != SPECIES_NONE)
|
||||
{
|
||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
|
||||
}
|
||||
gSprites[gBattlerSpriteIds[bankAtk]].pos1.y = GetBattlerSpriteDefault_Y(bankAtk);
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -909,48 +910,48 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
|
||||
}
|
||||
else
|
||||
{
|
||||
position = GetBattlerPosition(bankAtk);
|
||||
position = GetBattlerPosition(battlerAtk);
|
||||
|
||||
if (GetBattlerSide(bankDef) == B_SIDE_OPPONENT)
|
||||
targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankDef]], MON_DATA_SPECIES);
|
||||
if (GetBattlerSide(battlerDef) == B_SIDE_OPPONENT)
|
||||
targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES);
|
||||
else
|
||||
targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankDef]], MON_DATA_SPECIES);
|
||||
targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerDef]], MON_DATA_SPECIES);
|
||||
|
||||
if (GetBattlerSide(bankAtk) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
|
||||
{
|
||||
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_PERSONALITY);
|
||||
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_OT_ID);
|
||||
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||
|
||||
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
|
||||
gMonSpritesGfxPtr->sprites[position],
|
||||
targetSpecies,
|
||||
gTransformedPersonalities[bankAtk]);
|
||||
gTransformedPersonalities[battlerAtk]);
|
||||
}
|
||||
else
|
||||
{
|
||||
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_PERSONALITY);
|
||||
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_OT_ID);
|
||||
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||
|
||||
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies],
|
||||
gMonSpritesGfxPtr->sprites[position],
|
||||
targetSpecies,
|
||||
gTransformedPersonalities[bankAtk]);
|
||||
gTransformedPersonalities[battlerAtk]);
|
||||
}
|
||||
}
|
||||
|
||||
src = gMonSpritesGfxPtr->sprites[position];
|
||||
dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[bankAtk]].oam.tileNum * 32);
|
||||
dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
|
||||
DmaCopy32(3, src, dst, 0x800);
|
||||
paletteOffset = 0x100 + bankAtk * 16;
|
||||
paletteOffset = 0x100 + battlerAtk * 16;
|
||||
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
|
||||
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
|
||||
LoadPalette(gDecompressionBuffer, paletteOffset, 32);
|
||||
|
||||
if (targetSpecies == SPECIES_CASTFORM)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[bankAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
|
||||
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[bankDef] * 16, paletteOffset, 32);
|
||||
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
|
||||
}
|
||||
|
||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||
@@ -958,12 +959,12 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
|
||||
|
||||
if (!IsContest())
|
||||
{
|
||||
gBattleSpritesDataPtr->battlerData[bankAtk].transformSpecies = targetSpecies;
|
||||
gBattleMonForms[bankAtk] = gBattleMonForms[bankDef];
|
||||
gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies = targetSpecies;
|
||||
gBattleMonForms[battlerAtk] = gBattleMonForms[battlerDef];
|
||||
}
|
||||
|
||||
gSprites[gBattlerSpriteIds[bankAtk]].pos1.y = GetBattlerSpriteDefault_Y(bankAtk);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bankAtk]], gBattleMonForms[bankAtk]);
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1068,11 +1069,11 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId)
|
||||
|
||||
void BattleStopLowHpSound(void)
|
||||
{
|
||||
u8 playerBank = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
u8 playerBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
|
||||
gBattleSpritesDataPtr->battlerData[playerBank].lowHpSong = 0;
|
||||
gBattleSpritesDataPtr->battlerData[playerBattler].lowHpSong = 0;
|
||||
if (IsDoubleBattle())
|
||||
gBattleSpritesDataPtr->battlerData[playerBank ^ BIT_FLANK].lowHpSong = 0;
|
||||
gBattleSpritesDataPtr->battlerData[playerBattler ^ BIT_FLANK].lowHpSong = 0;
|
||||
|
||||
m4aSongNumStop(SE_HINSI);
|
||||
}
|
||||
@@ -1085,19 +1086,19 @@ u8 GetMonHPBarLevel(struct Pokemon *mon)
|
||||
return GetHPBarLevel(hp, maxHP);
|
||||
}
|
||||
|
||||
void sub_805EAE8(void)
|
||||
void HandleBattleLowHpMusicChange(void)
|
||||
{
|
||||
if (gMain.inBattle)
|
||||
{
|
||||
u8 playerBank1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
u8 playerBank2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
u8 bank1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBank1]);
|
||||
u8 bank2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBank2]);
|
||||
u8 playerBattler1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
u8 playerBattler2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
u8 battler1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler1]);
|
||||
u8 battler2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBattler2]);
|
||||
|
||||
if (GetMonData(&gPlayerParty[bank1PartyId], MON_DATA_HP) != 0)
|
||||
HandleLowHpMusicChange(&gPlayerParty[bank1PartyId], playerBank1);
|
||||
if (IsDoubleBattle() && GetMonData(&gPlayerParty[bank2PartyId], MON_DATA_HP) != 0)
|
||||
HandleLowHpMusicChange(&gPlayerParty[bank2PartyId], playerBank2);
|
||||
if (GetMonData(&gPlayerParty[battler1PartyId], MON_DATA_HP) != 0)
|
||||
HandleLowHpMusicChange(&gPlayerParty[battler1PartyId], playerBattler1);
|
||||
if (IsDoubleBattle() && GetMonData(&gPlayerParty[battler2PartyId], MON_DATA_HP) != 0)
|
||||
HandleLowHpMusicChange(&gPlayerParty[battler2PartyId], playerBattler2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1147,14 +1148,14 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
|
||||
{
|
||||
bool8 invisible = FALSE;
|
||||
u8 battlerId = shadowSprite->tBattlerId;
|
||||
struct Sprite *bankSprite = &gSprites[gBattlerSpriteIds[battlerId]];
|
||||
struct Sprite *battlerSprite = &gSprites[gBattlerSpriteIds[battlerId]];
|
||||
|
||||
if (!bankSprite->inUse || !IsBattlerSpritePresent(battlerId))
|
||||
if (!battlerSprite->inUse || !IsBattlerSpritePresent(battlerId))
|
||||
{
|
||||
shadowSprite->callback = SpriteCB_SetInvisible;
|
||||
return;
|
||||
}
|
||||
if (gAnimScriptActive || bankSprite->invisible)
|
||||
if (gAnimScriptActive || battlerSprite->invisible)
|
||||
invisible = TRUE;
|
||||
else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
|
||||
&& gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
|
||||
@@ -1163,8 +1164,8 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
|
||||
if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
|
||||
invisible = TRUE;
|
||||
|
||||
shadowSprite->pos1.x = bankSprite->pos1.x;
|
||||
shadowSprite->pos2.x = bankSprite->pos2.x;
|
||||
shadowSprite->pos1.x = battlerSprite->pos1.x;
|
||||
shadowSprite->pos2.x = battlerSprite->pos2.x;
|
||||
shadowSprite->invisible = invisible;
|
||||
}
|
||||
|
||||
@@ -1177,7 +1178,7 @@ void SpriteCB_SetInvisible(struct Sprite *sprite)
|
||||
|
||||
void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
|
||||
{
|
||||
// The player's shadow is never seen
|
||||
// The player's shadow is never seen.
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
return;
|
||||
|
||||
@@ -1270,7 +1271,7 @@ void FreeMonSpritesGfx(void)
|
||||
FREE_AND_SET_NULL(gMonSpritesGfxPtr);
|
||||
}
|
||||
|
||||
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon)
|
||||
bool32 ShouldPlayNormalMonCry(struct Pokemon *mon)
|
||||
{
|
||||
s16 hp, maxHP;
|
||||
s32 barLevel;
|
||||
|
||||
+467
-444
File diff suppressed because it is too large
Load Diff
+277
-254
File diff suppressed because it is too large
Load Diff
+679
-138
File diff suppressed because it is too large
Load Diff
@@ -348,7 +348,7 @@ static void Task_CloseTrainerHillRecordsOnButton(u8 taskId)
|
||||
|
||||
static void Task_BeginPaletteFade(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_ExitTrainerHillRecords;
|
||||
}
|
||||
|
||||
@@ -495,7 +495,7 @@ static void CB2_ShowTrainerHillRecords(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "text.h"
|
||||
#include "sound.h"
|
||||
#include "pokedex.h"
|
||||
@@ -40,6 +41,7 @@
|
||||
#include "constants/battle_string_ids.h"
|
||||
#include "battle_setup.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
@@ -67,7 +69,6 @@ extern bool8 sub_81B1250(void); // ?
|
||||
extern bool8 InBattlePike(void);
|
||||
extern bool8 InBattlePyramid(void);
|
||||
extern u16 GetBattlePyramidPickupItemId(void);
|
||||
extern u8 Overworld_GetMapTypeOfSaveblockLocation(void);
|
||||
extern u8 sub_813B21C(void);
|
||||
extern u16 get_unknown_box_id(void);
|
||||
|
||||
@@ -185,10 +186,10 @@ static void atk5B_yesnoboxstoplearningmove(void);
|
||||
static void atk5C_hitanimation(void);
|
||||
static void atk5D_getmoneyreward(void);
|
||||
static void atk5E(void);
|
||||
static void atk5F(void);
|
||||
static void atk5F_swapattackerwithtarget(void);
|
||||
static void atk60_incrementgamestat(void);
|
||||
static void atk61_drawpartystatussummary(void);
|
||||
static void atk62(void);
|
||||
static void atk62_hidepartystatussummary(void);
|
||||
static void atk63_jumptorandomattack(void);
|
||||
static void atk64_statusanimation(void);
|
||||
static void atk65_status2animation(void);
|
||||
@@ -327,7 +328,7 @@ static void atkE9_setweatherballtype(void);
|
||||
static void atkEA_tryrecycleitem(void);
|
||||
static void atkEB_settypetoterrain(void);
|
||||
static void atkEC_pursuitrelated(void);
|
||||
static void atkEF_snatchsetbanks(void);
|
||||
static void atkEF_snatchsetbattlers(void);
|
||||
static void atkEE_removelightscreenreflect(void);
|
||||
static void atkEF_handleballthrow(void);
|
||||
static void atkF0_givecaughtmon(void);
|
||||
@@ -437,10 +438,10 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
atk5C_hitanimation,
|
||||
atk5D_getmoneyreward,
|
||||
atk5E,
|
||||
atk5F,
|
||||
atk5F_swapattackerwithtarget,
|
||||
atk60_incrementgamestat,
|
||||
atk61_drawpartystatussummary,
|
||||
atk62,
|
||||
atk62_hidepartystatussummary,
|
||||
atk63_jumptorandomattack,
|
||||
atk64_statusanimation,
|
||||
atk65_status2animation,
|
||||
@@ -579,7 +580,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
atkEA_tryrecycleitem,
|
||||
atkEB_settypetoterrain,
|
||||
atkEC_pursuitrelated,
|
||||
atkEF_snatchsetbanks,
|
||||
atkEF_snatchsetbattlers,
|
||||
atkEE_removelightscreenreflect,
|
||||
atkEF_handleballthrow,
|
||||
atkF0_givecaughtmon,
|
||||
@@ -989,11 +990,11 @@ static void atk00_attackcanceler(void)
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if ((gProtectStructs[gBattleTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
|
||||
if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
|
||||
{
|
||||
PressurePPLose(gBattlerAttacker, gBattleTurnOrder[i], MOVE_SNATCH);
|
||||
gProtectStructs[gBattleTurnOrder[i]].stealMove = 0;
|
||||
gBattleScripting.battler = gBattleTurnOrder[i];
|
||||
PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH);
|
||||
gProtectStructs[gBattlerByTurnOrder[i]].stealMove = 0;
|
||||
gBattleScripting.battler = gBattlerByTurnOrder[i];
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_SnatchedMove;
|
||||
return;
|
||||
@@ -1172,7 +1173,7 @@ static void atk01_accuracycheck(void)
|
||||
calc = (calc * 130) / 100; // 1.3 compound eyes boost
|
||||
if (WEATHER_HAS_EFFECT && gBattleMons[gBattlerTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY)
|
||||
calc = (calc * 80) / 100; // 1.2 sand veil loss
|
||||
if (gBattleMons[gBattlerAttacker].ability == ABILITY_HUSTLE && type < 9)
|
||||
if (gBattleMons[gBattlerAttacker].ability == ABILITY_HUSTLE && IS_TYPE_PHYSICAL(type))
|
||||
calc = (calc * 80) / 100; // 1.2 hustle loss
|
||||
|
||||
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
|
||||
@@ -1944,7 +1945,7 @@ static void atk0C_datahpupdate(void)
|
||||
if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000))
|
||||
gSpecialStatuses[gActiveBattler].dmg = gHpDealt;
|
||||
|
||||
if (IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
|
||||
if (IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
|
||||
{
|
||||
gProtectStructs[gActiveBattler].physicalDmg = gHpDealt;
|
||||
gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt;
|
||||
@@ -1959,7 +1960,7 @@ static void atk0C_datahpupdate(void)
|
||||
gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget;
|
||||
}
|
||||
}
|
||||
else if (!IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000))
|
||||
else if (!IS_TYPE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000))
|
||||
{
|
||||
gProtectStructs[gActiveBattler].specialDmg = gHpDealt;
|
||||
gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt;
|
||||
@@ -2216,7 +2217,7 @@ u8 GetBattlerTurnOrderNum(u8 battlerId)
|
||||
s32 i;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleTurnOrder[i] == battlerId)
|
||||
if (gBattlerByTurnOrder[i] == battlerId)
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
@@ -3112,7 +3113,7 @@ static void atk1E_jumpifability(void)
|
||||
|
||||
if (gBattlescriptCurrInstr[1] == BS_ATTACKER_SIDE)
|
||||
{
|
||||
battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0);
|
||||
battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BATTLER_SIDE, gBattlerAttacker, ability, 0, 0);
|
||||
if (battlerId)
|
||||
{
|
||||
gLastUsedAbility = ability;
|
||||
@@ -3448,7 +3449,7 @@ static void atk23_getexp(void)
|
||||
if (gBattleControllerExecFlags == 0)
|
||||
{
|
||||
gActiveBattler = gBattleStruct->expGetterBattlerId;
|
||||
if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP)
|
||||
if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELED_UP)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId)
|
||||
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
|
||||
@@ -3534,7 +3535,7 @@ static void atk24(void)
|
||||
if (gBattleControllerExecFlags)
|
||||
return;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
@@ -4648,14 +4649,14 @@ static void atk49_moveend(void)
|
||||
BtlController_EmitSpriteInvisibility(0, FALSE);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
gStatuses3[gBattlerAttacker] &= ~(STATUS3_SEMI_INVULNERABLE);
|
||||
gSpecialStatuses[gBattlerAttacker].restoredBankSprite = 1;
|
||||
gSpecialStatuses[gBattlerAttacker].restoredBattlerSprite = 1;
|
||||
gBattleScripting.atk49_state++;
|
||||
return;
|
||||
}
|
||||
gBattleScripting.atk49_state++;
|
||||
break;
|
||||
case 10: // make target sprite visible
|
||||
if (!gSpecialStatuses[gBattlerTarget].restoredBankSprite && gBattlerTarget < gBattlersCount
|
||||
if (!gSpecialStatuses[gBattlerTarget].restoredBattlerSprite && gBattlerTarget < gBattlersCount
|
||||
&& !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
|
||||
{
|
||||
gActiveBattler = gBattlerTarget;
|
||||
@@ -4676,12 +4677,12 @@ static void atk49_moveend(void)
|
||||
gBattleScripting.atk49_state++;
|
||||
break;
|
||||
case 14: // This case looks interesting, although I am not certain what it does. Probably fine tunes edge cases.
|
||||
if (gHitMarker & HITMARKER_PURSUIT_TRAP)
|
||||
if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET)
|
||||
{
|
||||
gActiveBattler = gBattlerAttacker;
|
||||
gBattlerAttacker = gBattlerTarget;
|
||||
gBattlerTarget = gActiveBattler;
|
||||
gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
|
||||
gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET);
|
||||
}
|
||||
if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
|
||||
{
|
||||
@@ -5034,7 +5035,7 @@ static void atk4F_jumpifcantswitch(void)
|
||||
party = gPlayerParty;
|
||||
|
||||
i = 0;
|
||||
if (sub_806D82C(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
|
||||
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
|
||||
i = 3;
|
||||
}
|
||||
else
|
||||
@@ -5055,7 +5056,7 @@ static void atk4F_jumpifcantswitch(void)
|
||||
party = gPlayerParty;
|
||||
|
||||
i = 0;
|
||||
if (sub_806D82C(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
|
||||
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
|
||||
i = 3;
|
||||
}
|
||||
|
||||
@@ -5144,7 +5145,7 @@ static void sub_804CF10(u8 arg0)
|
||||
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
|
||||
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
|
||||
|
||||
BtlController_EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
|
||||
BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
}
|
||||
|
||||
@@ -5167,7 +5168,7 @@ static void atk50_openpartyscreen(void)
|
||||
{
|
||||
if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
|
||||
{
|
||||
if (sub_80423F4(gActiveBattler, 6, 6))
|
||||
if (HasNoMonsToSwitch(gActiveBattler, 6, 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5196,7 +5197,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[0] & hitmarkerFaintBits)
|
||||
{
|
||||
gActiveBattler = 0;
|
||||
if (sub_80423F4(0, 6, 6))
|
||||
if (HasNoMonsToSwitch(0, 6, 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5218,7 +5219,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
|
||||
{
|
||||
gActiveBattler = 2;
|
||||
if (sub_80423F4(2, 6, 6))
|
||||
if (HasNoMonsToSwitch(2, 6, 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5239,7 +5240,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[1] & hitmarkerFaintBits)
|
||||
{
|
||||
gActiveBattler = 1;
|
||||
if (sub_80423F4(1, 6, 6))
|
||||
if (HasNoMonsToSwitch(1, 6, 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5261,7 +5262,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
|
||||
{
|
||||
gActiveBattler = 3;
|
||||
if (sub_80423F4(3, 6, 6))
|
||||
if (HasNoMonsToSwitch(3, 6, 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5324,7 +5325,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
|
||||
{
|
||||
gActiveBattler = 2;
|
||||
if (sub_80423F4(2, gBattleBufferB[0][1], 6))
|
||||
if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5340,7 +5341,7 @@ static void atk50_openpartyscreen(void)
|
||||
if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
|
||||
{
|
||||
gActiveBattler = 3;
|
||||
if (sub_80423F4(3, gBattleBufferB[1][1], 6))
|
||||
if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], 6))
|
||||
{
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
|
||||
@@ -5383,16 +5384,16 @@ static void atk50_openpartyscreen(void)
|
||||
else
|
||||
{
|
||||
if (gBattlescriptCurrInstr[1] & 0x80)
|
||||
hitmarkerFaintBits = 0; // used here as the caseId for the EmitChoose function
|
||||
hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function.
|
||||
else
|
||||
hitmarkerFaintBits = 1;
|
||||
hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON;
|
||||
|
||||
battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
|
||||
if (gSpecialStatuses[battlerId].flag40)
|
||||
{
|
||||
gBattlescriptCurrInstr += 6;
|
||||
}
|
||||
else if (sub_80423F4(battlerId, 6, 6))
|
||||
else if (HasNoMonsToSwitch(battlerId, 6, 6))
|
||||
{
|
||||
gActiveBattler = battlerId;
|
||||
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
|
||||
@@ -5556,7 +5557,7 @@ static void atk52_switchineffects(void)
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleTurnOrder[i] == gActiveBattler)
|
||||
if (gBattlerByTurnOrder[i] == gActiveBattler)
|
||||
gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER;
|
||||
}
|
||||
|
||||
@@ -5687,7 +5688,7 @@ static void atk5A_yesnoboxlearnmove(void)
|
||||
{
|
||||
case 0:
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
gBattleScripting.learnMoveState++;
|
||||
gBattleCommunication[CURSOR_POSITION] = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
@@ -5713,7 +5714,7 @@ static void atk5A_yesnoboxlearnmove(void)
|
||||
if (gBattleCommunication[1] == 0)
|
||||
{
|
||||
HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattleScripting.learnMoveState++;
|
||||
}
|
||||
else
|
||||
@@ -5804,7 +5805,7 @@ static void atk5B_yesnoboxstoplearningmove(void)
|
||||
{
|
||||
case 0:
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
gBattleScripting.learnMoveState++;
|
||||
gBattleCommunication[CURSOR_POSITION] = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
@@ -5871,7 +5872,7 @@ static u32 GetTrainerMoneyToGive(u16 trainerId)
|
||||
u32 lastMonLevel = 0;
|
||||
u32 moneyReward = 0;
|
||||
|
||||
if (trainerId == SECRET_BASE_OPPONENT)
|
||||
if (trainerId == TRAINER_SECRET_BASE)
|
||||
{
|
||||
moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier;
|
||||
}
|
||||
@@ -5950,7 +5951,7 @@ static void atk5E(void)
|
||||
if (gBattleControllerExecFlags == 0)
|
||||
{
|
||||
s32 i;
|
||||
struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBattler][4];
|
||||
struct BattlePokemon *bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBattler][4];
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gBattleMons[gActiveBattler].moves[i] = bufferPoke->moves[i];
|
||||
@@ -5962,16 +5963,16 @@ static void atk5E(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void atk5F(void)
|
||||
static void atk5F_swapattackerwithtarget(void)
|
||||
{
|
||||
gActiveBattler = gBattlerAttacker;
|
||||
gBattlerAttacker = gBattlerTarget;
|
||||
gBattlerTarget = gActiveBattler;
|
||||
|
||||
if (gHitMarker & HITMARKER_PURSUIT_TRAP)
|
||||
gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
|
||||
if (gHitMarker & HITMARKER_SWAP_ATTACKER_TARGET)
|
||||
gHitMarker &= ~(HITMARKER_SWAP_ATTACKER_TARGET);
|
||||
else
|
||||
gHitMarker |= HITMARKER_PURSUIT_TRAP;
|
||||
gHitMarker |= HITMARKER_SWAP_ATTACKER_TARGET;
|
||||
|
||||
gBattlescriptCurrInstr++;
|
||||
}
|
||||
@@ -5987,8 +5988,8 @@ static void atk60_incrementgamestat(void)
|
||||
static void atk61_drawpartystatussummary(void)
|
||||
{
|
||||
s32 i;
|
||||
struct Pokemon* party;
|
||||
struct HpAndStatus hpStatuses[6];
|
||||
struct Pokemon *party;
|
||||
struct HpAndStatus hpStatuses[PARTY_SIZE];
|
||||
|
||||
if (gBattleControllerExecFlags)
|
||||
return;
|
||||
@@ -6000,7 +6001,7 @@ static void atk61_drawpartystatussummary(void)
|
||||
else
|
||||
party = gEnemyParty;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE
|
||||
|| GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
|
||||
@@ -6021,10 +6022,10 @@ static void atk61_drawpartystatussummary(void)
|
||||
gBattlescriptCurrInstr += 2;
|
||||
}
|
||||
|
||||
static void atk62(void)
|
||||
static void atk62_hidepartystatussummary(void)
|
||||
{
|
||||
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||
BtlController_EmitCmd49(0);
|
||||
BtlController_EmitHidePartyStatusSummary(0);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
|
||||
gBattlescriptCurrInstr += 2;
|
||||
@@ -6100,7 +6101,7 @@ static void atk67_yesnobox(void)
|
||||
{
|
||||
case 0:
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
gBattleCommunication[0]++;
|
||||
gBattleCommunication[CURSOR_POSITION] = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
@@ -6631,7 +6632,7 @@ static void atk76_various(void)
|
||||
gBattleCommunication[0] = 0;
|
||||
break;
|
||||
case VARIOUS_RESET_INTIMIDATE_TRACE_BITS:
|
||||
gSpecialStatuses[gActiveBattler].intimidatedPoke = 0;
|
||||
gSpecialStatuses[gActiveBattler].intimidatedMon = 0;
|
||||
gSpecialStatuses[gActiveBattler].traced = 0;
|
||||
break;
|
||||
case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP:
|
||||
@@ -6720,7 +6721,7 @@ static void atk76_various(void)
|
||||
break;
|
||||
case 16:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0x16);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0x16);
|
||||
break;
|
||||
case 17:
|
||||
if (IsTextPrinterActive(0x16))
|
||||
@@ -7507,7 +7508,7 @@ static void atk8F_forcerandomswitch(void)
|
||||
else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
|| (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000))
|
||||
{
|
||||
if (sub_806D82C(GetBattlerMultiplayerId(gBattlerTarget)) == 1)
|
||||
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gBattlerTarget)) == 1)
|
||||
{
|
||||
firstMonId = 3;
|
||||
lastMonId = 6;
|
||||
@@ -8125,7 +8126,7 @@ static void atk9E_metronome(void)
|
||||
s32 i;
|
||||
|
||||
gCurrentMove = (Random() & 0x1FF) + 1;
|
||||
if (gCurrentMove > LAST_MOVE_INDEX)
|
||||
if (gCurrentMove >= MOVES_COUNT)
|
||||
continue;
|
||||
|
||||
for (i = 0; i < 4; i++); // ?
|
||||
@@ -8595,7 +8596,7 @@ static void atkAE_healpartystatus(void)
|
||||
|
||||
if (gCurrentMove == MOVE_HEAL_BELL)
|
||||
{
|
||||
struct Pokemon* party;
|
||||
struct Pokemon *party;
|
||||
s32 i;
|
||||
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||
@@ -8633,7 +8634,7 @@ static void atkAE_healpartystatus(void)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
|
||||
u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY);
|
||||
@@ -8957,7 +8958,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleTurnOrder[i] == gBattlerTarget)
|
||||
if (gBattlerByTurnOrder[i] == gBattlerTarget)
|
||||
gActionsByTurnOrder[i] = 11;
|
||||
}
|
||||
|
||||
@@ -9045,7 +9046,7 @@ static void atkBE_rapidspinfree(void)
|
||||
else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED)
|
||||
{
|
||||
gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED);
|
||||
gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BANK);
|
||||
gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BATTLER);
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
|
||||
}
|
||||
@@ -9761,7 +9762,7 @@ static void atkE1_trygetintimidatetarget(void)
|
||||
{
|
||||
u8 side;
|
||||
|
||||
gBattleScripting.battler = gBattleStruct->intimidateBank;
|
||||
gBattleScripting.battler = gBattleStruct->intimidateBattler;
|
||||
side = GetBattlerSide(gBattleScripting.battler);
|
||||
|
||||
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability)
|
||||
@@ -10053,7 +10054,7 @@ static void atkEC_pursuitrelated(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void atkEF_snatchsetbanks(void)
|
||||
static void atkEF_snatchsetbattlers(void)
|
||||
{
|
||||
gEffectBattler = gBattlerAttacker;
|
||||
|
||||
@@ -10116,7 +10117,7 @@ static void atkEF_handleballthrow(void)
|
||||
u8 catchRate;
|
||||
|
||||
if (gLastUsedItem == ITEM_SAFARI_BALL)
|
||||
catchRate = gBattleStruct->field_7C * 1275 / 100;
|
||||
catchRate = gBattleStruct->safariCatchFactor * 1275 / 100;
|
||||
else
|
||||
catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate;
|
||||
|
||||
@@ -10131,7 +10132,7 @@ static void atkEF_handleballthrow(void)
|
||||
ballMultiplier = 10;
|
||||
break;
|
||||
case ITEM_DIVE_BALL:
|
||||
if (Overworld_GetMapTypeOfSaveblockLocation() == 5)
|
||||
if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
|
||||
ballMultiplier = 35;
|
||||
else
|
||||
ballMultiplier = 10;
|
||||
@@ -10288,7 +10289,7 @@ static void atkF2_displaydexinfo(void)
|
||||
switch (gBattleCommunication[0])
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gBattleCommunication[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -10406,7 +10407,7 @@ static void atkF3_trygivecaughtmonnick(void)
|
||||
{
|
||||
case 0:
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
gBattleCommunication[MULTIUSE_STATE]++;
|
||||
gBattleCommunication[CURSOR_POSITION] = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
|
||||
+52
-52
@@ -21,7 +21,7 @@
|
||||
#include "constants/items.h"
|
||||
#include "palette.h"
|
||||
#include "window.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "event_scripts.h"
|
||||
#include "trainer_see.h"
|
||||
#include "field_message_box.h"
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "overworld.h"
|
||||
#include "field_weather.h"
|
||||
#include "gym_leader_rematch.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -63,8 +63,8 @@ extern void sub_80EECC8(void);
|
||||
extern void sub_80AF6F0(void);
|
||||
extern u16 sub_81A9AA8(u8 localId);
|
||||
extern u16 sub_81D6180(u8 localId);
|
||||
extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjId);
|
||||
extern bool8 GetTrainerHillTrainerFlag(u8 mapObjId);
|
||||
extern bool8 GetBattlePyramidTrainerFlag(u8 eventObjId);
|
||||
extern bool8 GetTrainerHillTrainerFlag(u8 eventObjId);
|
||||
extern bool8 sub_81D5C18(void);
|
||||
extern void sub_816306C(u8 a0);
|
||||
extern void sub_8163048(u8 a0);
|
||||
@@ -102,7 +102,7 @@ EWRAM_DATA static u16 sTrainerBattleMode = 0;
|
||||
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
|
||||
EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
|
||||
EWRAM_DATA u16 gPartnerTrainerId = 0;
|
||||
EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
|
||||
EWRAM_DATA static u16 sTrainerEventObjectLocalId = 0;
|
||||
EWRAM_DATA static u8 *sTrainerAIntroSpeech = NULL;
|
||||
EWRAM_DATA static u8 *sTrainerBIntroSpeech = NULL;
|
||||
EWRAM_DATA static u8 *sTrainerADefeatSpeech = NULL;
|
||||
@@ -156,7 +156,7 @@ static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -169,7 +169,7 @@ static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -182,7 +182,7 @@ static const struct TrainerBattleParameter sDoubleBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -195,7 +195,7 @@ static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -208,7 +208,7 @@ static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -221,7 +221,7 @@ static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -234,7 +234,7 @@ static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[]
|
||||
{
|
||||
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
|
||||
{&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
|
||||
{&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
|
||||
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
|
||||
@@ -388,7 +388,7 @@ void BattleSetup_StartBattlePikeWildBattle(void)
|
||||
static void DoStandardWildBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
sub_808BCF4();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
gBattleTypeFlags = 0;
|
||||
@@ -407,7 +407,7 @@ static void DoStandardWildBattle(void)
|
||||
void BattleSetup_StartRoamerBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
sub_808BCF4();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
|
||||
@@ -421,7 +421,7 @@ void BattleSetup_StartRoamerBattle(void)
|
||||
static void DoSafariBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
sub_808BCF4();
|
||||
gMain.savedCallback = CB2_EndSafariBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
|
||||
@@ -431,7 +431,7 @@ static void DoSafariBattle(void)
|
||||
static void DoBattlePikeWildBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
sub_808BCF4();
|
||||
gMain.savedCallback = CB2_EndWildBattle;
|
||||
gBattleTypeFlags = BATTLE_TYPE_PIKE;
|
||||
@@ -799,7 +799,7 @@ static u8 GetTrainerBattleTransition(void)
|
||||
u8 enemyLevel;
|
||||
u8 playerLevel;
|
||||
|
||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
return B_TRANSITION_CHAMPION;
|
||||
|
||||
if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR)
|
||||
@@ -884,8 +884,8 @@ u8 sub_80B100C(s32 arg0)
|
||||
return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
|
||||
var = gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 0]
|
||||
+ gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 1];
|
||||
var = gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 0]
|
||||
+ gSaveBlock2Ptr->frontier.field_CB4[gSaveBlock2Ptr->frontier.field_CB2 * 2 + 1];
|
||||
|
||||
return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
|
||||
}
|
||||
@@ -1012,7 +1012,7 @@ static void InitTrainerBattleVariables(void)
|
||||
sTrainerBDefeatSpeech = NULL;
|
||||
sTrainerBBattleScriptRetAddr = NULL;
|
||||
}
|
||||
sTrainerMapObjectLocalId = 0;
|
||||
sTrainerEventObjectLocalId = 0;
|
||||
sTrainerVictorySpeech = NULL;
|
||||
sTrainerCannotBattleSpeech = NULL;
|
||||
sTrainerBattleEndScript = NULL;
|
||||
@@ -1075,10 +1075,10 @@ static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, co
|
||||
|
||||
void SetMapVarsToTrainer(void)
|
||||
{
|
||||
if (sTrainerMapObjectLocalId != 0)
|
||||
if (sTrainerEventObjectLocalId != 0)
|
||||
{
|
||||
gSpecialVar_LastTalked = sTrainerMapObjectLocalId;
|
||||
gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
gSpecialVar_LastTalked = sTrainerEventObjectLocalId;
|
||||
gSelectedEventObject = GetEventObjectIdByLocalIdAndMap(sTrainerEventObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1089,14 +1089,14 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
|
||||
switch (sTrainerBattleMode)
|
||||
{
|
||||
case 3:
|
||||
case TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT:
|
||||
TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
|
||||
return EventScript_2713C2;
|
||||
case 4:
|
||||
case TRAINER_BATTLE_DOUBLE:
|
||||
TrainerBattleLoadArgs(sDoubleBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
return EventScript_TryDoDoubleTrainerBattle;
|
||||
case 2:
|
||||
case TRAINER_BATTLE_CONTINUE_SCRIPT:
|
||||
if (gApproachingTrainerId == 0)
|
||||
{
|
||||
TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
|
||||
@@ -1107,26 +1107,26 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
TrainerBattleLoadArgs(sTrainerBContinueScriptBattleParams, data);
|
||||
}
|
||||
return EventScript_271362;
|
||||
case 1:
|
||||
case TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC:
|
||||
TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
return EventScript_271362;
|
||||
case 6:
|
||||
case 8:
|
||||
case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE:
|
||||
case TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC:
|
||||
TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
return EventScript_TryDoDoubleTrainerBattle;
|
||||
case 7:
|
||||
case TRAINER_BATTLE_REMATCH_DOUBLE:
|
||||
TrainerBattleLoadArgs(sDoubleBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
|
||||
return EventScript_TryDoDoubleRematchBattle;
|
||||
case 5:
|
||||
case TRAINER_BATTLE_REMATCH:
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
|
||||
return EventScript_2713D1;
|
||||
case 9:
|
||||
case TRAINER_BATTLE_9:
|
||||
if (gApproachingTrainerId == 0)
|
||||
{
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
@@ -1139,13 +1139,13 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
gTrainerBattleOpponent_B = sub_81A9AA8(gSpecialVar_LastTalked);
|
||||
}
|
||||
return EventScript_271362;
|
||||
case 10:
|
||||
case TRAINER_BATTLE_SET_TRAINER_A:
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
return NULL;
|
||||
case 11:
|
||||
case TRAINER_BATTLE_SET_TRAINER_B:
|
||||
TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
|
||||
return NULL;
|
||||
case 12:
|
||||
case TRAINER_BATTLE_12:
|
||||
if (gApproachingTrainerId == 0)
|
||||
{
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
@@ -1172,19 +1172,19 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
}
|
||||
}
|
||||
|
||||
void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript)
|
||||
void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript)
|
||||
{
|
||||
gSelectedMapObject = trainerMapObjId;
|
||||
gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
|
||||
gSelectedEventObject = trainerEventObjId;
|
||||
gSpecialVar_LastTalked = gEventObjects[trainerEventObjId].localId;
|
||||
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
|
||||
ScriptContext1_SetupScript(EventScript_271354);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript)
|
||||
void ConfigureTwoTrainersBattle(u8 trainerEventObjId, const u8 *trainerScript)
|
||||
{
|
||||
gSelectedMapObject = trainerMapObjId;
|
||||
gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
|
||||
gSelectedEventObject = trainerEventObjId;
|
||||
gSpecialVar_LastTalked = gEventObjects[trainerEventObjId].localId;
|
||||
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
|
||||
}
|
||||
|
||||
@@ -1202,9 +1202,9 @@ bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
|
||||
|
||||
void sub_80B16D8(void)
|
||||
{
|
||||
struct MapObject *mapObject = &gMapObjects[gSelectedMapObject];
|
||||
struct EventObject *eventObject = &gEventObjects[gSelectedEventObject];
|
||||
|
||||
npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
|
||||
SetTrainerMovementType(eventObject, GetTrainerFacingDirectionMovementType(eventObject->facingDirection));
|
||||
}
|
||||
|
||||
u8 GetTrainerBattleMode(void)
|
||||
@@ -1215,9 +1215,9 @@ u8 GetTrainerBattleMode(void)
|
||||
bool8 GetTrainerFlag(void)
|
||||
{
|
||||
if (InBattlePyramid())
|
||||
return GetBattlePyramidTrainerFlag(gSelectedMapObject);
|
||||
return GetBattlePyramidTrainerFlag(gSelectedEventObject);
|
||||
else if (InTrainerHill())
|
||||
return GetTrainerHillTrainerFlag(gSelectedMapObject);
|
||||
return GetTrainerHillTrainerFlag(gSelectedEventObject);
|
||||
else
|
||||
return FlagGet(GetTrainerAFlag());
|
||||
}
|
||||
@@ -1306,7 +1306,7 @@ void BattleSetup_StartTrainerBattle(void)
|
||||
|
||||
static void CB2_EndTrainerBattle(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScript);
|
||||
}
|
||||
@@ -1330,7 +1330,7 @@ static void CB2_EndTrainerBattle(void)
|
||||
|
||||
static void CB2_EndRematchBattle(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScript);
|
||||
}
|
||||
@@ -1362,7 +1362,7 @@ void ShowTrainerIntroSpeech(void)
|
||||
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
|
||||
sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked));
|
||||
else
|
||||
sub_81A9EDC(sub_81A9AA8(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
|
||||
sub_81A9EDC(sub_81A9AA8(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
|
||||
|
||||
sub_80982B8();
|
||||
}
|
||||
@@ -1371,7 +1371,7 @@ void ShowTrainerIntroSpeech(void)
|
||||
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
|
||||
sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked));
|
||||
else
|
||||
sub_81D572C(2, sub_81D6180(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
|
||||
sub_81D572C(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
|
||||
|
||||
sub_80982B8();
|
||||
}
|
||||
@@ -1498,7 +1498,7 @@ const u8 *GetTrainerALoseText(void)
|
||||
{
|
||||
const u8 *string;
|
||||
|
||||
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
||||
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
string = GetSecretBaseTrainerLoseText();
|
||||
else
|
||||
string = sTrainerADefeatSpeech;
|
||||
@@ -1592,11 +1592,11 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
|
||||
{
|
||||
if (gSaveBlock1Ptr->trainerRematches[i] != 0)
|
||||
{
|
||||
// Trainer already wants a rematch. Don't bother updating it
|
||||
// Trainer already wants a rematch. Don't bother updating it.
|
||||
ret = TRUE;
|
||||
}
|
||||
else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i)
|
||||
&& (Random() % 100) <= 30) // 31% chance of getting a rematch
|
||||
&& (Random() % 100) <= 30) // 31% chance of getting a rematch.
|
||||
{
|
||||
SetRematchIdForTrainer(table, i);
|
||||
ret = TRUE;
|
||||
|
||||
@@ -0,0 +1,268 @@
|
||||
#include "global.h"
|
||||
#include "overworld.h"
|
||||
#include "event_data.h"
|
||||
#include "region_map.h"
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "battle_frontier_2.h"
|
||||
#include "random.h"
|
||||
#include "item.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
// this file's functions
|
||||
void sub_81B99D4(void);
|
||||
void sub_81B9A28(void);
|
||||
void sub_81B9A44(void);
|
||||
void sub_81B9A60(void);
|
||||
void sub_81B9A90(void);
|
||||
void sub_81B9ABC(void);
|
||||
void sub_81B9B00(void);
|
||||
void sub_81B9B28(void);
|
||||
void sub_81B9BA0(void);
|
||||
void sub_81B9BF4(void);
|
||||
void sub_81B9C10(void);
|
||||
void sub_81B9C2C(void);
|
||||
void sub_81B9C70(void);
|
||||
void sub_81B9C98(void);
|
||||
void sub_81B9CF0(void);
|
||||
void sub_81B9D28(void);
|
||||
void sub_81B9D7C(void);
|
||||
void sub_81B9D98(void);
|
||||
void sub_81B9DB4(void);
|
||||
void sub_81B9DF8(void);
|
||||
void sub_81B9E20(void);
|
||||
void sub_81B9E78(void);
|
||||
void sub_81B9E88(void);
|
||||
void sub_81BA040(void);
|
||||
void sub_81B9EC0(void);
|
||||
|
||||
// const rom data
|
||||
void (*const gUnknown_086160B4[])(void) =
|
||||
{
|
||||
sub_81B99D4,
|
||||
sub_81B9A28,
|
||||
sub_81B9A44,
|
||||
sub_81B9A60,
|
||||
sub_81B9A90,
|
||||
sub_81B9ABC,
|
||||
sub_81B9B00,
|
||||
sub_81B9B28
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160D4[] = {ITEM_NEST_BALL, ITEM_NONE};
|
||||
|
||||
void (*const gUnknown_086160D8[])(void) =
|
||||
{
|
||||
sub_81B9BA0,
|
||||
sub_81B9BF4,
|
||||
sub_81B9C10,
|
||||
sub_81B9C2C,
|
||||
sub_81B9C70,
|
||||
sub_81B9C98,
|
||||
sub_81B9CF0
|
||||
};
|
||||
|
||||
const u16 gUnknown_086160F4[] = {ITEM_HYPER_POTION, ITEM_NONE};
|
||||
|
||||
void (*const gUnknown_086160F8[])(void) =
|
||||
{
|
||||
sub_81B9D28,
|
||||
sub_81B9D7C,
|
||||
sub_81B9D98,
|
||||
sub_81B9DB4,
|
||||
sub_81B9DF8,
|
||||
sub_81B9E20,
|
||||
sub_81B9E78,
|
||||
sub_81B9E88,
|
||||
sub_81BA040,
|
||||
sub_81B9EC0
|
||||
};
|
||||
|
||||
const u16 gUnknown_08616120[] = {ITEM_FULL_HEAL, ITEM_NONE};
|
||||
|
||||
// code
|
||||
void sub_81B99B4(void)
|
||||
{
|
||||
gUnknown_086160B4[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B99D4(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9A28(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6A;
|
||||
}
|
||||
|
||||
void sub_81B9A44(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9A60(void)
|
||||
{
|
||||
gTrainerBattleOpponent_A = (u32)((Random() % 255) * 5) / 64;
|
||||
sub_8162614(gTrainerBattleOpponent_A, 0);
|
||||
}
|
||||
|
||||
void sub_81B9A90(void)
|
||||
{
|
||||
if (gTrainerBattleOpponent_A < 300)
|
||||
ConvertBattleFrontierTrainerSpeechToString(gUnknown_0203BC88[gTrainerBattleOpponent_A].speechBefore);
|
||||
}
|
||||
|
||||
void sub_81B9ABC(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9B00(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6A = gUnknown_086160D4[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9B28(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6A, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6A, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6A = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9B80(void)
|
||||
{
|
||||
gUnknown_086160D8[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B9BA0(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9BF4(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6C;
|
||||
}
|
||||
|
||||
void sub_81B9C10(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9C2C(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9C70(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6C = gUnknown_086160F4[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9C98(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6C, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6C, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6C = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9CF0(void)
|
||||
{
|
||||
GetFrontierTrainerName(gStringVar1, gTrainerBattleOpponent_A);
|
||||
}
|
||||
|
||||
void sub_81B9D08(void)
|
||||
{
|
||||
gUnknown_086160F8[gSpecialVar_0x8004]();
|
||||
}
|
||||
|
||||
void sub_81B9D28(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CB2 = 0;
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = FALSE;
|
||||
saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
|
||||
}
|
||||
|
||||
void sub_81B9D7C(void)
|
||||
{
|
||||
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_E6E;
|
||||
}
|
||||
|
||||
void sub_81B9D98(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gSpecialVar_0x8006;
|
||||
}
|
||||
|
||||
void sub_81B9DB4(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_CA8 = gSpecialVar_0x8005;
|
||||
VarSet(VAR_TEMP_0, 0);
|
||||
gSaveBlock2Ptr->frontier.field_CA9_a = TRUE;
|
||||
sub_81A4C30();
|
||||
}
|
||||
|
||||
void sub_81B9DF8(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_E6E = gUnknown_08616120[Random() % 1];
|
||||
}
|
||||
|
||||
void sub_81B9E20(void)
|
||||
{
|
||||
if (AddBagItem(gSaveBlock2Ptr->frontier.field_E6E, 1) == TRUE)
|
||||
{
|
||||
CopyItemName(gSaveBlock2Ptr->frontier.field_E6E, gStringVar1);
|
||||
gSaveBlock2Ptr->frontier.field_E6E = ITEM_NONE;
|
||||
gSpecialVar_Result = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81B9E78(void)
|
||||
{
|
||||
ZeroPlayerPartyMons();
|
||||
sub_819A4F8();
|
||||
}
|
||||
|
||||
void sub_81B9E88(void)
|
||||
{
|
||||
sub_819DC00();
|
||||
}
|
||||
|
||||
bool8 sub_81B9E94(void)
|
||||
{
|
||||
return (gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
|
||||
&& ((gMapHeader.mapLayoutId == 385) | (gMapHeader.mapLayoutId == 386)));
|
||||
}
|
||||
@@ -59,7 +59,7 @@ typedef bool8 (*TransitionSpriteCallback)(struct Sprite *sprite);
|
||||
extern u16 gBattle_BG0_X;
|
||||
extern u16 gBattle_BG0_Y;
|
||||
|
||||
extern const struct OamData gFieldObjectBaseOam_32x32;
|
||||
extern const struct OamData gEventObjectBaseOam_32x32;
|
||||
|
||||
extern void sub_80AC3D0(void);
|
||||
|
||||
@@ -753,7 +753,7 @@ static const struct SpriteTemplate gUnknown_085C8E68 =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4105,
|
||||
.oam = &gFieldObjectBaseOam_32x32,
|
||||
.oam = &gEventObjectBaseOam_32x32,
|
||||
.anims = sSpriteAnimTable_85C8E3C,
|
||||
.images = sSpriteImageTable_85C8E2C,
|
||||
.affineAnims = sSpriteAffineAnimTable_85C8E60,
|
||||
@@ -820,7 +820,7 @@ static const struct SpriteTemplate sSpriteTemplate_85C8EBC =
|
||||
.callback = sub_8148380
|
||||
};
|
||||
|
||||
static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/map_objects/palettes/field_effect_object_palette_10.gbapal");
|
||||
static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/event_objects/palettes/field_effect_object_palette_10.gbapal");
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
|
||||
{
|
||||
@@ -1080,7 +1080,7 @@ static bool8 Phase2_Blur_Func2(struct Task *task)
|
||||
{
|
||||
task->tData1 = 4;
|
||||
if (++task->tData2 == 10)
|
||||
BeginNormalPaletteFade(-1, -1, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0);
|
||||
SetGpuReg(REG_OFFSET_MOSAIC, (task->tData2 & 15) * 17);
|
||||
if (task->tData2 > 14)
|
||||
task->tState++;
|
||||
@@ -1107,7 +1107,7 @@ static bool8 Phase2_Swirl_Func1(struct Task *task)
|
||||
{
|
||||
sub_8149F08();
|
||||
ScanlineEffect_Clear();
|
||||
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
|
||||
sub_8149F98(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_14, 0, 2, 0, 160);
|
||||
|
||||
SetVBlankCallback(VBlankCB_Phase2_Swirl);
|
||||
@@ -1162,7 +1162,7 @@ static bool8 Phase2_Shuffle_Func1(struct Task *task)
|
||||
sub_8149F08();
|
||||
ScanlineEffect_Clear();
|
||||
|
||||
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
|
||||
memset(gScanlineEffectRegBuffers[1], sTransitionStructPtr->field_16, 0x140);
|
||||
|
||||
SetVBlankCallback(VBlankCB_Phase2_Shuffle);
|
||||
@@ -1973,7 +1973,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
|
||||
if (++task->tData3 == 81)
|
||||
{
|
||||
task->tData4++;
|
||||
BeginNormalPaletteFade(-1, -2, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 0x10, 0);
|
||||
}
|
||||
|
||||
if (task->tData4 != 0 && !gPaletteFade.active)
|
||||
@@ -3982,7 +3982,7 @@ static bool8 Phase2_30_Func4(struct Task *task)
|
||||
if (++task->tData3 == 101)
|
||||
{
|
||||
task->tData4++;
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
}
|
||||
|
||||
if (task->tData4 != 0 && !gPaletteFade.active)
|
||||
|
||||
+8
-10
@@ -9,8 +9,6 @@
|
||||
#include "battle_message.h"
|
||||
#include "tv.h"
|
||||
|
||||
extern struct StringInfoBattle *gStringInfo;
|
||||
|
||||
// this file's functions
|
||||
static bool8 sub_817E0B8(u16 stringId);
|
||||
static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3);
|
||||
@@ -223,7 +221,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
|
||||
atkSide = GetBattlerSide(gBattlerAttacker);
|
||||
defSide = GetBattlerSide(gBattlerTarget);
|
||||
effSide = GetBattlerSide(gEffectBattler);
|
||||
scriptingSide = GetBattlerSide(gStringInfo->scrActive);
|
||||
scriptingSide = GetBattlerSide(gBattleMsgDataPtr->scrActive);
|
||||
|
||||
if (atkSide == B_SIDE_PLAYER)
|
||||
atkMon = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]];
|
||||
@@ -235,7 +233,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
|
||||
else
|
||||
defMon = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]];
|
||||
|
||||
moveSlot = GetBattlerMoveSlotId(gBattlerAttacker, gStringInfo->currentMove);
|
||||
moveSlot = GetBattlerMoveSlotId(gBattlerAttacker, gBattleMsgDataPtr->currentMove);
|
||||
|
||||
if (moveSlot >= 4 && sub_817E0B8(stringId) && stringId > BATTLESTRINGS_ID_ADDER)
|
||||
{
|
||||
@@ -480,8 +478,8 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
|
||||
break;
|
||||
case STRINGID_PKMNFASTASLEEP:
|
||||
if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId != 0
|
||||
&& gStringInfo->currentMove != MOVE_SNORE
|
||||
&& gStringInfo->currentMove != MOVE_SLEEP_TALK)
|
||||
&& gBattleMsgDataPtr->currentMove != MOVE_SNORE
|
||||
&& gBattleMsgDataPtr->currentMove != MOVE_SLEEP_TALK)
|
||||
AddMovePoints(9, 3, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMoveSlot);
|
||||
break;
|
||||
case STRINGID_PKMNWASFROZEN:
|
||||
@@ -798,8 +796,8 @@ void TryPutLinkBattleTvShowOnAir(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
if ((playerBestMonId < 3 && !sub_806D82C(gBattleScripting.multiplayerId))
|
||||
|| (playerBestMonId >= 3 && sub_806D82C(gBattleScripting.multiplayerId)))
|
||||
if ((playerBestMonId < 3 && !GetLinkTrainerFlankId(gBattleScripting.multiplayerId))
|
||||
|| (playerBestMonId >= 3 && GetLinkTrainerFlankId(gBattleScripting.multiplayerId)))
|
||||
{
|
||||
j = (opponentBestMonId < 3) ? 0 : 1;
|
||||
PutBattleUpdateOnTheAir(sub_806EF84(j, gBattleScripting.multiplayerId), moveId, playerBestSpecies, opponentBestSpecies);
|
||||
@@ -1080,7 +1078,7 @@ _0817E5C8:\n\
|
||||
ldr r0, =gBattleScripting\n\
|
||||
adds r0, 0x25\n\
|
||||
ldrb r0, [r0]\n\
|
||||
bl sub_806D82C\n\
|
||||
bl GetLinkTrainerFlankId\n\
|
||||
lsls r0, 16\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0817E630\n\
|
||||
@@ -1090,7 +1088,7 @@ _0817E620:\n\
|
||||
ldr r0, =gBattleScripting\n\
|
||||
adds r0, 0x25\n\
|
||||
ldrb r0, [r0]\n\
|
||||
bl sub_806D82C\n\
|
||||
bl GetLinkTrainerFlankId\n\
|
||||
lsls r0, 16\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0817E670\n\
|
||||
|
||||
+166
-147
@@ -46,7 +46,7 @@ u8 GetBattlerForBattleScript(u8 caseId)
|
||||
case BS_EFFECT_BATTLER:
|
||||
ret = gEffectBattler;
|
||||
break;
|
||||
case BS_BANK_0:
|
||||
case BS_BATTLER_0:
|
||||
ret = 0;
|
||||
break;
|
||||
case BS_SCRIPTING:
|
||||
@@ -292,7 +292,7 @@ void sub_803FA70(u8 battler)
|
||||
}
|
||||
}
|
||||
|
||||
void BattleScriptPush(const u8* bsPtr)
|
||||
void BattleScriptPush(const u8 *bsPtr)
|
||||
{
|
||||
gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = bsPtr;
|
||||
}
|
||||
@@ -453,14 +453,14 @@ bool8 AreAllMovesUnusable(void)
|
||||
u8 unusable;
|
||||
unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
|
||||
|
||||
if (unusable == 0xF) // all moves are unusable
|
||||
if (unusable == 0xF) // All moves are unusable.
|
||||
{
|
||||
gProtectStructs[gActiveBattler].onlyStruggle = 1;
|
||||
gProtectStructs[gActiveBattler].noValidMoves = 1;
|
||||
gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft;
|
||||
}
|
||||
else
|
||||
{
|
||||
gProtectStructs[gActiveBattler].onlyStruggle = 0;
|
||||
gProtectStructs[gActiveBattler].noValidMoves = 0;
|
||||
}
|
||||
|
||||
return (unusable == 0xF);
|
||||
@@ -470,11 +470,11 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
|
||||
{
|
||||
s32 i;
|
||||
u8 imprisionedMoves = 0;
|
||||
u8 bankSide = GetBattlerSide(battlerId);
|
||||
u8 battlerSide = GetBattlerSide(battlerId);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS)
|
||||
if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS)
|
||||
{
|
||||
s32 j;
|
||||
for (j = 0; j < 4; j++)
|
||||
@@ -504,21 +504,21 @@ u8 UpdateTurnCounters(void)
|
||||
|
||||
do
|
||||
{
|
||||
u8 sideBank;
|
||||
u8 side;
|
||||
|
||||
switch (gBattleStruct->turnCountersTracker)
|
||||
{
|
||||
case 0:
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
gBattleTurnOrder[i] = i;
|
||||
gBattlerByTurnOrder[i] = i;
|
||||
}
|
||||
for (i = 0; i < gBattlersCount - 1; i++)
|
||||
{
|
||||
s32 j;
|
||||
for (j = i + 1; j < gBattlersCount; j++)
|
||||
{
|
||||
if (GetWhoStrikesFirst(gBattleTurnOrder[i], gBattleTurnOrder[j], 0))
|
||||
if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0))
|
||||
SwapTurnOrder(i, j);
|
||||
}
|
||||
}
|
||||
@@ -533,13 +533,13 @@ u8 UpdateTurnCounters(void)
|
||||
case 1:
|
||||
while (gBattleStruct->turnSideTracker < 2)
|
||||
{
|
||||
sideBank = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].reflectBattlerId;
|
||||
if (gSideStatuses[sideBank] & SIDE_STATUS_REFLECT)
|
||||
side = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[side].reflectBattlerId;
|
||||
if (gSideStatuses[side] & SIDE_STATUS_REFLECT)
|
||||
{
|
||||
if (--gSideTimers[sideBank].reflectTimer == 0)
|
||||
if (--gSideTimers[side].reflectTimer == 0)
|
||||
{
|
||||
gSideStatuses[sideBank] &= ~SIDE_STATUS_REFLECT;
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_REFLECT;
|
||||
BattleScriptExecute(BattleScript_SideStatusWoreOff);
|
||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT);
|
||||
effect++;
|
||||
@@ -558,15 +558,15 @@ u8 UpdateTurnCounters(void)
|
||||
case 2:
|
||||
while (gBattleStruct->turnSideTracker < 2)
|
||||
{
|
||||
sideBank = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].lightscreenBattlerId;
|
||||
if (gSideStatuses[sideBank] & SIDE_STATUS_LIGHTSCREEN)
|
||||
side = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[side].lightscreenBattlerId;
|
||||
if (gSideStatuses[side] & SIDE_STATUS_LIGHTSCREEN)
|
||||
{
|
||||
if (--gSideTimers[sideBank].lightscreenTimer == 0)
|
||||
if (--gSideTimers[side].lightscreenTimer == 0)
|
||||
{
|
||||
gSideStatuses[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_LIGHTSCREEN;
|
||||
BattleScriptExecute(BattleScript_SideStatusWoreOff);
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = side;
|
||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN);
|
||||
effect++;
|
||||
}
|
||||
@@ -584,14 +584,14 @@ u8 UpdateTurnCounters(void)
|
||||
case 3:
|
||||
while (gBattleStruct->turnSideTracker < 2)
|
||||
{
|
||||
sideBank = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].mistBattlerId;
|
||||
if (gSideTimers[sideBank].mistTimer != 0
|
||||
&& --gSideTimers[sideBank].mistTimer == 0)
|
||||
side = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[side].mistBattlerId;
|
||||
if (gSideTimers[side].mistTimer != 0
|
||||
&& --gSideTimers[side].mistTimer == 0)
|
||||
{
|
||||
gSideStatuses[sideBank] &= ~SIDE_STATUS_MIST;
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_MIST;
|
||||
BattleScriptExecute(BattleScript_SideStatusWoreOff);
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = side;
|
||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST);
|
||||
effect++;
|
||||
}
|
||||
@@ -608,13 +608,13 @@ u8 UpdateTurnCounters(void)
|
||||
case 4:
|
||||
while (gBattleStruct->turnSideTracker < 2)
|
||||
{
|
||||
sideBank = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].safeguardBattlerId;
|
||||
if (gSideStatuses[sideBank] & SIDE_STATUS_SAFEGUARD)
|
||||
side = gBattleStruct->turnSideTracker;
|
||||
gActiveBattler = gBattlerAttacker = gSideTimers[side].safeguardBattlerId;
|
||||
if (gSideStatuses[side] & SIDE_STATUS_SAFEGUARD)
|
||||
{
|
||||
if (--gSideTimers[sideBank].safeguardTimer == 0)
|
||||
if (--gSideTimers[side].safeguardTimer == 0)
|
||||
{
|
||||
gSideStatuses[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
|
||||
gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD;
|
||||
BattleScriptExecute(BattleScript_SafeguardEnds);
|
||||
effect++;
|
||||
}
|
||||
@@ -632,7 +632,7 @@ u8 UpdateTurnCounters(void)
|
||||
case 5:
|
||||
while (gBattleStruct->turnSideTracker < gBattlersCount)
|
||||
{
|
||||
gActiveBattler = gBattleTurnOrder[gBattleStruct->turnSideTracker];
|
||||
gActiveBattler = gBattlerByTurnOrder[gBattleStruct->turnSideTracker];
|
||||
if (gWishFutureKnock.wishCounter[gActiveBattler] != 0
|
||||
&& --gWishFutureKnock.wishCounter[gActiveBattler] == 0
|
||||
&& gBattleMons[gActiveBattler].hp != 0)
|
||||
@@ -755,7 +755,7 @@ u8 TurnBasedEffects(void)
|
||||
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
|
||||
while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
|
||||
{
|
||||
gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->turnEffectsBattlerId];
|
||||
gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId];
|
||||
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
gBattleStruct->turnEffectsBattlerId++;
|
||||
@@ -795,10 +795,10 @@ u8 TurnBasedEffects(void)
|
||||
break;
|
||||
case 3: // leech seed
|
||||
if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED)
|
||||
&& gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0
|
||||
&& gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER].hp != 0
|
||||
&& gBattleMons[gActiveBattler].hp != 0)
|
||||
{
|
||||
gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the battlerId that receives HP
|
||||
gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver.
|
||||
gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
@@ -848,8 +848,8 @@ u8 TurnBasedEffects(void)
|
||||
case 7: // spooky nightmares
|
||||
if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0)
|
||||
{
|
||||
// R/S does not perform this sleep check, which causes the nighmare effect to
|
||||
// persist even after the affected Pokemon has been awakened by Shed Skin
|
||||
// R/S does not perform this sleep check, which causes the nightmare effect to
|
||||
// persist even after the affected Pokemon has been awakened by Shed Skin.
|
||||
if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
|
||||
@@ -983,7 +983,7 @@ u8 TurnBasedEffects(void)
|
||||
case 12: // disable
|
||||
if (gDisableStructs[gActiveBattler].disableTimer1 != 0)
|
||||
{
|
||||
int i;
|
||||
s32 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i])
|
||||
@@ -1121,7 +1121,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
|
||||
case 1:
|
||||
while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)
|
||||
{
|
||||
gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->wishPerishSongBattlerId];
|
||||
gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId];
|
||||
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
|
||||
{
|
||||
gBattleStruct->wishPerishSongBattlerId++;
|
||||
@@ -1184,7 +1184,7 @@ bool8 HandleFaintedMonActions(void)
|
||||
return FALSE;
|
||||
do
|
||||
{
|
||||
int i;
|
||||
s32 i;
|
||||
switch (gBattleStruct->faintedActionsState)
|
||||
{
|
||||
case 0:
|
||||
@@ -1192,7 +1192,7 @@ bool8 HandleFaintedMonActions(void)
|
||||
gBattleStruct->faintedActionsState++;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gAbsentBattlerFlags & gBitTable[i] && !sub_80423F4(i, 6, 6))
|
||||
if (gAbsentBattlerFlags & gBitTable[i] && !HasNoMonsToSwitch(i, 6, 6))
|
||||
gAbsentBattlerFlags &= ~(gBitTable[i]);
|
||||
}
|
||||
// fall through
|
||||
@@ -1256,7 +1256,7 @@ bool8 HandleFaintedMonActions(void)
|
||||
|
||||
void TryClearRageStatuses(void)
|
||||
{
|
||||
int i;
|
||||
s32 i;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMoveByBattler[i] != MOVE_RAGE)
|
||||
@@ -1467,7 +1467,9 @@ u8 AtkCanceller_UnableToUseMove(void)
|
||||
{
|
||||
gBattleScripting.battler = CountTrailingZeroBits((gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) >> 0x10);
|
||||
if (Random() & 1)
|
||||
{
|
||||
BattleScriptPushCursor();
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack);
|
||||
@@ -1485,7 +1487,9 @@ u8 AtkCanceller_UnableToUseMove(void)
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].status2 -= 0x100;
|
||||
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE)
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_BideStoringEnergy;
|
||||
}
|
||||
else
|
||||
{
|
||||
// This is removed in Emerald for some reason
|
||||
@@ -1500,7 +1504,9 @@ u8 AtkCanceller_UnableToUseMove(void)
|
||||
gBattlescriptCurrInstr = BattleScript_BideAttack;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack;
|
||||
}
|
||||
}
|
||||
effect = 1;
|
||||
}
|
||||
@@ -1535,29 +1541,31 @@ u8 AtkCanceller_UnableToUseMove(void)
|
||||
return effect;
|
||||
}
|
||||
|
||||
bool8 sub_80423F4(u8 battler, u8 r1, u8 r2)
|
||||
bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
|
||||
{
|
||||
struct Pokemon* party;
|
||||
u8 r7;
|
||||
u8 r6;
|
||||
struct Pokemon *party;
|
||||
u8 id1, id2;
|
||||
s32 i;
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|
||||
return FALSE;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||||
{
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
party = gPlayerParty;
|
||||
else
|
||||
party = gEnemyParty;
|
||||
r6 = ((battler & 2) / 2);
|
||||
for (i = r6 * 3; i < r6 * 3 + 3; i++)
|
||||
|
||||
id1 = ((battler & BIT_FLANK) / 2);
|
||||
for (i = id1 * 3; i < id1 * 3 + 3; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
|
||||
break;
|
||||
}
|
||||
return (i == r6 * 3 + 3);
|
||||
return (i == id1 * 3 + 3);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
@@ -1566,86 +1574,95 @@ bool8 sub_80423F4(u8 battler, u8 r1, u8 r2)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
party = gPlayerParty;
|
||||
r7 = GetBattlerMultiplayerId(battler);
|
||||
r6 = sub_806D82C(r7);
|
||||
id2 = GetBattlerMultiplayerId(battler);
|
||||
id1 = GetLinkTrainerFlankId(id2);
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: Compiler insists on moving r4 into r1 before doing the eor
|
||||
// FIXME: Compiler insists on moving r4 into r1 before doing the eor.
|
||||
#ifndef NONMATCHING
|
||||
register u32 var asm("r1");
|
||||
register u32 var asm("r1");
|
||||
#else
|
||||
u32 var;
|
||||
u32 var;
|
||||
#endif // NONMATCHING
|
||||
|
||||
party = gEnemyParty;
|
||||
var = battler ^ 1;
|
||||
r6 = (var != 0) ? 1 : 0;
|
||||
var = battler ^ BIT_SIDE;
|
||||
if (var == 0)
|
||||
id1 = 0;
|
||||
else
|
||||
id1 = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
r7 = GetBattlerMultiplayerId(battler);
|
||||
id2 = GetBattlerMultiplayerId(battler);
|
||||
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
party = gPlayerParty;
|
||||
else
|
||||
party = gEnemyParty;
|
||||
r6 = sub_806D82C(r7);
|
||||
|
||||
id1 = GetLinkTrainerFlankId(id2);
|
||||
}
|
||||
for (i = r6 * 3; i < r6 * 3 + 3; i++)
|
||||
|
||||
for (i = id1 * 3; i < id1 * 3 + 3; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
|
||||
break;
|
||||
}
|
||||
return (i == r6 * 3 + 3);
|
||||
return (i == id1 * 3 + 3);
|
||||
}
|
||||
else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
{
|
||||
party = gEnemyParty;
|
||||
|
||||
if (battler == 1)
|
||||
r6 = 0;
|
||||
id1 = 0;
|
||||
else
|
||||
r6 = 3;
|
||||
for (i = r6; i < r6 + 3; i++)
|
||||
id1 = 3;
|
||||
|
||||
for (i = id1; i < id1 + 3; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
|
||||
break;
|
||||
}
|
||||
return (i == r6 + 3);
|
||||
return (i == id1 + 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
{
|
||||
r7 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
r6 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
id2 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
id1 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
party = gEnemyParty;
|
||||
}
|
||||
else
|
||||
{
|
||||
r7 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
r6 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
id2 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
id1 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
party = gPlayerParty;
|
||||
}
|
||||
if (r1 == 6)
|
||||
r1 = gBattlerPartyIndexes[r7];
|
||||
if (r2 == 6)
|
||||
r2 = gBattlerPartyIndexes[r6];
|
||||
for (i = 0; i < 6; i++)
|
||||
|
||||
if (partyIdBattlerOn1 == PARTY_SIZE)
|
||||
partyIdBattlerOn1 = gBattlerPartyIndexes[id2];
|
||||
if (partyIdBattlerOn2 == PARTY_SIZE)
|
||||
partyIdBattlerOn2 = gBattlerPartyIndexes[id1];
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != 0
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
|
||||
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG
|
||||
// FIXME: Using index[array] instead of array[index] is BAD!
|
||||
&& i != r1 && i != r2 && i != r7[gBattleStruct->monToSwitchIntoId] && i != r6[gBattleStruct->monToSwitchIntoId])
|
||||
&& i != partyIdBattlerOn1 && i != partyIdBattlerOn2
|
||||
&& i != *(gBattleStruct->monToSwitchIntoId + id2) && i != id1[gBattleStruct->monToSwitchIntoId])
|
||||
break;
|
||||
}
|
||||
return (i == 6);
|
||||
return (i == PARTY_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1706,6 +1723,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
|
||||
if (gBattlerAttacker >= gBattlersCount)
|
||||
gBattlerAttacker = battler;
|
||||
|
||||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||||
pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]];
|
||||
else
|
||||
@@ -1713,6 +1731,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
|
||||
if (gBattlerTarget >= gBattlersCount)
|
||||
gBattlerTarget = battler;
|
||||
|
||||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||||
pokeDef = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]];
|
||||
else
|
||||
@@ -1724,7 +1743,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES);
|
||||
pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY);
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning?
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // Why isn't that check done at the beginning?
|
||||
{
|
||||
u8 moveType;
|
||||
s32 i;
|
||||
@@ -1821,10 +1840,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
}
|
||||
break;
|
||||
case ABILITY_INTIMIDATE:
|
||||
if (!(gSpecialStatuses[battler].intimidatedPoke))
|
||||
if (!(gSpecialStatuses[battler].intimidatedMon))
|
||||
{
|
||||
gStatuses3[battler] |= STATUS3_INTIMIDATE_POKES;
|
||||
gSpecialStatuses[battler].intimidatedPoke = 1;
|
||||
gSpecialStatuses[battler].intimidatedMon = 1;
|
||||
}
|
||||
break;
|
||||
case ABILITY_FORECAST:
|
||||
@@ -2271,7 +2290,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gLastUsedAbility = ABILITY_INTIMIDATE;
|
||||
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
|
||||
BattleScriptPushCursorAndCallback(BattleScript_82DB4B8);
|
||||
gBattleStruct->intimidateBank = i;
|
||||
gBattleStruct->intimidateBattler = i;
|
||||
effect++;
|
||||
break;
|
||||
}
|
||||
@@ -2343,7 +2362,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_82DB4C1;
|
||||
gBattleStruct->intimidateBank = i;
|
||||
gBattleStruct->intimidateBattler = i;
|
||||
effect++;
|
||||
break;
|
||||
}
|
||||
@@ -2360,7 +2379,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
|
||||
case ABILITYEFFECT_CHECK_BATTLER_SIDE: // 13
|
||||
side = GetBattlerSide(battler);
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
@@ -2410,7 +2429,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
|
||||
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER: // 15
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
if (gBattleMons[i].ability == ability && i != battler)
|
||||
@@ -2431,7 +2450,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
|
||||
case ABILITYEFFECT_COUNT_BATTLER_SIDE: // 17
|
||||
side = GetBattlerSide(battler);
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
@@ -2492,32 +2511,32 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
int i = 0;
|
||||
u8 effect = ITEM_NO_EFFECT;
|
||||
u8 changedPP = 0;
|
||||
u8 bankHoldEffect, atkHoldEffect, defHoldEffect;
|
||||
u8 bankQuality, atkQuality, defQuality;
|
||||
u8 battlerHoldEffect, atkHoldEffect, defHoldEffect;
|
||||
u8 battlerHoldEffectParam, atkHoldEffectParam, defHoldEffectParam;
|
||||
u16 atkItem, defItem;
|
||||
|
||||
gLastUsedItem = gBattleMons[battlerId].item;
|
||||
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
||||
bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
|
||||
battlerHoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
||||
battlerHoldEffectParam = gEnigmaBerries[battlerId].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
|
||||
bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem);
|
||||
battlerHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
|
||||
battlerHoldEffectParam = ItemId_GetHoldEffectParam(gLastUsedItem);
|
||||
}
|
||||
|
||||
atkItem = gBattleMons[gBattlerAttacker].item;
|
||||
if (atkItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
atkHoldEffect = gEnigmaBerries[gBattlerAttacker].holdEffect;
|
||||
atkQuality = gEnigmaBerries[gBattlerAttacker].holdEffectParam;
|
||||
atkHoldEffectParam = gEnigmaBerries[gBattlerAttacker].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
atkHoldEffect = ItemId_GetHoldEffect(atkItem);
|
||||
atkQuality = ItemId_GetHoldEffectParam(atkItem);
|
||||
atkHoldEffectParam = ItemId_GetHoldEffectParam(atkItem);
|
||||
}
|
||||
|
||||
// def variables are unused
|
||||
@@ -2525,18 +2544,18 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
if (defItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
defHoldEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
|
||||
defQuality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
|
||||
defHoldEffectParam = gEnigmaBerries[gBattlerTarget].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
defHoldEffect = ItemId_GetHoldEffect(defItem);
|
||||
defQuality = ItemId_GetHoldEffectParam(defItem);
|
||||
defHoldEffectParam = ItemId_GetHoldEffectParam(defItem);
|
||||
}
|
||||
|
||||
switch (caseID)
|
||||
{
|
||||
case ITEMEFFECT_ON_SWITCH_IN:
|
||||
switch (bankHoldEffect)
|
||||
switch (battlerHoldEffect)
|
||||
{
|
||||
case HOLD_EFFECT_DOUBLE_PRIZE:
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
@@ -2564,13 +2583,13 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
case 1:
|
||||
if (gBattleMons[battlerId].hp)
|
||||
{
|
||||
switch (bankHoldEffect)
|
||||
switch (battlerHoldEffect)
|
||||
{
|
||||
case HOLD_EFFECT_RESTORE_HP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
|
||||
{
|
||||
gBattleMoveDamage = bankQuality;
|
||||
if (gBattleMons[battlerId].hp + bankQuality > gBattleMons[battlerId].maxHP)
|
||||
gBattleMoveDamage = battlerHoldEffectParam;
|
||||
if (gBattleMons[battlerId].hp + battlerHoldEffectParam > gBattleMons[battlerId].maxHP)
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
|
||||
gBattleMoveDamage *= -1;
|
||||
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
|
||||
@@ -2599,10 +2618,10 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
if (i != 4)
|
||||
{
|
||||
u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i);
|
||||
if (changedPP + bankQuality > maxPP)
|
||||
if (changedPP + battlerHoldEffectParam > maxPP)
|
||||
changedPP = maxPP;
|
||||
else
|
||||
changedPP = changedPP + bankQuality;
|
||||
changedPP = changedPP + battlerHoldEffectParam;
|
||||
|
||||
PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);
|
||||
|
||||
@@ -2641,7 +2660,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
gBattleMoveDamage *= -1;
|
||||
BattleScriptExecute(BattleScript_ItemHealHP_End2);
|
||||
effect = ITEM_HP_CHANGE;
|
||||
RecordItemEffectBattle(battlerId, bankHoldEffect);
|
||||
RecordItemEffectBattle(battlerId, battlerHoldEffect);
|
||||
}
|
||||
break;
|
||||
// nice copy/paste there gamefreak, making a function for confuse berries was too much eh?
|
||||
@@ -2650,7 +2669,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
{
|
||||
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
|
||||
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
|
||||
@@ -2668,7 +2687,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
{
|
||||
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
|
||||
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
|
||||
@@ -2686,7 +2705,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
{
|
||||
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
|
||||
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
|
||||
@@ -2704,7 +2723,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
{
|
||||
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
|
||||
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
|
||||
@@ -2722,7 +2741,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
{
|
||||
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
|
||||
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
|
||||
gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
|
||||
@@ -2737,7 +2756,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
break;
|
||||
// copy/paste again, smh
|
||||
case HOLD_EFFECT_ATTACK_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC)
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC)
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
|
||||
PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
|
||||
@@ -2751,7 +2770,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_DEFENSE_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC)
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC)
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF);
|
||||
|
||||
@@ -2764,7 +2783,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_SPEED_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC)
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC)
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED);
|
||||
|
||||
@@ -2777,7 +2796,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_SP_ATTACK_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC)
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC)
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
|
||||
|
||||
@@ -2790,7 +2809,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_SP_DEFENSE_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC)
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC)
|
||||
{
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF);
|
||||
|
||||
@@ -2803,7 +2822,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_CRITICAL_UP:
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY))
|
||||
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY))
|
||||
{
|
||||
gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY;
|
||||
BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2);
|
||||
@@ -2811,7 +2830,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
}
|
||||
break;
|
||||
case HOLD_EFFECT_RANDOM_STAT_UP:
|
||||
if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality)
|
||||
if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam)
|
||||
{
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
@@ -2977,15 +2996,15 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
gLastUsedItem = gBattleMons[battlerId].item;
|
||||
if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
||||
bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
|
||||
battlerHoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
||||
battlerHoldEffectParam = gEnigmaBerries[battlerId].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
|
||||
bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem);
|
||||
battlerHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
|
||||
battlerHoldEffectParam = ItemId_GetHoldEffectParam(gLastUsedItem);
|
||||
}
|
||||
switch (bankHoldEffect)
|
||||
switch (battlerHoldEffect)
|
||||
{
|
||||
case HOLD_EFFECT_CURE_PAR:
|
||||
if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
|
||||
@@ -3127,7 +3146,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
case HOLD_EFFECT_FLINCH:
|
||||
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& (Random() % 100) < atkQuality
|
||||
&& (Random() % 100) < atkHoldEffectParam
|
||||
&& gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
|
||||
&& gBattleMons[gBattlerTarget].hp)
|
||||
{
|
||||
@@ -3148,7 +3167,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
|
||||
gLastUsedItem = atkItem;
|
||||
gPotentialItemEffectBattler = gBattlerAttacker;
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkQuality) * -1;
|
||||
gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkHoldEffectParam) * -1;
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = -1;
|
||||
gSpecialStatuses[gBattlerTarget].dmg = 0;
|
||||
@@ -3180,7 +3199,7 @@ void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands
|
||||
|
||||
u8 GetMoveTarget(u16 move, u8 setTarget)
|
||||
{
|
||||
u8 targetBank = 0;
|
||||
u8 targetBattler = 0;
|
||||
u8 moveTarget;
|
||||
u8 side;
|
||||
|
||||
@@ -3194,21 +3213,21 @@ u8 GetMoveTarget(u16 move, u8 setTarget)
|
||||
case MOVE_TARGET_SELECTED:
|
||||
side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
|
||||
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
||||
targetBank = gSideTimers[side].followmeTarget;
|
||||
targetBattler = gSideTimers[side].followmeTarget;
|
||||
else
|
||||
{
|
||||
side = GetBattlerSide(gBattlerAttacker);
|
||||
do
|
||||
{
|
||||
targetBank = Random() % gBattlersCount;
|
||||
} while (targetBank == gBattlerAttacker || side == GetBattlerSide(targetBank) || gAbsentBattlerFlags & gBitTable[targetBank]);
|
||||
targetBattler = Random() % gBattlersCount;
|
||||
} while (targetBattler == gBattlerAttacker || side == GetBattlerSide(targetBattler) || gAbsentBattlerFlags & gBitTable[targetBattler]);
|
||||
if (gBattleMoves[move].type == TYPE_ELECTRIC
|
||||
&& AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
|
||||
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
|
||||
&& gBattleMons[targetBattler].ability != ABILITY_LIGHTNING_ROD)
|
||||
{
|
||||
targetBank ^= BIT_FLANK;
|
||||
RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
|
||||
gSpecialStatuses[targetBank].lightningRodRedirected = 1;
|
||||
targetBattler ^= BIT_FLANK;
|
||||
RecordAbilityBattle(targetBattler, gBattleMons[targetBattler].ability);
|
||||
gSpecialStatuses[targetBattler].lightningRodRedirected = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -3216,45 +3235,45 @@ u8 GetMoveTarget(u16 move, u8 setTarget)
|
||||
case MOVE_TARGET_BOTH:
|
||||
case MOVE_TARGET_FOES_AND_ALLY:
|
||||
case MOVE_TARGET_OPPONENTS_FIELD:
|
||||
targetBank = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||
if (gAbsentBattlerFlags & gBitTable[targetBank])
|
||||
targetBank ^= BIT_FLANK;
|
||||
targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||
if (gAbsentBattlerFlags & gBitTable[targetBattler])
|
||||
targetBattler ^= BIT_FLANK;
|
||||
break;
|
||||
case MOVE_TARGET_RANDOM:
|
||||
side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
|
||||
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
|
||||
targetBank = gSideTimers[side].followmeTarget;
|
||||
targetBattler = gSideTimers[side].followmeTarget;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
|
||||
{
|
||||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||||
{
|
||||
if (Random() & 1)
|
||||
targetBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
targetBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
else
|
||||
targetBank = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
targetBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Random() & 1)
|
||||
targetBank = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
targetBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
else
|
||||
targetBank = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
targetBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
}
|
||||
if (gAbsentBattlerFlags & gBitTable[targetBank])
|
||||
targetBank ^= BIT_FLANK;
|
||||
if (gAbsentBattlerFlags & gBitTable[targetBattler])
|
||||
targetBattler ^= BIT_FLANK;
|
||||
}
|
||||
else
|
||||
targetBank = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||
targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
|
||||
break;
|
||||
case MOVE_TARGET_USER_OR_SELECTED:
|
||||
case MOVE_TARGET_USER:
|
||||
targetBank = gBattlerAttacker;
|
||||
targetBattler = gBattlerAttacker;
|
||||
break;
|
||||
}
|
||||
|
||||
*(gBattleStruct->moveTarget + gBattlerAttacker) = targetBank;
|
||||
*(gBattleStruct->moveTarget + gBattlerAttacker) = targetBattler;
|
||||
|
||||
return targetBank;
|
||||
return targetBattler;
|
||||
}
|
||||
|
||||
static bool32 HasObedientBitSet(u8 battlerId)
|
||||
|
||||
+28
-28
@@ -8,11 +8,11 @@
|
||||
#include "event_data.h"
|
||||
#include "fieldmap.h"
|
||||
|
||||
extern u8 FieldObjectGetBerryTreeId(u8 mapObjectId);
|
||||
extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
|
||||
extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
|
||||
extern void CB2_ChooseBerry(void);
|
||||
extern const u8* GetFieldObjectScriptPointerForComparison(void);
|
||||
extern bool8 sub_8092E9C(u8, u8, u8);
|
||||
extern const u8* GetEventObjectScriptPointerForComparison(void);
|
||||
extern bool8 IsBerryTreeSparkling(u8, u8, u8);
|
||||
|
||||
extern u16 gSpecialVar_ItemId;
|
||||
|
||||
@@ -904,9 +904,9 @@ struct BerryTree *GetBerryTreeInfo(u8 id)
|
||||
return &gSaveBlock1Ptr->berryTrees[id];
|
||||
}
|
||||
|
||||
bool32 FieldObjectInteractionWaterBerryTree(void)
|
||||
bool32 EventObjectInteractionWaterBerryTree(void)
|
||||
{
|
||||
struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject));
|
||||
struct BerryTree *tree = GetBerryTreeInfo(EventObjectGetBerryTreeId(gSelectedEventObject));
|
||||
|
||||
switch (tree->stage)
|
||||
{
|
||||
@@ -930,8 +930,8 @@ bool32 FieldObjectInteractionWaterBerryTree(void)
|
||||
|
||||
bool8 IsPlayerFacingPlantedBerryTree(void)
|
||||
{
|
||||
if (GetFieldObjectScriptPointerForComparison() == BerryTreeScript
|
||||
&& GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0)
|
||||
if (GetEventObjectScriptPointerForComparison() == BerryTreeScript
|
||||
&& GetStageByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject)) == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -939,10 +939,10 @@ bool8 IsPlayerFacingPlantedBerryTree(void)
|
||||
|
||||
bool8 TryToWaterBerryTree(void)
|
||||
{
|
||||
if (GetFieldObjectScriptPointerForComparison() != BerryTreeScript)
|
||||
if (GetEventObjectScriptPointerForComparison() != BerryTreeScript)
|
||||
return FALSE;
|
||||
else
|
||||
return FieldObjectInteractionWaterBerryTree();
|
||||
return EventObjectInteractionWaterBerryTree();
|
||||
}
|
||||
|
||||
void ClearBerryTrees(void)
|
||||
@@ -1152,7 +1152,7 @@ u16 GetStageDurationByBerryType(u8 berry)
|
||||
return GetBerryInfo(berry)->stageDuration * 60;
|
||||
}
|
||||
|
||||
void FieldObjectInteractionGetBerryTreeData(void)
|
||||
void EventObjectInteractionGetBerryTreeData(void)
|
||||
{
|
||||
u8 id;
|
||||
u8 berry;
|
||||
@@ -1160,13 +1160,13 @@ void FieldObjectInteractionGetBerryTreeData(void)
|
||||
u8 group;
|
||||
u8 num;
|
||||
|
||||
id = FieldObjectGetBerryTreeId(gSelectedMapObject);
|
||||
id = EventObjectGetBerryTreeId(gSelectedEventObject);
|
||||
berry = GetBerryTypeByBerryTreeId(id);
|
||||
ResetBerryTreeSparkleFlag(id);
|
||||
unk = gSpecialVar_LastTalked;
|
||||
num = gSaveBlock1Ptr->location.mapNum;
|
||||
group = gSaveBlock1Ptr->location.mapGroup;
|
||||
if (sub_8092E9C(unk, num, group))
|
||||
if (IsBerryTreeSparkling(unk, num, group))
|
||||
gSpecialVar_0x8004 = 0xFF;
|
||||
else
|
||||
gSpecialVar_0x8004 = GetStageByBerryTreeId(id);
|
||||
@@ -1175,15 +1175,15 @@ void FieldObjectInteractionGetBerryTreeData(void)
|
||||
GetBerryCountStringByBerryType(berry, gStringVar1, gSpecialVar_0x8006);
|
||||
}
|
||||
|
||||
void FieldObjectInteractionGetBerryName(void)
|
||||
void EventObjectInteractionGetBerryName(void)
|
||||
{
|
||||
u8 berryType = GetBerryTypeByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject));
|
||||
u8 berryType = GetBerryTypeByBerryTreeId(EventObjectGetBerryTreeId(gSelectedEventObject));
|
||||
GetBerryNameByBerryType(berryType, gStringVar1);
|
||||
}
|
||||
|
||||
void FieldObjectInteractionGetBerryCountString(void)
|
||||
void EventObjectInteractionGetBerryCountString(void)
|
||||
{
|
||||
u8 treeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
|
||||
u8 treeId = EventObjectGetBerryTreeId(gSelectedEventObject);
|
||||
u8 berry = GetBerryTypeByBerryTreeId(treeId);
|
||||
u8 count = GetBerryCountByBerryTreeId(treeId);
|
||||
GetBerryCountStringByBerryType(berry, gStringVar1, count);
|
||||
@@ -1194,25 +1194,25 @@ void Bag_ChooseBerry(void)
|
||||
SetMainCallback2(CB2_ChooseBerry);
|
||||
}
|
||||
|
||||
void FieldObjectInteractionPlantBerryTree(void)
|
||||
void EventObjectInteractionPlantBerryTree(void)
|
||||
{
|
||||
u8 berry = ItemIdToBerryType(gSpecialVar_ItemId);
|
||||
|
||||
PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE);
|
||||
FieldObjectInteractionGetBerryTreeData();
|
||||
PlantBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject), berry, 1, TRUE);
|
||||
EventObjectInteractionGetBerryTreeData();
|
||||
}
|
||||
|
||||
void FieldObjectInteractionPickBerryTree(void)
|
||||
void EventObjectInteractionPickBerryTree(void)
|
||||
{
|
||||
u8 id = FieldObjectGetBerryTreeId(gSelectedMapObject);
|
||||
u8 id = EventObjectGetBerryTreeId(gSelectedEventObject);
|
||||
u8 berry = GetBerryTypeByBerryTreeId(id);
|
||||
|
||||
gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id));
|
||||
}
|
||||
|
||||
void FieldObjectInteractionRemoveBerryTree(void)
|
||||
void EventObjectInteractionRemoveBerryTree(void)
|
||||
{
|
||||
RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject));
|
||||
RemoveBerryTree(EventObjectGetBerryTreeId(gSelectedEventObject));
|
||||
sub_8092EF0(gSpecialVar_LastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
}
|
||||
|
||||
@@ -1236,14 +1236,14 @@ void ResetBerryTreeSparkleFlags(void)
|
||||
top = cam_top + 3;
|
||||
right = cam_left + 14;
|
||||
bottom = top + 8;
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
|
||||
{
|
||||
if (gMapObjects[i].active && gMapObjects[i].animPattern == 12)
|
||||
if (gEventObjects[i].active && gEventObjects[i].movementType == 12)
|
||||
{
|
||||
cam_left = gMapObjects[i].coords2.x;
|
||||
cam_top = gMapObjects[i].coords2.y;
|
||||
cam_left = gEventObjects[i].currentCoords.x;
|
||||
cam_top = gEventObjects[i].currentCoords.y;
|
||||
if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom)
|
||||
ResetBerryTreeSparkleFlag(gMapObjects[i].trainerRange_berryTreeId);
|
||||
ResetBerryTreeSparkleFlag(gEventObjects[i].trainerRange_berryTreeId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-12
@@ -15,6 +15,7 @@
|
||||
#include "malloc.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "event_data.h"
|
||||
#include "main.h"
|
||||
#include "link.h"
|
||||
@@ -153,8 +154,6 @@ extern const u8 gText_234Players[];
|
||||
|
||||
extern void sub_800A418(void);
|
||||
extern u8 sub_800A9D8(void);
|
||||
extern void sub_809882C(u8, u16, u8);
|
||||
extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
|
||||
extern void sub_81AABF0(void (*callback)(void));
|
||||
extern void sub_800B4C0(void);
|
||||
extern void ClearLinkCallback(void);
|
||||
@@ -927,8 +926,8 @@ static void sub_807FAC8(void)
|
||||
InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates));
|
||||
SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]);
|
||||
SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]);
|
||||
sub_809882C(0, 1, 0xD0);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0);
|
||||
LoadUserWindowBorderGfx(0, 1, 0xD0);
|
||||
LoadMessageBoxGfx(0, 0x14, 0xF0);
|
||||
InitBerryBlenderWindows();
|
||||
|
||||
sBerryBlenderData->mainState++;
|
||||
@@ -959,7 +958,7 @@ static void sub_807FAC8(void)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
sub_8082D28();
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
@@ -973,7 +972,7 @@ static void sub_807FAC8(void)
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 5:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 6:
|
||||
@@ -1163,7 +1162,7 @@ static void sub_8080018(void)
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 3:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 4:
|
||||
@@ -1330,9 +1329,8 @@ static void sub_8080588(void)
|
||||
|
||||
SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]);
|
||||
SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]);
|
||||
|
||||
sub_809882C(0, 1, 0xD0);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0);
|
||||
LoadUserWindowBorderGfx(0, 1, 0xD0);
|
||||
LoadMessageBoxGfx(0, 0x14, 0xF0);
|
||||
InitBerryBlenderWindows();
|
||||
|
||||
sBerryBlenderData->field_44 = 0;
|
||||
@@ -1490,7 +1488,7 @@ static void sub_80808D4(void)
|
||||
sBerryBlenderData->mainState++;
|
||||
break;
|
||||
case 3:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
sBerryBlenderData->mainState++;
|
||||
sBerryBlenderData->framesToWait = 0;
|
||||
break;
|
||||
@@ -2656,7 +2654,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
|
||||
case 9:
|
||||
if (sub_800A520())
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
sBerryBlenderData->gameEndState++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "berry_tag_screen.h"
|
||||
#include "berry.h"
|
||||
#include "decompress.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "item_menu.h"
|
||||
#include "constants/items.h"
|
||||
#include "item.h"
|
||||
@@ -247,7 +247,7 @@ static bool8 InitBerryTagScreen(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 15:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -481,7 +481,7 @@ static void DestroyFlavorCircleSprites(void)
|
||||
static void PrepareToCloseBerryTagScreen(u8 taskId)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_CloseBerryTagScreen;
|
||||
}
|
||||
|
||||
|
||||
+72
-71
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "bike.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "constants/flags.h"
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "overworld.h"
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
extern bool8 gBikeCyclingChallenge;
|
||||
extern u8 gBikeCollisions;
|
||||
@@ -56,7 +57,7 @@ static void Bike_UpdateDirTimerHistory(u8);
|
||||
static void Bike_UpdateABStartSelectHistory(u8);
|
||||
static u8 Bike_DPadToDirection(u16);
|
||||
static u8 get_some_collision(u8);
|
||||
static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *, s16, s16, u8, u8);
|
||||
static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *, s16, s16, u8, u8);
|
||||
static bool8 IsRunningDisallowedByMetatile(u8);
|
||||
static void Bike_TryAdvanceCyclingRoadCollisions();
|
||||
static u8 CanBikeFaceDirOnMetatile(u8, u8);
|
||||
@@ -152,7 +153,7 @@ static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
|
||||
static u8 GetMachBikeTransition(u8 *dirTraveling)
|
||||
{
|
||||
// if the dir updated before this function, get the relevent new direction to check later.
|
||||
u8 direction = player_get_direction_upper_nybble();
|
||||
u8 direction = GetPlayerMovementDirection();
|
||||
|
||||
// is the player standing still?
|
||||
if (*dirTraveling == 0)
|
||||
@@ -196,31 +197,31 @@ static void MachBikeTransition_FaceDirection(u8 direction)
|
||||
|
||||
static void MachBikeTransition_TurnDirection(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E))
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior))
|
||||
{
|
||||
PlayerTurnInPlace(direction);
|
||||
Bike_SetBikeStill();
|
||||
}
|
||||
else
|
||||
{
|
||||
MachBikeTransition_FaceDirection(playerMapObj->mapobj_unk_18);
|
||||
MachBikeTransition_FaceDirection(playerEventObj->facingDirection);
|
||||
}
|
||||
}
|
||||
|
||||
static void MachBikeTransition_TrySpeedUp(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
u8 collision;
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == FALSE)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == FALSE)
|
||||
{
|
||||
// we cannot go forward, so either slow down or, if we are stopped, idle face direction.
|
||||
if (gPlayerAvatar.bikeSpeed)
|
||||
MachBikeTransition_TrySlowDown(playerMapObj->placeholder18);
|
||||
MachBikeTransition_TrySlowDown(playerEventObj->movementDirection);
|
||||
else
|
||||
MachBikeTransition_FaceDirection(playerMapObj->placeholder18);
|
||||
MachBikeTransition_FaceDirection(playerEventObj->movementDirection);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -296,7 +297,7 @@ static u8 CheckMovementInputAcroBike(u8 *newDirection, u16 newKeys, u16 heldKeys
|
||||
|
||||
static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
u8 direction = player_get_direction_upper_nybble();
|
||||
u8 direction = GetPlayerMovementDirection();
|
||||
|
||||
gPlayerAvatar.bikeFrameCounter = 0;
|
||||
if (*newDirection == DIR_NONE)
|
||||
@@ -349,7 +350,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
|
||||
Bike_SetBikeStill();
|
||||
return ACRO_TRANS_TURN_DIRECTION;
|
||||
}
|
||||
direction = player_get_direction_upper_nybble();
|
||||
direction = GetPlayerMovementDirection();
|
||||
if (*newDirection == AcroBike_GetJumpDirection())
|
||||
{
|
||||
Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump.
|
||||
@@ -376,10 +377,10 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
|
||||
static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
u8 direction;
|
||||
struct MapObject *playerMapObj;
|
||||
struct EventObject *playerEventObj;
|
||||
|
||||
direction = player_get_direction_upper_nybble();
|
||||
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
direction = GetPlayerMovementDirection();
|
||||
playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
gPlayerAvatar.runningState = NOT_MOVING;
|
||||
|
||||
if (heldKeys & B_BUTTON)
|
||||
@@ -388,7 +389,7 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
|
||||
{
|
||||
// B button was released.
|
||||
gPlayerAvatar.bikeFrameCounter = 0;
|
||||
if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
|
||||
if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
|
||||
{
|
||||
// Go back to normal on flat ground
|
||||
*newDirection = direction;
|
||||
@@ -423,15 +424,15 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16
|
||||
static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
u8 direction;
|
||||
struct MapObject *playerMapObj;
|
||||
struct EventObject *playerEventObj;
|
||||
|
||||
direction = player_get_direction_upper_nybble();
|
||||
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
direction = GetPlayerMovementDirection();
|
||||
playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
if (!(heldKeys & B_BUTTON))
|
||||
{
|
||||
// B button was released
|
||||
Bike_SetBikeStill();
|
||||
if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
|
||||
if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
|
||||
{
|
||||
// even though B was released, dont undo the wheelie on the bumpy slope.
|
||||
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
|
||||
@@ -470,15 +471,15 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKey
|
||||
static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
u8 direction;
|
||||
struct MapObject *playerMapObj;
|
||||
struct EventObject *playerEventObj;
|
||||
|
||||
direction = player_get_direction_lower_nybble();
|
||||
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
direction = GetPlayerFacingDirection();
|
||||
playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
if (!(heldKeys & B_BUTTON))
|
||||
{
|
||||
// we were moving on a wheelie, but we let go while moving. reset bike still status
|
||||
Bike_SetBikeStill();
|
||||
if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
|
||||
if (!MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
|
||||
{
|
||||
// we let go of B and arent on a bumpy slope, set state to normal because now we need to handle this
|
||||
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
|
||||
@@ -524,10 +525,10 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 he
|
||||
|
||||
static u8 AcroBikeHandleInputSidewaysJump(u8 *ptr, u16 newKeys, u16 heldKeys)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
playerMapObj->mapobj_bit_9 = 0;
|
||||
FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
|
||||
playerEventObj->facingDirectionLocked = 0;
|
||||
SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
|
||||
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
|
||||
return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
|
||||
}
|
||||
@@ -545,21 +546,21 @@ static void AcroBikeTransition_FaceDirection(u8 direction)
|
||||
|
||||
static void AcroBikeTransition_TurnDirection(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
direction = playerMapObj->placeholder18;
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
direction = playerEventObj->movementDirection;
|
||||
PlayerFaceDirection(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_Moving(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
{
|
||||
AcroBikeTransition_FaceDirection(playerMapObj->placeholder18);
|
||||
AcroBikeTransition_FaceDirection(playerEventObj->movementDirection);
|
||||
return;
|
||||
}
|
||||
collision = get_some_collision(direction);
|
||||
@@ -580,48 +581,48 @@ static void AcroBikeTransition_Moving(u8 direction)
|
||||
|
||||
static void AcroBikeTransition_NormalToWheelie(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
direction = playerMapObj->placeholder18;
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
direction = playerEventObj->movementDirection;
|
||||
PlayerStartWheelie(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_WheelieToNormal(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
direction = playerMapObj->placeholder18;
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
direction = playerEventObj->movementDirection;
|
||||
PlayerEndWheelie(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_WheelieIdle(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
direction = playerMapObj->placeholder18;
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
direction = playerEventObj->movementDirection;
|
||||
PlayerIdleWheelie(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_WheelieHoppingStanding(u8 direction)
|
||||
{
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
direction = playerMapObj->placeholder18;
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
direction = playerEventObj->movementDirection;
|
||||
PlayerStandingHoppingWheelie(direction);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
{
|
||||
AcroBikeTransition_WheelieHoppingStanding(playerMapObj->placeholder18);
|
||||
AcroBikeTransition_WheelieHoppingStanding(playerEventObj->movementDirection);
|
||||
return;
|
||||
}
|
||||
collision = get_some_collision(direction);
|
||||
@@ -651,7 +652,7 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
|
||||
static void AcroBikeTransition_SideJump(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj;
|
||||
struct EventObject *playerEventObj;
|
||||
|
||||
collision = get_some_collision(direction);
|
||||
if (collision != 0)
|
||||
@@ -669,10 +670,10 @@ static void AcroBikeTransition_SideJump(u8 direction)
|
||||
return;
|
||||
}
|
||||
}
|
||||
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
PlaySE(SE_JITE_PYOKO);
|
||||
playerMapObj->mapobj_bit_9 = 1;
|
||||
PlayerSetAnimId(sub_8093514(direction), 2);
|
||||
playerEventObj->facingDirectionLocked = 1;
|
||||
PlayerSetAnimId(GetJumpMovementAction(direction), 2);
|
||||
}
|
||||
|
||||
static void AcroBikeTransition_TurnJump(u8 direction)
|
||||
@@ -683,11 +684,11 @@ static void AcroBikeTransition_TurnJump(u8 direction)
|
||||
static void AcroBikeTransition_WheelieMoving(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
{
|
||||
PlayerIdleWheelie(playerMapObj->placeholder18);
|
||||
PlayerIdleWheelie(playerEventObj->movementDirection);
|
||||
return;
|
||||
}
|
||||
collision = get_some_collision(direction);
|
||||
@@ -703,7 +704,7 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
|
||||
}
|
||||
else if (collision <= 4)
|
||||
{
|
||||
if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
|
||||
if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
|
||||
PlayerIdleWheelie(direction);
|
||||
else
|
||||
sub_808B980(direction); //hit wall?
|
||||
@@ -717,11 +718,11 @@ static void AcroBikeTransition_WheelieMoving(u8 direction)
|
||||
static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
{
|
||||
PlayerStartWheelie(playerMapObj->placeholder18);
|
||||
PlayerStartWheelie(playerEventObj->movementDirection);
|
||||
return;
|
||||
}
|
||||
collision = get_some_collision(direction);
|
||||
@@ -737,7 +738,7 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
|
||||
}
|
||||
else if (collision <= 4)
|
||||
{
|
||||
if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
|
||||
if (MetatileBehavior_IsBumpySlope(playerEventObj->currentMetatileBehavior))
|
||||
PlayerIdleWheelie(direction);
|
||||
else
|
||||
sub_808B980(direction); //hit wall?
|
||||
@@ -751,11 +752,11 @@ static void AcroBikeTransition_WheelieRisingMoving(u8 direction)
|
||||
static void AcroBikeTransition_WheelieLoweringMoving(u8 direction)
|
||||
{
|
||||
u8 collision;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
|
||||
if (CanBikeFaceDirOnMetatile(direction, playerEventObj->currentMetatileBehavior) == 0)
|
||||
{
|
||||
PlayerEndWheelie(playerMapObj->placeholder18);
|
||||
PlayerEndWheelie(playerEventObj->movementDirection);
|
||||
return;
|
||||
}
|
||||
collision = get_some_collision(direction);
|
||||
@@ -880,18 +881,18 @@ static u8 get_some_collision(u8 direction)
|
||||
s16 x;
|
||||
s16 y;
|
||||
u8 metatitleBehavior;
|
||||
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
|
||||
struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
|
||||
|
||||
x = playerMapObj->coords2.x;
|
||||
y = playerMapObj->coords2.y;
|
||||
x = playerEventObj->currentCoords.x;
|
||||
y = playerEventObj->currentCoords.y;
|
||||
MoveCoords(direction, &x, &y);
|
||||
metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
return Bike_CheckCollisionTryAdvanceCollisionCount(playerMapObj, x, y, direction, metatitleBehavior);
|
||||
return Bike_CheckCollisionTryAdvanceCollisionCount(playerEventObj, x, y, direction, metatitleBehavior);
|
||||
}
|
||||
|
||||
static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
|
||||
static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct EventObject *eventObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
|
||||
{
|
||||
u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
|
||||
u8 collision = CheckForEventObjectCollision(eventObject, x, y, direction, metatitleBehavior);
|
||||
|
||||
if (collision > 4)
|
||||
return collision;
|
||||
@@ -979,7 +980,7 @@ bool8 IsBikingDisallowedByPlayer(void)
|
||||
|
||||
bool8 player_should_look_direction_be_enforced_upon_movement(void)
|
||||
{
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) != FALSE)
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) != FALSE)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
@@ -1062,7 +1063,7 @@ void Bike_HandleBumpySlopeJump(void)
|
||||
if (MetatileBehavior_IsBumpySlope(tileBehavior))
|
||||
{
|
||||
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
|
||||
sub_808C1B4(player_get_direction_upper_nybble());
|
||||
sub_808C1B4(GetPlayerMovementDirection());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+20
-8
@@ -7,6 +7,7 @@
|
||||
#include "task.h"
|
||||
#include "field_effect.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
|
||||
extern void DrawWholeMapView(); // field_camera
|
||||
@@ -14,7 +15,6 @@ extern void SetCameraPanningCallback(void ( *callback)()); // field_camera
|
||||
extern void InstallCameraPanAheadCallback(void);
|
||||
extern void SetCameraPanning(s16 x, s16 y);
|
||||
extern u8 GetCursorSelectionMonId(void);
|
||||
extern void FieldEffectActiveListRemove(u8 id); // field_effect
|
||||
extern u8 oei_task_add(void);
|
||||
|
||||
// why do this, GF?
|
||||
@@ -24,7 +24,8 @@ enum
|
||||
FLY_PUZZLE
|
||||
};
|
||||
|
||||
extern u8 gBraillePuzzleCallbackFlag;
|
||||
EWRAM_DATA static u8 sBraillePuzzleCallbackFlag = 0;
|
||||
|
||||
extern const u8 gUnknown_085EFE74[][2];
|
||||
|
||||
void SealedChamberShakingEffect(u8);
|
||||
@@ -205,14 +206,25 @@ void SealedChamberShakingEffect(u8 taskId)
|
||||
// moved later in the function because it was rewritten.
|
||||
bool8 ShouldDoBrailleStrengthEffect(void)
|
||||
{
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x06))
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH)
|
||||
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(DESERT_RUINS)
|
||||
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(DESERT_RUINS))
|
||||
{
|
||||
if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{ gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{ gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
|
||||
{ gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
|
||||
{
|
||||
sBraillePuzzleCallbackFlag = STRENGTH_PUZZLE;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -249,7 +261,7 @@ bool8 ShouldDoBrailleFlyEffect(void)
|
||||
if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44))
|
||||
{
|
||||
if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
|
||||
{ gBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
|
||||
{ sBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -362,7 +374,7 @@ bool8 FldEff_UsePuzzleEffect(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
|
||||
if (gBraillePuzzleCallbackFlag == FLY_PUZZLE)
|
||||
if (sBraillePuzzleCallbackFlag == FLY_PUZZLE)
|
||||
{
|
||||
gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
|
||||
gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
|
||||
|
||||
@@ -202,6 +202,6 @@ static void InitClearSaveDataScreenWindows(void)
|
||||
InitWindows(sClearSaveTextWindow);
|
||||
DeactivateAllTextPrinters();
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
sub_80987D4(0, 0, 2, 224);
|
||||
LoadWindowGfx(0, 0, 2, 224);
|
||||
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
|
||||
}
|
||||
|
||||
Executable
+52
@@ -0,0 +1,52 @@
|
||||
#ifndef GUARD_BASE_OAM_H
|
||||
#define GUARD_BASE_OAM_H
|
||||
|
||||
const struct OamData gEventObjectBaseOam_8x8 = {
|
||||
.shape = 0,
|
||||
.size = 0,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_16x8 = {
|
||||
.shape = 1,
|
||||
.size = 0,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_16x16 = {
|
||||
.shape = 0,
|
||||
.size = 1,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_32x8 = {
|
||||
.shape = 1,
|
||||
.size = 1,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_64x32 = {
|
||||
.shape = 1,
|
||||
.size = 3,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_16x32 = {
|
||||
.shape = 2,
|
||||
.size = 2,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_32x32 = {
|
||||
.shape = 0,
|
||||
.size = 2,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
const struct OamData gEventObjectBaseOam_64x64 = {
|
||||
.shape = 0,
|
||||
.size = 3,
|
||||
.priority = 2
|
||||
};
|
||||
|
||||
#endif //GUARD_BASE_OAM_H
|
||||
+570
@@ -0,0 +1,570 @@
|
||||
#ifndef GUARD_BERRY_TREE_GRAPHICS_TABLES_H
|
||||
#define GUARD_BERRY_TREE_GRAPHICS_TABLES_H
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_PechaBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_PechaBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_KelpsyBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_KelpsyBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_WepearBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_WepearBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_IapapaBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_IapapaBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_CheriBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_CheriBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_FigyBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_FigyBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_MagoBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_MagoBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_LumBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_LumBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_RazzBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_RazzBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_GrepaBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_GrepaBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_RabutaBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_RabutaBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_NomelBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_NomelBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_LeppaBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_LeppaBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_LiechiBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_LiechiBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_HondewBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_HondewBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_AguavBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_AguavBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_WikiBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_WikiBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_PomegBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_PomegBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_RawstBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_RawstBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_SpelonBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_SpelonBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_ChestoBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_ChestoBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_OranBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_OranBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_PersimBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_PersimBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_SitrusBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_SitrusBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_AspearBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_AspearBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_PamtreBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_PamtreBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_CornnBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_CornnBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_LansatBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_LansatBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_DurinBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_DurinBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
|
||||
|
||||
const struct SpriteFrameImage gEventObjectPicTable_TamatoBerryTree[] = {
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeDirtPile),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_0),
|
||||
obj_frame_tiles(gEventObjectPic_BerryTreeSprout_1),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_0),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_1),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_2),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_3),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_4),
|
||||
obj_frame_tiles(gEventObjectPic_TamatoBerryTree_5),
|
||||
};
|
||||
|
||||
const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2};
|
||||
|
||||
const u8 gDeadBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES};
|
||||
|
||||
const u8 gBerryTreeEventObjectGraphicsIdTable[] = {EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_EARLY_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES, EVENT_OBJ_GFX_BERRY_TREE_LATE_STAGES};
|
||||
|
||||
const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
|
||||
gEventObjectPicTable_CheriBerryTree,
|
||||
gEventObjectPicTable_ChestoBerryTree,
|
||||
gEventObjectPicTable_PechaBerryTree,
|
||||
gEventObjectPicTable_RawstBerryTree,
|
||||
gEventObjectPicTable_AspearBerryTree,
|
||||
gEventObjectPicTable_LeppaBerryTree,
|
||||
gEventObjectPicTable_OranBerryTree,
|
||||
gEventObjectPicTable_PersimBerryTree,
|
||||
gEventObjectPicTable_LumBerryTree,
|
||||
gEventObjectPicTable_SitrusBerryTree,
|
||||
gEventObjectPicTable_FigyBerryTree,
|
||||
gEventObjectPicTable_WikiBerryTree,
|
||||
gEventObjectPicTable_MagoBerryTree,
|
||||
gEventObjectPicTable_AguavBerryTree,
|
||||
gEventObjectPicTable_IapapaBerryTree,
|
||||
gEventObjectPicTable_RazzBerryTree,
|
||||
gEventObjectPicTable_RazzBerryTree,
|
||||
gEventObjectPicTable_MagoBerryTree,
|
||||
gEventObjectPicTable_WepearBerryTree,
|
||||
gEventObjectPicTable_IapapaBerryTree,
|
||||
gEventObjectPicTable_PomegBerryTree,
|
||||
gEventObjectPicTable_KelpsyBerryTree,
|
||||
gEventObjectPicTable_WepearBerryTree,
|
||||
gEventObjectPicTable_HondewBerryTree,
|
||||
gEventObjectPicTable_GrepaBerryTree,
|
||||
gEventObjectPicTable_TamatoBerryTree,
|
||||
gEventObjectPicTable_CornnBerryTree,
|
||||
gEventObjectPicTable_PomegBerryTree,
|
||||
gEventObjectPicTable_RabutaBerryTree,
|
||||
gEventObjectPicTable_NomelBerryTree,
|
||||
gEventObjectPicTable_SpelonBerryTree,
|
||||
gEventObjectPicTable_PamtreBerryTree,
|
||||
gEventObjectPicTable_RabutaBerryTree,
|
||||
gEventObjectPicTable_DurinBerryTree,
|
||||
gEventObjectPicTable_HondewBerryTree,
|
||||
gEventObjectPicTable_LiechiBerryTree,
|
||||
gEventObjectPicTable_HondewBerryTree,
|
||||
gEventObjectPicTable_AguavBerryTree,
|
||||
gEventObjectPicTable_PomegBerryTree,
|
||||
gEventObjectPicTable_GrepaBerryTree,
|
||||
gEventObjectPicTable_LansatBerryTree,
|
||||
gEventObjectPicTable_CornnBerryTree,
|
||||
gEventObjectPicTable_DurinBerryTree,
|
||||
};
|
||||
|
||||
const u8 *const gBerryTreePaletteSlotTablePointers[] = {
|
||||
gBerryTreePaletteSlotTable_Cheri,
|
||||
gBerryTreePaletteSlotTable_Chesto,
|
||||
gBerryTreePaletteSlotTable_Pecha,
|
||||
gBerryTreePaletteSlotTable_Rawst,
|
||||
gBerryTreePaletteSlotTable_Aspear,
|
||||
gBerryTreePaletteSlotTable_Leppa,
|
||||
gBerryTreePaletteSlotTable_Oran,
|
||||
gBerryTreePaletteSlotTable_Persim,
|
||||
gBerryTreePaletteSlotTable_Lum,
|
||||
gBerryTreePaletteSlotTable_Sitrus,
|
||||
gBerryTreePaletteSlotTable_Figy,
|
||||
gBerryTreePaletteSlotTable_Wiki,
|
||||
gBerryTreePaletteSlotTable_Mago,
|
||||
gBerryTreePaletteSlotTable_Aguav,
|
||||
gBerryTreePaletteSlotTable_Iapapa,
|
||||
gBerryTreePaletteSlotTable_Razz,
|
||||
gBerryTreePaletteSlotTable_Razz,
|
||||
gBerryTreePaletteSlotTable_Mago,
|
||||
gBerryTreePaletteSlotTable_Wepear,
|
||||
gBerryTreePaletteSlotTable_Iapapa,
|
||||
gBerryTreePaletteSlotTable_Pomeg,
|
||||
gBerryTreePaletteSlotTable_Kelpsy,
|
||||
gBerryTreePaletteSlotTable_Wepear,
|
||||
gBerryTreePaletteSlotTable_Hondew,
|
||||
gBerryTreePaletteSlotTable_Grepa,
|
||||
gBerryTreePaletteSlotTable_Tamato,
|
||||
gBerryTreePaletteSlotTable_Cornn,
|
||||
gBerryTreePaletteSlotTable_Pomeg,
|
||||
gBerryTreePaletteSlotTable_Rabuta,
|
||||
gBerryTreePaletteSlotTable_Nomel,
|
||||
gBerryTreePaletteSlotTable_Spelon,
|
||||
gBerryTreePaletteSlotTable_Pamtre,
|
||||
gBerryTreePaletteSlotTable_Rabuta,
|
||||
gBerryTreePaletteSlotTable_Durin,
|
||||
gBerryTreePaletteSlotTable_Hondew,
|
||||
gBerryTreePaletteSlotTable_Liechi,
|
||||
gBerryTreePaletteSlotTable_Hondew,
|
||||
gBerryTreePaletteSlotTable_Aguav,
|
||||
gBerryTreePaletteSlotTable_Pomeg,
|
||||
gBerryTreePaletteSlotTable_Grepa,
|
||||
gBerryTreePaletteSlotTable_Lansat,
|
||||
gBerryTreePaletteSlotTable_Cornn,
|
||||
gBerryTreePaletteSlotTable_Durin,
|
||||
};
|
||||
|
||||
const u8 *const gBerryTreeEventObjectGraphicsIdTablePointers[] = {
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
gBerryTreeEventObjectGraphicsIdTable,
|
||||
};
|
||||
|
||||
|
||||
#endif //GUARD_BERRY_TREE_GRAPHICS_TABLES_H
|
||||
+1176
File diff suppressed because it is too large
Load Diff
+1669
File diff suppressed because it is too large
Load Diff
+250
@@ -0,0 +1,250 @@
|
||||
#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
|
||||
#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
|
||||
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal = {0xFFFF, 0x1100, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing = {0xFFFF, 0x1100, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump = {0xFFFF, 0x110B, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_QuintyPlump, gEventObjectPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1 = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2 = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleBoy2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2 = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LittleGirl2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy3, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Girl3, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy4, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_FatMan, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman3, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman4, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man3, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman5, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cook, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman6, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldMan2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_OldWoman2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Camper, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Picnicker, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man4, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Woman7, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Youngster, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BugCatcher, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_PsychicM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maniac, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HexManiac, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza1 = {0xFFFF, 0x1105, 0x11FF, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SwimmerF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BlackBelt, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Beauty, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lass, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Gentleman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sailor, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Fisherman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Hiker, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Nurse, gEventObjectPicTable_Nurse, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ItemBall, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree = {0xFFFF, 0x1103, 0x11FF, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, NULL, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, 0x1103, 0x11FF, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BerryTree, gEventObjectPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ProfBirch, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man5, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man6, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ReporterF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_CuttableTree, gEventObjectPicTable_CuttableTree, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MartEmployee, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Teala, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_BreakableRock, gEventObjectPicTable_BreakableRock, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal = {0xFFFF, 0x1110, 0x1102, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing = {0xFFFF, 0x1110, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck = {0xFFFF, 0x110D, 0x11FF, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_Truck, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Truck, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothCarryingBox = {0xFFFF, 0x110E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothFacingAway = {0xFFFF, 0x110E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BirchsBag, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_EnemyZigzagoon = {0xFFFF, 0x110F, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena = {0xFFFF, 0x111C, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Poochyena, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Artist, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal = {0xFFFF, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing = {0xFFFF, 0x1100, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayMachBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_AcroBike, gEventObjectPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing = {0xFFFF, 0x1110, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Surfing, gEventObjectPicTable_MaySurfing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_FieldMove, gEventObjectPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Cameraman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater = {0xFFFF, 0x1115, 0x11FF, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater = {0xFFFF, 0x1115, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox = {0xFFFF, 0x1112, 0x11FF, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MovingBox, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar = {0xFFFF, 0x1113, 0x11FF, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CableCar, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2 = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scientist2, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7 = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Man7, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sidney, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Phoebe, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Glacia, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Drake, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Roxanne, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Brawly, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wattson, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Flannery, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Norman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Winona, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Liza, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Tate, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wallace, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Steven, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wally, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Fishing, gEventObjectPicTable_MayFishing, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal = {0xFFFF, 0x1114, 0x11FF, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_8x8, gEventObjectSpriteOamTables_SSTidal, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SSTidal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow = {0xFFFF, 0x111B, 0x11FF, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_8x8, gEventObjectSpriteOamTables_SubmarineShadow, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PichuDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MarillDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DittoDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WynautDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_LotadDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_PikaCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_RoundCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_KissCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_SpinCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion = {0xFFFF, 0x1106, 0x11FF, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BallCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_GrassCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_FireCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_WaterCushion, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios = {0xFFFF, 0x1103, 0x11FF, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5 = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Boy5, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestOldMan = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_ContestOldMan, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering = {0xFFFF, 0x1100, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering = {0xFFFF, 0x1110, 0x1102, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MayWatering, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating = {0xFFFF, 0x1100, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_MayDecorating, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Archie, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie = {0xFFFF, 0x1104, 0x11FF, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Maxie, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1 = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreFront, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1 = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_GroudonFront, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre3 = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreSide, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon3 = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Groudon3, gEventObjectPicTable_GroudonSide, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Fossil, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock = {0xFFFF, 0x1104, 0x11FF, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice = {0xFFFF, 0x1105, 0x11FF, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel = {0xFFFF, 0x1106, 0x11FF, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Regi, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Skitty, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1 = {0xFFFF, 0x1105, 0x11FF, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2 = {0xFFFF, 0x1116, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_KyogreFront, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2 = {0xFFFF, 0x1118, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_GroudonFront, gEventObjectRotScalAnimTable_KyogreGroudon};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza2 = {0xFFFF, 0x1105, 0x11FF, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gEventObjectBaseOam_64x64, gEventObjectSpriteOamTables_64x64, gEventObjectImageAnimTable_Rayquaza2, gEventObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Pikachu, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azumarill, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Wingull, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2 = {0xFFFF, 0x1105, 0x1102, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kecleon, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming = {0xFFFF, 0x1104, 0x11FF, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill = {0xFFFF, 0x1103, 0x11FF, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x16, gEventObjectSpriteOamTables_16x16, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Azurill, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Mom, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay = {0xFFFF, 0x1110, 0x1102, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_BrendanMayNormal, gEventObjectPicTable_MayNormal, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Juan = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Juan, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scott = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Scott, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Statue = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_Statue, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kirlia = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Kirlia, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Dusclops = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Dusclops, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnionRoomAttendant = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Red = {0xFFFF, 0x111D, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Red, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Leaf = {0xFFFF, 0x111D, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Leaf, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sudowoodo = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mew = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Mew, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Deoxys = {0xFFFF, 0x111E, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Deoxys, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirthIslandStone = {0xFFFF, 0x111F, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Inanimate, gEventObjectPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Anabel = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Anabel, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tucker = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Tucker, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Greta = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Greta, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Spenser = {0xFFFF, 0x1103, 0x11FF, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Spenser, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Noland = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Noland, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lucy = {0xFFFF, 0x1106, 0x11FF, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lucy, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brandon = {0xFFFF, 0x1105, 0x11FF, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Brandon, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireBrendan = {0xFFFF, 0x1122, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireMay = {0xFFFF, 0x1123, 0x11FF, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_16x32, gEventObjectSpriteOamTables_16x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lugia = {0xFFFF, 0x1121, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_Standard, gEventObjectPicTable_Lugia, gDummySpriteAffineAnimTable};
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HoOh = {0xFFFF, 0x1120, 0x11FF, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gEventObjectBaseOam_32x32, gEventObjectSpriteOamTables_32x32, gEventObjectImageAnimTable_HoOh, gEventObjectPicTable_HoOh, gDummySpriteAffineAnimTable};
|
||||
|
||||
#endif //GUARD_EVENT_OBJECT_GRAPHICS_INFO_H
|
||||
@@ -0,0 +1,504 @@
|
||||
#ifndef GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
|
||||
#define GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
|
||||
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanNormal;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanMachBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanSurfing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFieldMove;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_QuintyPlump;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleBoy2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LittleGirl2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Girl3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy4;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FatMan;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman4;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman5;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cook;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman6;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldMan2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_OldWoman2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Camper;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Picnicker;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man4;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Woman7;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Youngster;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BugCatcher;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PsychicM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SchoolKidM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maniac;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HexManiac;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwimmerF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BlackBelt;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Beauty;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lass;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Gentleman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sailor;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fisherman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RunningTriathleteF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hiker;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyclingTriathleteF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Nurse;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ItemBall;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTree;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeEarlyStages;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BerryTreeLateStages;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanAcroBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ProfBirch;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man5;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man6;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ReporterF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Anabel;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tucker;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Greta;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Spenser;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Noland;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lucy;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedNatuDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMagnemiteDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedSquirtleDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedWooperDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPikachuDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedPorygon2Doll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CuttableTree;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MartEmployee;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RooftopSaleWoman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Teala;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BreakableRock;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PushableBoulder;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MrBrineysBoat;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayNormal;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayMachBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayAcroBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MaySurfing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFieldMove;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Truck;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothCarryingBox;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_VigorothFacingAway;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirchsBag;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_EnemyZigzagoon;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Artist;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanNormal;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanMachBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanAcroBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanSurfing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalBrendanFieldMove;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayNormal;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayMachBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayAcroBike;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMaySurfing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RivalMayFieldMove;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Cameraman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanUnderwater;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayUnderwater;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MovingBox;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CableCar;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scientist2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Man7;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AquaMemberF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberM;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MagmaMemberF;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sidney;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Phoebe;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Glacia;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Drake;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Roxanne;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brawly;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wattson;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Flannery;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Norman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Winona;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Liza;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Tate;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wallace;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Steven;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wally;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireLittleBoy;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanFishing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayFishing;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HotSpringsOldWoman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SSTidal;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SubmarineShadow;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PichuDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikachuDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MarillDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TogepiDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_CyndaquilDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ChikoritaDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TotodileDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_JigglypuffDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MeowthDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ClefairyDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DittoDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SmoochumDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TreeckoDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TorchicDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MudkipDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DuskullDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WynautDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BaltoyDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KecleonDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_AzurillDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SkittyDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SwabluDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GulpinDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LotadDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SeedotDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_PikaCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RoundCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_KissCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ZigzagCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_SpinCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_DiamondCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BallCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_GrassCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_FireCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_WaterCushion;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigSnorlaxDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRhydonDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigLaprasDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigVenusaurDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigCharizardDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigBlastoiseDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigWailmerDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegirockDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegiceDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BigRegisteelDoll;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latias;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Latios;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Boy5;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_ContestOldMan;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanWatering;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayWatering;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BrendanDecorating;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MayDecorating;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Archie;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Maxie;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Fossil;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regirock;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Regice;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Registeel;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Skitty;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Rayquaza2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Zigzagoon;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Pikachu;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azumarill;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Wingull;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kecleon2;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_TuberMSwimming;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Azurill;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mom;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkBrendan;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_LinkMay;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Juan;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Scott;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Poochyena;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kyogre3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Groudon3;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_MysteryEventDeliveryman;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Statue;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Kirlia;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Dusclops;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnionRoomAttendant;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Sudowoodo;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Mew;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Red;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Leaf;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Deoxys;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_BirthIslandStone;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Brandon;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireBrendan;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_RubySapphireMay;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Lugia;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_HoOh;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Bard;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Hipster;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Trader;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Storyteller;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_Giddy;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan1;
|
||||
const struct EventObjectGraphicsInfo gEventObjectGraphicsInfo_UnusedMauvilleOldMan2;
|
||||
|
||||
|
||||
const struct EventObjectGraphicsInfo *const gEventObjectGraphicsInfoPointers[] = {
|
||||
&gEventObjectGraphicsInfo_BrendanNormal,
|
||||
&gEventObjectGraphicsInfo_BrendanMachBike,
|
||||
&gEventObjectGraphicsInfo_BrendanSurfing,
|
||||
&gEventObjectGraphicsInfo_BrendanFieldMove,
|
||||
&gEventObjectGraphicsInfo_QuintyPlump,
|
||||
&gEventObjectGraphicsInfo_LittleBoy1,
|
||||
&gEventObjectGraphicsInfo_LittleGirl1,
|
||||
&gEventObjectGraphicsInfo_Boy1,
|
||||
&gEventObjectGraphicsInfo_Girl1,
|
||||
&gEventObjectGraphicsInfo_Boy2,
|
||||
&gEventObjectGraphicsInfo_Girl2,
|
||||
&gEventObjectGraphicsInfo_LittleBoy2,
|
||||
&gEventObjectGraphicsInfo_LittleGirl2,
|
||||
&gEventObjectGraphicsInfo_Boy3,
|
||||
&gEventObjectGraphicsInfo_Girl3,
|
||||
&gEventObjectGraphicsInfo_Boy4,
|
||||
&gEventObjectGraphicsInfo_Woman1,
|
||||
&gEventObjectGraphicsInfo_FatMan,
|
||||
&gEventObjectGraphicsInfo_Woman2,
|
||||
&gEventObjectGraphicsInfo_Man1,
|
||||
&gEventObjectGraphicsInfo_Woman3,
|
||||
&gEventObjectGraphicsInfo_OldMan1,
|
||||
&gEventObjectGraphicsInfo_OldWoman1,
|
||||
&gEventObjectGraphicsInfo_Man2,
|
||||
&gEventObjectGraphicsInfo_Woman4,
|
||||
&gEventObjectGraphicsInfo_Man3,
|
||||
&gEventObjectGraphicsInfo_Woman5,
|
||||
&gEventObjectGraphicsInfo_Cook,
|
||||
&gEventObjectGraphicsInfo_Woman6,
|
||||
&gEventObjectGraphicsInfo_OldMan2,
|
||||
&gEventObjectGraphicsInfo_OldWoman2,
|
||||
&gEventObjectGraphicsInfo_Camper,
|
||||
&gEventObjectGraphicsInfo_Picnicker,
|
||||
&gEventObjectGraphicsInfo_Man4,
|
||||
&gEventObjectGraphicsInfo_Woman7,
|
||||
&gEventObjectGraphicsInfo_Youngster,
|
||||
&gEventObjectGraphicsInfo_BugCatcher,
|
||||
&gEventObjectGraphicsInfo_PsychicM,
|
||||
&gEventObjectGraphicsInfo_SchoolKidM,
|
||||
&gEventObjectGraphicsInfo_Maniac,
|
||||
&gEventObjectGraphicsInfo_HexManiac,
|
||||
&gEventObjectGraphicsInfo_Rayquaza1,
|
||||
&gEventObjectGraphicsInfo_SwimmerM,
|
||||
&gEventObjectGraphicsInfo_SwimmerF,
|
||||
&gEventObjectGraphicsInfo_BlackBelt,
|
||||
&gEventObjectGraphicsInfo_Beauty,
|
||||
&gEventObjectGraphicsInfo_Scientist1,
|
||||
&gEventObjectGraphicsInfo_Lass,
|
||||
&gEventObjectGraphicsInfo_Gentleman,
|
||||
&gEventObjectGraphicsInfo_Sailor,
|
||||
&gEventObjectGraphicsInfo_Fisherman,
|
||||
&gEventObjectGraphicsInfo_RunningTriathleteM,
|
||||
&gEventObjectGraphicsInfo_RunningTriathleteF,
|
||||
&gEventObjectGraphicsInfo_TuberF,
|
||||
&gEventObjectGraphicsInfo_TuberM,
|
||||
&gEventObjectGraphicsInfo_Hiker,
|
||||
&gEventObjectGraphicsInfo_CyclingTriathleteM,
|
||||
&gEventObjectGraphicsInfo_CyclingTriathleteF,
|
||||
&gEventObjectGraphicsInfo_Nurse,
|
||||
&gEventObjectGraphicsInfo_ItemBall,
|
||||
&gEventObjectGraphicsInfo_BerryTree,
|
||||
&gEventObjectGraphicsInfo_BerryTreeEarlyStages,
|
||||
&gEventObjectGraphicsInfo_BerryTreeLateStages,
|
||||
&gEventObjectGraphicsInfo_BrendanAcroBike,
|
||||
&gEventObjectGraphicsInfo_ProfBirch,
|
||||
&gEventObjectGraphicsInfo_Man5,
|
||||
&gEventObjectGraphicsInfo_Man6,
|
||||
&gEventObjectGraphicsInfo_ReporterM,
|
||||
&gEventObjectGraphicsInfo_ReporterF,
|
||||
&gEventObjectGraphicsInfo_Bard,
|
||||
&gEventObjectGraphicsInfo_Anabel,
|
||||
&gEventObjectGraphicsInfo_Tucker,
|
||||
&gEventObjectGraphicsInfo_Greta,
|
||||
&gEventObjectGraphicsInfo_Spenser,
|
||||
&gEventObjectGraphicsInfo_Noland,
|
||||
&gEventObjectGraphicsInfo_Lucy,
|
||||
&gEventObjectGraphicsInfo_UnusedNatuDoll,
|
||||
&gEventObjectGraphicsInfo_UnusedMagnemiteDoll,
|
||||
&gEventObjectGraphicsInfo_UnusedSquirtleDoll,
|
||||
&gEventObjectGraphicsInfo_UnusedWooperDoll,
|
||||
&gEventObjectGraphicsInfo_UnusedPikachuDoll,
|
||||
&gEventObjectGraphicsInfo_UnusedPorygon2Doll,
|
||||
&gEventObjectGraphicsInfo_CuttableTree,
|
||||
&gEventObjectGraphicsInfo_MartEmployee,
|
||||
&gEventObjectGraphicsInfo_RooftopSaleWoman,
|
||||
&gEventObjectGraphicsInfo_Teala,
|
||||
&gEventObjectGraphicsInfo_BreakableRock,
|
||||
&gEventObjectGraphicsInfo_PushableBoulder,
|
||||
&gEventObjectGraphicsInfo_MrBrineysBoat,
|
||||
&gEventObjectGraphicsInfo_MayNormal,
|
||||
&gEventObjectGraphicsInfo_MayMachBike,
|
||||
&gEventObjectGraphicsInfo_MayAcroBike,
|
||||
&gEventObjectGraphicsInfo_MaySurfing,
|
||||
&gEventObjectGraphicsInfo_MayFieldMove,
|
||||
&gEventObjectGraphicsInfo_Truck,
|
||||
&gEventObjectGraphicsInfo_VigorothCarryingBox,
|
||||
&gEventObjectGraphicsInfo_VigorothFacingAway,
|
||||
&gEventObjectGraphicsInfo_BirchsBag,
|
||||
&gEventObjectGraphicsInfo_EnemyZigzagoon,
|
||||
&gEventObjectGraphicsInfo_Artist,
|
||||
&gEventObjectGraphicsInfo_RivalBrendanNormal,
|
||||
&gEventObjectGraphicsInfo_RivalBrendanMachBike,
|
||||
&gEventObjectGraphicsInfo_RivalBrendanAcroBike,
|
||||
&gEventObjectGraphicsInfo_RivalBrendanSurfing,
|
||||
&gEventObjectGraphicsInfo_RivalBrendanFieldMove,
|
||||
&gEventObjectGraphicsInfo_RivalMayNormal,
|
||||
&gEventObjectGraphicsInfo_RivalMayMachBike,
|
||||
&gEventObjectGraphicsInfo_RivalMayAcroBike,
|
||||
&gEventObjectGraphicsInfo_RivalMaySurfing,
|
||||
&gEventObjectGraphicsInfo_RivalMayFieldMove,
|
||||
&gEventObjectGraphicsInfo_Cameraman,
|
||||
&gEventObjectGraphicsInfo_BrendanUnderwater,
|
||||
&gEventObjectGraphicsInfo_MayUnderwater,
|
||||
&gEventObjectGraphicsInfo_MovingBox,
|
||||
&gEventObjectGraphicsInfo_CableCar,
|
||||
&gEventObjectGraphicsInfo_Scientist2,
|
||||
&gEventObjectGraphicsInfo_Man7,
|
||||
&gEventObjectGraphicsInfo_AquaMemberM,
|
||||
&gEventObjectGraphicsInfo_AquaMemberF,
|
||||
&gEventObjectGraphicsInfo_MagmaMemberM,
|
||||
&gEventObjectGraphicsInfo_MagmaMemberF,
|
||||
&gEventObjectGraphicsInfo_Sidney,
|
||||
&gEventObjectGraphicsInfo_Phoebe,
|
||||
&gEventObjectGraphicsInfo_Glacia,
|
||||
&gEventObjectGraphicsInfo_Drake,
|
||||
&gEventObjectGraphicsInfo_Roxanne,
|
||||
&gEventObjectGraphicsInfo_Brawly,
|
||||
&gEventObjectGraphicsInfo_Wattson,
|
||||
&gEventObjectGraphicsInfo_Flannery,
|
||||
&gEventObjectGraphicsInfo_Norman,
|
||||
&gEventObjectGraphicsInfo_Winona,
|
||||
&gEventObjectGraphicsInfo_Liza,
|
||||
&gEventObjectGraphicsInfo_Tate,
|
||||
&gEventObjectGraphicsInfo_Wallace,
|
||||
&gEventObjectGraphicsInfo_Steven,
|
||||
&gEventObjectGraphicsInfo_Wally,
|
||||
&gEventObjectGraphicsInfo_RubySapphireLittleBoy,
|
||||
&gEventObjectGraphicsInfo_BrendanFishing,
|
||||
&gEventObjectGraphicsInfo_MayFishing,
|
||||
&gEventObjectGraphicsInfo_HotSpringsOldWoman,
|
||||
&gEventObjectGraphicsInfo_SSTidal,
|
||||
&gEventObjectGraphicsInfo_SubmarineShadow,
|
||||
&gEventObjectGraphicsInfo_PichuDoll,
|
||||
&gEventObjectGraphicsInfo_PikachuDoll,
|
||||
&gEventObjectGraphicsInfo_MarillDoll,
|
||||
&gEventObjectGraphicsInfo_TogepiDoll,
|
||||
&gEventObjectGraphicsInfo_CyndaquilDoll,
|
||||
&gEventObjectGraphicsInfo_ChikoritaDoll,
|
||||
&gEventObjectGraphicsInfo_TotodileDoll,
|
||||
&gEventObjectGraphicsInfo_JigglypuffDoll,
|
||||
&gEventObjectGraphicsInfo_MeowthDoll,
|
||||
&gEventObjectGraphicsInfo_ClefairyDoll,
|
||||
&gEventObjectGraphicsInfo_DittoDoll,
|
||||
&gEventObjectGraphicsInfo_SmoochumDoll,
|
||||
&gEventObjectGraphicsInfo_TreeckoDoll,
|
||||
&gEventObjectGraphicsInfo_TorchicDoll,
|
||||
&gEventObjectGraphicsInfo_MudkipDoll,
|
||||
&gEventObjectGraphicsInfo_DuskullDoll,
|
||||
&gEventObjectGraphicsInfo_WynautDoll,
|
||||
&gEventObjectGraphicsInfo_BaltoyDoll,
|
||||
&gEventObjectGraphicsInfo_KecleonDoll,
|
||||
&gEventObjectGraphicsInfo_AzurillDoll,
|
||||
&gEventObjectGraphicsInfo_SkittyDoll,
|
||||
&gEventObjectGraphicsInfo_SwabluDoll,
|
||||
&gEventObjectGraphicsInfo_GulpinDoll,
|
||||
&gEventObjectGraphicsInfo_LotadDoll,
|
||||
&gEventObjectGraphicsInfo_SeedotDoll,
|
||||
&gEventObjectGraphicsInfo_PikaCushion,
|
||||
&gEventObjectGraphicsInfo_RoundCushion,
|
||||
&gEventObjectGraphicsInfo_KissCushion,
|
||||
&gEventObjectGraphicsInfo_ZigzagCushion,
|
||||
&gEventObjectGraphicsInfo_SpinCushion,
|
||||
&gEventObjectGraphicsInfo_DiamondCushion,
|
||||
&gEventObjectGraphicsInfo_BallCushion,
|
||||
&gEventObjectGraphicsInfo_GrassCushion,
|
||||
&gEventObjectGraphicsInfo_FireCushion,
|
||||
&gEventObjectGraphicsInfo_WaterCushion,
|
||||
&gEventObjectGraphicsInfo_BigSnorlaxDoll,
|
||||
&gEventObjectGraphicsInfo_BigRhydonDoll,
|
||||
&gEventObjectGraphicsInfo_BigLaprasDoll,
|
||||
&gEventObjectGraphicsInfo_BigVenusaurDoll,
|
||||
&gEventObjectGraphicsInfo_BigCharizardDoll,
|
||||
&gEventObjectGraphicsInfo_BigBlastoiseDoll,
|
||||
&gEventObjectGraphicsInfo_BigWailmerDoll,
|
||||
&gEventObjectGraphicsInfo_BigRegirockDoll,
|
||||
&gEventObjectGraphicsInfo_BigRegiceDoll,
|
||||
&gEventObjectGraphicsInfo_BigRegisteelDoll,
|
||||
&gEventObjectGraphicsInfo_Latias,
|
||||
&gEventObjectGraphicsInfo_Latios,
|
||||
&gEventObjectGraphicsInfo_Boy5,
|
||||
&gEventObjectGraphicsInfo_ContestOldMan,
|
||||
&gEventObjectGraphicsInfo_BrendanWatering,
|
||||
&gEventObjectGraphicsInfo_MayWatering,
|
||||
&gEventObjectGraphicsInfo_BrendanDecorating,
|
||||
&gEventObjectGraphicsInfo_MayDecorating,
|
||||
&gEventObjectGraphicsInfo_Archie,
|
||||
&gEventObjectGraphicsInfo_Maxie,
|
||||
&gEventObjectGraphicsInfo_Kyogre1,
|
||||
&gEventObjectGraphicsInfo_Groudon1,
|
||||
&gEventObjectGraphicsInfo_Fossil,
|
||||
&gEventObjectGraphicsInfo_Regirock,
|
||||
&gEventObjectGraphicsInfo_Regice,
|
||||
&gEventObjectGraphicsInfo_Registeel,
|
||||
&gEventObjectGraphicsInfo_Skitty,
|
||||
&gEventObjectGraphicsInfo_Kecleon1,
|
||||
&gEventObjectGraphicsInfo_Kyogre2,
|
||||
&gEventObjectGraphicsInfo_Groudon2,
|
||||
&gEventObjectGraphicsInfo_Rayquaza2,
|
||||
&gEventObjectGraphicsInfo_Zigzagoon,
|
||||
&gEventObjectGraphicsInfo_Pikachu,
|
||||
&gEventObjectGraphicsInfo_Azumarill,
|
||||
&gEventObjectGraphicsInfo_Wingull,
|
||||
&gEventObjectGraphicsInfo_Kecleon2,
|
||||
&gEventObjectGraphicsInfo_TuberMSwimming,
|
||||
&gEventObjectGraphicsInfo_Azurill,
|
||||
&gEventObjectGraphicsInfo_Mom,
|
||||
&gEventObjectGraphicsInfo_LinkBrendan,
|
||||
&gEventObjectGraphicsInfo_LinkMay,
|
||||
&gEventObjectGraphicsInfo_Juan,
|
||||
&gEventObjectGraphicsInfo_Scott,
|
||||
&gEventObjectGraphicsInfo_Poochyena,
|
||||
&gEventObjectGraphicsInfo_Kyogre3,
|
||||
&gEventObjectGraphicsInfo_Groudon3,
|
||||
&gEventObjectGraphicsInfo_MysteryEventDeliveryman,
|
||||
&gEventObjectGraphicsInfo_Statue,
|
||||
&gEventObjectGraphicsInfo_Kirlia,
|
||||
&gEventObjectGraphicsInfo_Dusclops,
|
||||
&gEventObjectGraphicsInfo_UnionRoomAttendant,
|
||||
&gEventObjectGraphicsInfo_Sudowoodo,
|
||||
&gEventObjectGraphicsInfo_Mew,
|
||||
&gEventObjectGraphicsInfo_Red,
|
||||
&gEventObjectGraphicsInfo_Leaf,
|
||||
&gEventObjectGraphicsInfo_Deoxys,
|
||||
&gEventObjectGraphicsInfo_BirthIslandStone,
|
||||
&gEventObjectGraphicsInfo_Brandon,
|
||||
&gEventObjectGraphicsInfo_RubySapphireBrendan,
|
||||
&gEventObjectGraphicsInfo_RubySapphireMay,
|
||||
&gEventObjectGraphicsInfo_Lugia,
|
||||
&gEventObjectGraphicsInfo_HoOh,
|
||||
};
|
||||
|
||||
const struct EventObjectGraphicsInfo *const gMauvilleOldManGraphicsInfoPointers[] = {
|
||||
&gEventObjectGraphicsInfo_Bard,
|
||||
&gEventObjectGraphicsInfo_Hipster,
|
||||
&gEventObjectGraphicsInfo_Trader,
|
||||
&gEventObjectGraphicsInfo_Storyteller,
|
||||
&gEventObjectGraphicsInfo_Giddy,
|
||||
&gEventObjectGraphicsInfo_UnusedMauvilleOldMan1,
|
||||
&gEventObjectGraphicsInfo_UnusedMauvilleOldMan2,
|
||||
};
|
||||
|
||||
#endif //GUARD_EVENT_OBJECT_GRAPHICS_INFO_POINTERS_H
|
||||
+2179
File diff suppressed because it is too large
Load Diff
+342
@@ -0,0 +1,342 @@
|
||||
#ifndef GUARD_EVENT_OBJECT_SUBSPRITES_H
|
||||
#define GUARD_EVENT_OBJECT_SUBSPRITES_H
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x16_0[] = {
|
||||
{ -8, -8, 0, 1, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x16_1[] = {
|
||||
{ -8, -8, 0, 1, 0, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x16_2[] = {
|
||||
{ -8, -8, 1, 0, 0, 2},
|
||||
{ -8, 0, 1, 0, 2, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x16_3[] = {
|
||||
{ -8, -8, 0, 1, 0, 2},
|
||||
{ -8, -8, 0, 1, 0, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x16_4[] = {
|
||||
{ -8, -8, 0, 1, 0, 1},
|
||||
{ -8, -8, 0, 1, 0, 3}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_16x16[] = {
|
||||
{0, NULL},
|
||||
{1, gEventObjectSpriteOamTable_16x16_0},
|
||||
{1, gEventObjectSpriteOamTable_16x16_1},
|
||||
{2, gEventObjectSpriteOamTable_16x16_2},
|
||||
{2, gEventObjectSpriteOamTable_16x16_3},
|
||||
{2, gEventObjectSpriteOamTable_16x16_4}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x32_0[] = {
|
||||
{ -8, -16, 2, 2, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x32_1[] = {
|
||||
{ -8, -16, 2, 2, 0, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x32_2[] = {
|
||||
{ -8, -16, 0, 1, 0, 2},
|
||||
{ -8, 0, 1, 0, 4, 2},
|
||||
{ -8, 8, 1, 0, 6, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x32_3[] = {
|
||||
{ -8, -16, 0, 1, 0, 2},
|
||||
{ -8, 0, 0, 1, 4, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_16x32_4[] = {
|
||||
{ -8, -16, 0, 1, 0, 1},
|
||||
{ -8, 0, 0, 1, 4, 3}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_16x32[] = {
|
||||
{0, NULL},
|
||||
{1, gEventObjectSpriteOamTable_16x32_0},
|
||||
{1, gEventObjectSpriteOamTable_16x32_1},
|
||||
{3, gEventObjectSpriteOamTable_16x32_2},
|
||||
{2, gEventObjectSpriteOamTable_16x32_3},
|
||||
{2, gEventObjectSpriteOamTable_16x32_4}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_32x32_0[] = {
|
||||
{-16, -16, 0, 2, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_32x32_1[] = {
|
||||
{-16, -16, 0, 2, 0, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_32x32_2[] = {
|
||||
{-16, -16, 1, 2, 0, 2},
|
||||
{-16, 0, 1, 1, 8, 2},
|
||||
{-16, 8, 1, 1, 12, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_32x32_3[] = {
|
||||
{-16, -16, 1, 2, 0, 2},
|
||||
{-16, 0, 1, 2, 8, 3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_32x32_4[] = {
|
||||
{-16, -16, 1, 2, 0, 1},
|
||||
{-16, 0, 1, 2, 8, 3}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_32x32[] = {
|
||||
{0, NULL},
|
||||
{1, gEventObjectSpriteOamTable_32x32_0},
|
||||
{1, gEventObjectSpriteOamTable_32x32_1},
|
||||
{3, gEventObjectSpriteOamTable_32x32_2},
|
||||
{2, gEventObjectSpriteOamTable_32x32_3},
|
||||
{2, gEventObjectSpriteOamTable_32x32_4}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_Truck_0[] = {
|
||||
{-24, -24, 1, 1, 0, 2},
|
||||
{ 8, -24, 1, 0, 4, 2},
|
||||
{-24, -16, 1, 1, 6, 2},
|
||||
{ 8, -16, 1, 0, 10, 2},
|
||||
{-24, -8, 1, 1, 12, 2},
|
||||
{ 8, -8, 1, 0, 16, 2},
|
||||
{-24, 0, 1, 1, 18, 2},
|
||||
{ 8, 0, 1, 0, 22, 2},
|
||||
{-24, 8, 1, 1, 24, 2},
|
||||
{ 8, 8, 1, 0, 28, 2},
|
||||
{-24, 16, 1, 1, 30, 2},
|
||||
{ 8, 16, 1, 0, 34, 2}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_Truck[] = {
|
||||
{12, gEventObjectSpriteOamTable_Truck_0},
|
||||
{12, gEventObjectSpriteOamTable_Truck_0},
|
||||
{12, gEventObjectSpriteOamTable_Truck_0},
|
||||
{12, gEventObjectSpriteOamTable_Truck_0},
|
||||
{12, gEventObjectSpriteOamTable_Truck_0},
|
||||
{12, gEventObjectSpriteOamTable_Truck_0}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_Unused_0[] = {
|
||||
{-32, -16, 1, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_Unused_1[] = {
|
||||
{-32, -16, 1, 3, 0, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_Unused_2[] = {
|
||||
{-32, -16, 1, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_Unused_3[] = {
|
||||
{-32, -16, 1, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_Unused[] = {
|
||||
{0, NULL},
|
||||
{1, gEventObjectSpriteOamTable_Unused_0},
|
||||
{1, gEventObjectSpriteOamTable_Unused_1},
|
||||
{1, gEventObjectSpriteOamTable_Unused_2},
|
||||
{1, gEventObjectSpriteOamTable_Unused_3},
|
||||
{1, gEventObjectSpriteOamTable_Unused_3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_64x64_0[] = {
|
||||
{-32, -32, 0, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_64x64_1[] = {
|
||||
{-32, -32, 0, 3, 0, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_64x64_2[] = {
|
||||
{-32, -32, 0, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_64x64_3[] = {
|
||||
{-32, -32, 0, 3, 0, 2}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_64x64[] = {
|
||||
{0, NULL},
|
||||
{1, gEventObjectSpriteOamTable_64x64_0},
|
||||
{1, gEventObjectSpriteOamTable_64x64_1},
|
||||
{1, gEventObjectSpriteOamTable_64x64_2},
|
||||
{1, gEventObjectSpriteOamTable_64x64_3},
|
||||
{1, gEventObjectSpriteOamTable_64x64_3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SSTidal_0[] = {
|
||||
{-48, -20, 1, 1, 0, 2},
|
||||
{-16, -20, 1, 1, 4, 2},
|
||||
{ 16, -20, 1, 1, 8, 2},
|
||||
{-48, -12, 1, 1, 12, 2},
|
||||
{-16, -12, 1, 1, 16, 2},
|
||||
{ 16, -12, 1, 1, 20, 2},
|
||||
{-48, -4, 1, 1, 24, 2},
|
||||
{-16, -4, 1, 1, 28, 2},
|
||||
{ 16, -4, 1, 1, 32, 2},
|
||||
{-48, 4, 1, 1, 36, 2},
|
||||
{-16, 4, 1, 1, 40, 2},
|
||||
{ 16, 4, 1, 1, 44, 2},
|
||||
{-48, 12, 1, 1, 48, 2},
|
||||
{-16, 12, 1, 1, 52, 2},
|
||||
{ 16, 12, 1, 1, 56, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SSTidal_1[] = {
|
||||
{-48, -20, 1, 1, 0, 1},
|
||||
{-16, -20, 1, 1, 4, 1},
|
||||
{ 16, -20, 1, 1, 8, 1},
|
||||
{-48, -12, 1, 1, 12, 1},
|
||||
{-16, -12, 1, 1, 16, 1},
|
||||
{ 16, -12, 1, 1, 20, 1},
|
||||
{-48, -4, 1, 1, 24, 1},
|
||||
{-16, -4, 1, 1, 28, 1},
|
||||
{ 16, -4, 1, 1, 32, 1},
|
||||
{-48, 4, 1, 1, 36, 1},
|
||||
{-16, 4, 1, 1, 40, 1},
|
||||
{ 16, 4, 1, 1, 44, 1},
|
||||
{-48, 12, 1, 1, 48, 1},
|
||||
{-16, 12, 1, 1, 52, 1},
|
||||
{ 16, 12, 1, 1, 56, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SSTidal_2[] = {
|
||||
{-48, -20, 1, 1, 0, 2},
|
||||
{-16, -20, 1, 1, 4, 2},
|
||||
{ 16, -20, 1, 1, 8, 2},
|
||||
{-48, -12, 1, 1, 12, 2},
|
||||
{-16, -12, 1, 1, 16, 2},
|
||||
{ 16, -12, 1, 1, 20, 2},
|
||||
{-48, -4, 1, 1, 24, 2},
|
||||
{-16, -4, 1, 1, 28, 2},
|
||||
{ 16, -4, 1, 1, 32, 2},
|
||||
{-48, 4, 1, 1, 36, 2},
|
||||
{-16, 4, 1, 1, 40, 2},
|
||||
{ 16, 4, 1, 1, 44, 2},
|
||||
{-48, 12, 1, 1, 48, 2},
|
||||
{-16, 12, 1, 1, 52, 2},
|
||||
{ 16, 12, 1, 1, 56, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SSTidal_3[] = {
|
||||
{-48, -20, 1, 1, 0, 1},
|
||||
{-16, -20, 1, 1, 4, 1},
|
||||
{ 16, -20, 1, 1, 8, 1},
|
||||
{-48, -12, 1, 1, 12, 1},
|
||||
{-16, -12, 1, 1, 16, 1},
|
||||
{ 16, -12, 1, 1, 20, 1},
|
||||
{-48, -4, 1, 1, 24, 2},
|
||||
{-16, -4, 1, 1, 28, 2},
|
||||
{ 16, -4, 1, 1, 32, 2},
|
||||
{-48, 4, 1, 1, 36, 2},
|
||||
{-16, 4, 1, 1, 40, 2},
|
||||
{ 16, 4, 1, 1, 44, 2},
|
||||
{-48, 12, 1, 1, 48, 2},
|
||||
{-16, 12, 1, 1, 52, 2},
|
||||
{ 16, 12, 1, 1, 56, 2}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_SSTidal[] = {
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_0},
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_0},
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_1},
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_2},
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_3},
|
||||
{15, gEventObjectSpriteOamTable_SSTidal_3}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_0[] = {
|
||||
{-48, -20, 1, 1, 0, 2},
|
||||
{-16, -20, 1, 1, 4, 2},
|
||||
{ 16, -20, 1, 0, 8, 2},
|
||||
{ 32, -20, 0, 0, 10, 2},
|
||||
{-48, -12, 1, 1, 11, 2},
|
||||
{-16, -12, 1, 1, 15, 2},
|
||||
{ 16, -12, 1, 0, 19, 2},
|
||||
{ 32, -12, 0, 0, 21, 2},
|
||||
{-48, -4, 1, 1, 22, 2},
|
||||
{-16, -4, 1, 1, 26, 2},
|
||||
{ 16, -4, 1, 0, 30, 2},
|
||||
{ 32, -4, 0, 0, 32, 2},
|
||||
{-48, 4, 1, 1, 33, 2},
|
||||
{-16, 4, 1, 1, 37, 2},
|
||||
{ 16, 4, 1, 0, 41, 2},
|
||||
{ 32, 4, 0, 0, 43, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_1[] = {
|
||||
{-48, -20, 1, 1, 0, 1},
|
||||
{-16, -20, 1, 1, 4, 1},
|
||||
{ 16, -20, 1, 0, 8, 1},
|
||||
{ 32, -20, 0, 0, 10, 1},
|
||||
{-48, -12, 1, 1, 11, 1},
|
||||
{-16, -12, 1, 1, 15, 1},
|
||||
{ 16, -12, 1, 0, 19, 1},
|
||||
{ 32, -12, 0, 0, 21, 1},
|
||||
{-48, -4, 1, 1, 22, 1},
|
||||
{-16, -4, 1, 1, 26, 1},
|
||||
{ 16, -4, 1, 0, 30, 1},
|
||||
{ 32, -4, 0, 0, 32, 1},
|
||||
{-48, 4, 1, 1, 33, 1},
|
||||
{-16, 4, 1, 1, 37, 1},
|
||||
{ 16, 4, 1, 0, 41, 1},
|
||||
{ 32, 4, 0, 0, 43, 1}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_2[] = {
|
||||
{-48, -20, 1, 1, 0, 2},
|
||||
{-16, -20, 1, 1, 4, 2},
|
||||
{ 16, -20, 1, 0, 8, 2},
|
||||
{ 32, -20, 0, 0, 10, 2},
|
||||
{-48, -12, 1, 1, 11, 2},
|
||||
{-16, -12, 1, 1, 15, 2},
|
||||
{ 16, -12, 1, 0, 19, 2},
|
||||
{ 32, -12, 0, 0, 21, 2},
|
||||
{-48, -4, 1, 1, 22, 2},
|
||||
{-16, -4, 1, 1, 26, 2},
|
||||
{ 16, -4, 1, 0, 30, 2},
|
||||
{ 32, -4, 0, 0, 32, 2},
|
||||
{-48, 4, 1, 1, 33, 2},
|
||||
{-16, 4, 1, 1, 37, 2},
|
||||
{ 16, 4, 1, 0, 41, 2},
|
||||
{ 32, 4, 0, 0, 43, 2}
|
||||
};
|
||||
|
||||
const struct Subsprite gEventObjectSpriteOamTable_SubmarineShadow_3[] = {
|
||||
{-48, -20, 1, 1, 0, 1},
|
||||
{-16, -20, 1, 1, 4, 1},
|
||||
{ 16, -20, 1, 0, 8, 1},
|
||||
{ 32, -20, 0, 0, 10, 1},
|
||||
{-48, -12, 1, 1, 11, 1},
|
||||
{-16, -12, 1, 1, 15, 1},
|
||||
{ 16, -12, 1, 0, 19, 1},
|
||||
{ 32, -12, 0, 0, 21, 1},
|
||||
{-48, -4, 1, 1, 22, 2},
|
||||
{-16, -4, 1, 1, 26, 2},
|
||||
{ 16, -4, 1, 0, 30, 2},
|
||||
{ 32, -4, 0, 0, 32, 2},
|
||||
{-48, 4, 1, 1, 33, 2},
|
||||
{-16, 4, 1, 1, 37, 2},
|
||||
{ 16, 4, 1, 0, 41, 2},
|
||||
{ 32, 4, 0, 0, 43, 2}
|
||||
};
|
||||
|
||||
const struct SubspriteTable gEventObjectSpriteOamTables_SubmarineShadow[] = {
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_0},
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_0},
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_1},
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_2},
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_3},
|
||||
{16, gEventObjectSpriteOamTable_SubmarineShadow_3}
|
||||
};
|
||||
|
||||
#endif //GUARD_EVENT_OBJECT_SUBSPRITES_H
|
||||
@@ -0,0 +1,82 @@
|
||||
#ifndef GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
|
||||
#define GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Ash;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Splash;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bird;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35;
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
|
||||
|
||||
const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
|
||||
&gFieldEffectObjectTemplate_ShadowSmall,
|
||||
&gFieldEffectObjectTemplate_ShadowMedium,
|
||||
&gFieldEffectObjectTemplate_ShadowLarge,
|
||||
&gFieldEffectObjectTemplate_ShadowExtraLarge,
|
||||
&gFieldEffectObjectTemplate_TallGrass,
|
||||
&gFieldEffectObjectTemplate_Ripple,
|
||||
&gFieldEffectObjectTemplate_Ash,
|
||||
&gFieldEffectObjectTemplate_SurfBlob,
|
||||
&gFieldEffectObjectTemplate_Arrow,
|
||||
&gFieldEffectObjectTemplate_GroundImpactDust,
|
||||
&gFieldEffectObjectTemplate_BikeHopTallGrass,
|
||||
&gFieldEffectObjectTemplate_SandFootprints,
|
||||
&gFieldEffectObjectTemplate_BikeHopBigSplash,
|
||||
&gFieldEffectObjectTemplate_Splash,
|
||||
&gFieldEffectObjectTemplate_BikeHopSmallSplash,
|
||||
&gFieldEffectObjectTemplate_LongGrass,
|
||||
&gFieldEffectObjectTemplate_Unknown16,
|
||||
&gFieldEffectObjectTemplate_Unknown17,
|
||||
&gFieldEffectObjectTemplate_Unknown18,
|
||||
&gFieldEffectObjectTemplate_Unknown19,
|
||||
&gFieldEffectObjectTemplate_Unknown20,
|
||||
&gFieldEffectObjectTemplate_Unknown21,
|
||||
&gFieldEffectObjectTemplate_BerryTreeGrowthSparkle,
|
||||
&gFieldEffectObjectTemplate_DeepSandFootprints,
|
||||
&gFieldEffectObjectTemplate_TreeDisguise,
|
||||
&gFieldEffectObjectTemplate_MountainDisguise,
|
||||
&gFieldEffectObjectTemplate_Bird,
|
||||
&gFieldEffectObjectTemplate_BikeTireTracks,
|
||||
&gFieldEffectObjectTemplate_SandDisguisePlaceholder,
|
||||
&gFieldEffectObjectTemplate_Unknown29,
|
||||
&gFieldEffectObjectTemplate_ShortGrass,
|
||||
&gFieldEffectObjectTemplate_HotSpringsWater,
|
||||
&gFieldEffectObjectTemplate_JumpOutOfAsh,
|
||||
&gFieldEffectObjectTemplate_Unknown33,
|
||||
&gFieldEffectObjectTemplate_Bubbles,
|
||||
&gFieldEffectObjectTemplate_Unknown35,
|
||||
&gFieldEffectObjectTemplate_Rayquaza,
|
||||
};
|
||||
|
||||
#endif //GUARD_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
|
||||
+997
@@ -0,0 +1,997 @@
|
||||
#ifndef GUARD_FIELD_EFFECT_OBJECTS_H
|
||||
#define GUARD_FIELD_EFFECT_OBJECTS_H
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo0 = {gFieldEffectObjectPalette0, 0x1004};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo1 = {gFieldEffectObjectPalette1, 0x1005};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850C9D0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Shadow[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850C9D0,
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowSmall[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShadowSmall),
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowMedium[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShadowMedium),
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowLarge[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShadowLarge),
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowExtraLarge[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge),
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_8x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, oamc_shadow};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, oamc_shadow};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, oamc_shadow};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_64x32, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, oamc_shadow};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_TallGrass[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TallGrass_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TallGrass_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TallGrass_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TallGrass_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TallGrass_4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CA84[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 10),
|
||||
ANIMCMD_FRAME(2, 10),
|
||||
ANIMCMD_FRAME(3, 10),
|
||||
ANIMCMD_FRAME(4, 10),
|
||||
ANIMCMD_FRAME(0, 10),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_TallGrass[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CA84,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_TallGrass, gFieldEffectObjectPicTable_TallGrass, gDummySpriteAffineAnimTable, unc_grass_normal};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Ripple[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ripple_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ripple_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ripple_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ripple_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ripple_4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CAE0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_FRAME(1, 9),
|
||||
ANIMCMD_FRAME(2, 9),
|
||||
ANIMCMD_FRAME(3, 9),
|
||||
ANIMCMD_FRAME(0, 9),
|
||||
ANIMCMD_FRAME(1, 9),
|
||||
ANIMCMD_FRAME(2, 11),
|
||||
ANIMCMD_FRAME(4, 11),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ripple[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CAE0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ripple, gFieldEffectObjectPicTable_Ripple, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Ash[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ash_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ash_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ash_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ash_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Ash_4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CB48[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_FRAME(1, 12),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 12),
|
||||
ANIMCMD_FRAME(4, 12),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ash[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CB48,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Ash = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ash, gFieldEffectObjectPicTable_Ash, gDummySpriteAffineAnimTable, sub_8155460};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_SurfBlob[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SurfBlob_2),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CB94[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CB9C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CBA4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CBAC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_SurfBlob[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CB94,
|
||||
gFieldEffectObjectImageAnim_850CB9C,
|
||||
gFieldEffectObjectImageAnim_850CBA4,
|
||||
gFieldEffectObjectImageAnim_850CBAC,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, sub_8155658};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Arrow[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_6),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Arrow_7),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CC1C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 32),
|
||||
ANIMCMD_FRAME(7, 32),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CC28[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 32),
|
||||
ANIMCMD_FRAME(4, 32),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CC34[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 32),
|
||||
ANIMCMD_FRAME(5, 32),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CC40[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 32),
|
||||
ANIMCMD_FRAME(6, 32),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Arrow[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CC1C,
|
||||
gFieldEffectObjectImageAnim_850CC28,
|
||||
gFieldEffectObjectImageAnim_850CC34,
|
||||
gFieldEffectObjectImageAnim_850CC40,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Arrow, gFieldEffectObjectPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_GroundImpactDust[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_GroundImpactDust_2),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CC8C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_GroundImpactDust[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CC8C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_GroundImpactDust, gFieldEffectObjectPicTable_GroundImpactDust, gDummySpriteAffineAnimTable, sub_8156194};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopTallGrass[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopTallGrass_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CCD8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopTallGrass[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CCD8,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopTallGrass, gFieldEffectObjectPicTable_BikeHopTallGrass, gDummySpriteAffineAnimTable, sub_8156194};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_SandFootprints[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandFootprints_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandFootprints_1),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD18[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD20[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD28[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD30[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_SandFootprints[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CD18,
|
||||
gFieldEffectObjectImageAnim_850CD18,
|
||||
gFieldEffectObjectImageAnim_850CD20,
|
||||
gFieldEffectObjectImageAnim_850CD28,
|
||||
gFieldEffectObjectImageAnim_850CD30,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_SandFootprints, gFieldEffectObjectPicTable_SandFootprints, gDummySpriteAffineAnimTable, sub_8154C60};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_DeepSandFootprints[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_DeepSandFootprints_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_DeepSandFootprints_1),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD74[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD7C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD84[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CD8C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_DeepSandFootprints[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CD74,
|
||||
gFieldEffectObjectImageAnim_850CD74,
|
||||
gFieldEffectObjectImageAnim_850CD7C,
|
||||
gFieldEffectObjectImageAnim_850CD84,
|
||||
gFieldEffectObjectImageAnim_850CD8C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_DeepSandFootprints, gFieldEffectObjectPicTable_DeepSandFootprints, gDummySpriteAffineAnimTable, sub_8154C60};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeTireTracks[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeTireTracks_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CDE0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CDE8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CDF0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CDF8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CE00[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CE08[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CE10[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CE18[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeTireTracks[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CDE0,
|
||||
gFieldEffectObjectImageAnim_850CDE0,
|
||||
gFieldEffectObjectImageAnim_850CDE8,
|
||||
gFieldEffectObjectImageAnim_850CDF0,
|
||||
gFieldEffectObjectImageAnim_850CDF8,
|
||||
gFieldEffectObjectImageAnim_850CE00,
|
||||
gFieldEffectObjectImageAnim_850CE08,
|
||||
gFieldEffectObjectImageAnim_850CE10,
|
||||
gFieldEffectObjectImageAnim_850CE18,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeTireTracks, gFieldEffectObjectPicTable_BikeTireTracks, gDummySpriteAffineAnimTable, sub_8154C60};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopBigSplash[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopBigSplash_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CE7C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopBigSplash[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CE7C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeHopBigSplash, gFieldEffectObjectPicTable_BikeHopBigSplash, gDummySpriteAffineAnimTable, sub_8156194};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Splash[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Splash_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Splash_1),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CEBC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CEC8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(1, 6),
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(1, 6),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Splash[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CEBC,
|
||||
gFieldEffectObjectImageAnim_850CEC8,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Splash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Splash, gFieldEffectObjectPicTable_Splash, gDummySpriteAffineAnimTable, sub_8154D90};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopSmallSplash[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BikeHopSmallSplash_2),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CF24[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopSmallSplash[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CF24,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopSmallSplash, gFieldEffectObjectPicTable_BikeHopSmallSplash, gDummySpriteAffineAnimTable, sub_8156194};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_LongGrass[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_LongGrass_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_LongGrass_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_LongGrass_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_LongGrass_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CF70[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 3),
|
||||
ANIMCMD_FRAME(2, 3),
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_LongGrass[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CF70,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_LongGrass, gFieldEffectObjectPicTable_LongGrass, gDummySpriteAffineAnimTable, unc_grass_tall};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown16[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_5),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850CFDC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
ANIMCMD_FRAME(4, 8),
|
||||
ANIMCMD_FRAME(5, 8),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown16[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850CFDC,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown16, gFieldEffectObjectPicTable_Unknown16, gDummySpriteAffineAnimTable, sub_8156194};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown17[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown16_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_6),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown17_7),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D05C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 10),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(5, 4),
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_FRAME(7, 4),
|
||||
ANIMCMD_FRAME(8, 4),
|
||||
ANIMCMD_JUMP(7),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown17[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D05C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown17, gFieldEffectObjectPicTable_Unknown17, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown18[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown18_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown18_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown18_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown18_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D0C0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown18[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D0C0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18 = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown18, gFieldEffectObjectPicTable_Unknown18, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown19[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown19_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown19_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown19_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown19_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D118[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown19[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D118,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown19, gFieldEffectObjectPicTable_Unknown19, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown29[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown29_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown29_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown29_2),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D160[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown29[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D160,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x8, gFieldEffectObjectImageAnimTable_Unknown29, gFieldEffectObjectPicTable_Unknown29, gDummySpriteAffineAnimTable, sub_81559BC};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown20[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown20_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown20_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown20_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown20_3),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D1AC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown20[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D1AC,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20 = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown20, gFieldEffectObjectPicTable_Unknown20, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D1E4[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0xFF00, 0x100, -128, 0),
|
||||
AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D234[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
|
||||
AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
|
||||
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
|
||||
AFFINEANIMCMD_JUMP(1),
|
||||
};
|
||||
|
||||
const union AffineAnimCmd *const gFieldEffectObjectRotScalAnimTable_Unknown21[] =
|
||||
{
|
||||
gFieldEffectObjectRotScalAnim_850D1E4,
|
||||
gFieldEffectObjectRotScalAnim_850D234,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21 = {0x0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gFieldEffectObjectRotScalAnimTable_Unknown21, SpriteCallbackDummy};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_BerryTreeGrowthSparkle[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_BerryTreeGrowthSparkle_5),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D2D4[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
ANIMCMD_FRAME(4, 8),
|
||||
ANIMCMD_FRAME(5, 8),
|
||||
ANIMCMD_LOOP(0),
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(5, 4),
|
||||
ANIMCMD_LOOP(3),
|
||||
ANIMCMD_FRAME(0, 8),
|
||||
ANIMCMD_FRAME(1, 8),
|
||||
ANIMCMD_FRAME(2, 8),
|
||||
ANIMCMD_FRAME(3, 8),
|
||||
ANIMCMD_FRAME(4, 8),
|
||||
ANIMCMD_FRAME(5, 8),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D2D4,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle, gFieldEffectObjectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, sub_81561D0};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_TreeDisguise[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_TreeDisguise_6),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D37C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 16),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D384[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(5, 4),
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_TreeDisguise[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D37C,
|
||||
gFieldEffectObjectImageAnim_850D384,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, sub_8155C88};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_MountainDisguise[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_MountainDisguise_6),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D3FC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 16),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D404[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 4),
|
||||
ANIMCMD_FRAME(4, 4),
|
||||
ANIMCMD_FRAME(5, 4),
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_MountainDisguise[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D3FC,
|
||||
gFieldEffectObjectImageAnim_850D404,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_MountainDisguise, gFieldEffectObjectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, sub_8155C88};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_SandDisguisePlaceholder[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_SandDisguisePlaceholder_6),
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_SandDisguisePlaceholder, gDummySpriteAffineAnimTable, sub_8155C88};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Bird[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bird),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D49C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bird[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D49C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_Bird, gFieldEffectObjectPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_ShortGrass[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShortGrass_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_ShortGrass_1),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D4D0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_ShortGrass[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D4D0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_ShortGrass, gFieldEffectObjectPicTable_ShortGrass, gDummySpriteAffineAnimTable, sub_8154A10};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_HotSpringsWater[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_HotSpringsWater),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D500[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_HotSpringsWater[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D500,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater = {0xFFFF, 0x1005, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_HotSpringsWater, gFieldEffectObjectPicTable_HotSpringsWater, gDummySpriteAffineAnimTable, sub_8155158};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_JumpOutOfAsh[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_JumpOutOfAsh_4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D54C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(1, 6),
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(4, 6),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_JumpOutOfAsh[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D54C,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_JumpOutOfAsh, gFieldEffectObjectPicTable_JumpOutOfAsh, gDummySpriteAffineAnimTable, sub_80B7CAC};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo2 = {gFieldEffectObjectPalette2, 0x100D};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown33[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown33_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown33_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown33_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown33_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown33_4),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D5B0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 6),
|
||||
ANIMCMD_FRAME(1, 6),
|
||||
ANIMCMD_FRAME(2, 6),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(4, 6),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown33[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D5B0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown33 = {0xFFFF, 0x100D, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown33, gFieldEffectObjectPicTable_Unknown33, gDummySpriteAffineAnimTable, sub_80B7A58};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Bubbles[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_1),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_2),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_3),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_4),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_5),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_6),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Bubbles_7),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D624[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 4),
|
||||
ANIMCMD_FRAME(1, 4),
|
||||
ANIMCMD_FRAME(2, 4),
|
||||
ANIMCMD_FRAME(3, 6),
|
||||
ANIMCMD_FRAME(4, 6),
|
||||
ANIMCMD_FRAME(5, 4),
|
||||
ANIMCMD_FRAME(6, 4),
|
||||
ANIMCMD_FRAME(7, 4),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bubbles[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D624,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles = {0xFFFF, 0x1004, &gEventObjectBaseOam_16x32, gFieldEffectObjectImageAnimTable_Bubbles, gFieldEffectObjectPicTable_Bubbles, gDummySpriteAffineAnimTable, sub_8155AEC};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown35[] = {
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown35_0),
|
||||
obj_frame_tiles(gFieldEffectObjectPic_Unknown35_1),
|
||||
};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D674[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 3),
|
||||
ANIMCMD_FRAME(1, 5),
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown35[] =
|
||||
{
|
||||
gFieldEffectObjectImageAnim_850D674,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35 = {0xFFFF, 0x100F, &gEventObjectBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown35, gFieldEffectObjectPicTable_Unknown35, gDummySpriteAffineAnimTable, sub_8155E50};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo3 = {gFieldEffectObjectPalette3, 0x100F};
|
||||
|
||||
const union AnimCmd gFieldEffectObjectImageAnim_850D6A8[] = {
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
const union AnimCmd *const gFieldEffectObjectImageAnimTable_Rayquaza[] = {
|
||||
gFieldEffectObjectImageAnim_850D6A8,
|
||||
};
|
||||
|
||||
const struct SpriteFrameImage gFieldEffectObjectPicTable_Rayquaza[] = {
|
||||
{.data = (u8*)gEventObjectPic_Rayquaza_0, .size = (sizeof gEventObjectPic_Rayquaza_0) / 4}
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {0xFFFF, 0xFFFF, &gEventObjectBaseOam_32x32, gFieldEffectObjectImageAnimTable_Rayquaza, gFieldEffectObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable, sub_8155F80};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfoUnused = {gEventObjectPalette2, 0x1011};
|
||||
|
||||
#endif //GUARD_FIELD_EFFECT_OBJECTS_H
|
||||
+1518
File diff suppressed because it is too large
Load Diff
+443
@@ -0,0 +1,443 @@
|
||||
#ifndef GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
|
||||
#define GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WanderAround[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WanderAround_Step0,
|
||||
MovementType_WanderAround_Step1,
|
||||
MovementType_WanderAround_Step2,
|
||||
MovementType_WanderAround_Step3,
|
||||
MovementType_WanderAround_Step4,
|
||||
MovementType_WanderAround_Step5,
|
||||
MovementType_WanderAround_Step6,
|
||||
};
|
||||
|
||||
const u8 gStandardDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST};
|
||||
|
||||
u8 (*const gGetVectorDirectionFuncs[])(s16, s16, s16, s16) = {
|
||||
GetVectorDirection,
|
||||
GetLimitedVectorDirection_SouthNorth,
|
||||
GetLimitedVectorDirection_WestEast,
|
||||
GetLimitedVectorDirection_WestNorth,
|
||||
GetLimitedVectorDirection_EastNorth,
|
||||
GetLimitedVectorDirection_WestSouth,
|
||||
GetLimitedVectorDirection_EastSouth,
|
||||
GetLimitedVectorDirection_SouthNorthWest,
|
||||
GetLimitedVectorDirection_SouthNorthEast,
|
||||
GetLimitedVectorDirection_NorthWestEast,
|
||||
GetLimitedVectorDirection_SouthWestEast,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_LookAround[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_LookAround_Step0,
|
||||
MovementType_LookAround_Step1,
|
||||
MovementType_LookAround_Step2,
|
||||
MovementType_LookAround_Step3,
|
||||
MovementType_LookAround_Step4,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WanderUpAndDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WanderUpAndDown_Step0,
|
||||
MovementType_WanderUpAndDown_Step1,
|
||||
MovementType_WanderUpAndDown_Step2,
|
||||
MovementType_WanderUpAndDown_Step3,
|
||||
MovementType_WanderUpAndDown_Step4,
|
||||
MovementType_WanderUpAndDown_Step5,
|
||||
MovementType_WanderUpAndDown_Step6,
|
||||
};
|
||||
|
||||
const u8 gUpAndDownDirections[] = {DIR_SOUTH, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WanderLeftAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WanderLeftAndRight_Step0,
|
||||
MovementType_WanderLeftAndRight_Step1,
|
||||
MovementType_WanderLeftAndRight_Step2,
|
||||
MovementType_WanderLeftAndRight_Step3,
|
||||
MovementType_WanderLeftAndRight_Step4,
|
||||
MovementType_WanderLeftAndRight_Step5,
|
||||
MovementType_WanderLeftAndRight_Step6,
|
||||
};
|
||||
|
||||
const u8 gLeftAndRightDirections[] = {DIR_WEST, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDirection[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDirection_Step0,
|
||||
MovementType_FaceDirection_Step1,
|
||||
MovementType_FaceDirection_Step2,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_BerryTreeGrowth[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_BerryTreeGrowth_Step0,
|
||||
MovementType_BerryTreeGrowth_Step1,
|
||||
MovementType_BerryTreeGrowth_Step2,
|
||||
MovementType_BerryTreeGrowth_Step3,
|
||||
MovementType_BerryTreeGrowth_Step4,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownAndUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownAndUp_Step0,
|
||||
MovementType_FaceDownAndUp_Step1,
|
||||
MovementType_FaceDownAndUp_Step2,
|
||||
MovementType_FaceDownAndUp_Step3,
|
||||
MovementType_FaceDownAndUp_Step4,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceLeftAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceLeftAndRight_Step0,
|
||||
MovementType_FaceLeftAndRight_Step1,
|
||||
MovementType_FaceLeftAndRight_Step2,
|
||||
MovementType_FaceLeftAndRight_Step3,
|
||||
MovementType_FaceLeftAndRight_Step4,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceUpAndLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceUpAndLeft_Step0,
|
||||
MovementType_FaceUpAndLeft_Step1,
|
||||
MovementType_FaceUpAndLeft_Step2,
|
||||
MovementType_FaceUpAndLeft_Step3,
|
||||
MovementType_FaceUpAndLeft_Step4,
|
||||
};
|
||||
|
||||
const u8 gUpAndLeftDirections[] = {DIR_NORTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceUpAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceUpAndRight_Step0,
|
||||
MovementType_FaceUpAndRight_Step1,
|
||||
MovementType_FaceUpAndRight_Step2,
|
||||
MovementType_FaceUpAndRight_Step3,
|
||||
MovementType_FaceUpAndRight_Step4,
|
||||
};
|
||||
|
||||
const u8 gUpAndRightDirections[] = {DIR_NORTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownAndLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownAndLeft_Step0,
|
||||
MovementType_FaceDownAndLeft_Step1,
|
||||
MovementType_FaceDownAndLeft_Step2,
|
||||
MovementType_FaceDownAndLeft_Step3,
|
||||
MovementType_FaceDownAndLeft_Step4,
|
||||
};
|
||||
|
||||
const u8 gDownAndLeftDirections[] = {DIR_SOUTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownAndRight_Step0,
|
||||
MovementType_FaceDownAndRight_Step1,
|
||||
MovementType_FaceDownAndRight_Step2,
|
||||
MovementType_FaceDownAndRight_Step3,
|
||||
MovementType_FaceDownAndRight_Step4,
|
||||
};
|
||||
|
||||
const u8 gDownAndRightDirections[] = {DIR_SOUTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownUpAndLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownUpAndLeft_Step0,
|
||||
MovementType_FaceDownUpAndLeft_Step1,
|
||||
MovementType_FaceDownUpAndLeft_Step2,
|
||||
MovementType_FaceDownUpAndLeft_Step3,
|
||||
MovementType_FaceDownUpAndLeft_Step4,
|
||||
};
|
||||
|
||||
const u8 gDownUpAndLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownUpAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownUpAndRight_Step0,
|
||||
MovementType_FaceDownUpAndRight_Step1,
|
||||
MovementType_FaceDownUpAndRight_Step2,
|
||||
MovementType_FaceDownUpAndRight_Step3,
|
||||
MovementType_FaceDownUpAndRight_Step4,
|
||||
};
|
||||
|
||||
const u8 gDownUpAndRightDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceUpLeftAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceUpLeftAndRight_Step0,
|
||||
MovementType_FaceUpLeftAndRight_Step1,
|
||||
MovementType_FaceUpLeftAndRight_Step2,
|
||||
MovementType_FaceUpLeftAndRight_Step3,
|
||||
MovementType_FaceUpLeftAndRight_Step4,
|
||||
};
|
||||
|
||||
const u8 gUpLeftAndRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_FaceDownLeftAndRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_FaceDownLeftAndRight_Step0,
|
||||
MovementType_FaceDownLeftAndRight_Step1,
|
||||
MovementType_FaceDownLeftAndRight_Step2,
|
||||
MovementType_FaceDownLeftAndRight_Step3,
|
||||
MovementType_FaceDownLeftAndRight_Step4,
|
||||
};
|
||||
|
||||
const u8 gDownLeftAndRightDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_RotateCounterclockwise[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_RotateCounterclockwise_Step0,
|
||||
MovementType_RotateCounterclockwise_Step1,
|
||||
MovementType_RotateCounterclockwise_Step2,
|
||||
MovementType_RotateCounterclockwise_Step3,
|
||||
};
|
||||
|
||||
const u8 gCounterclockwiseDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_RotateClockwise[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_RotateClockwise_Step0,
|
||||
MovementType_RotateClockwise_Step1,
|
||||
MovementType_RotateClockwise_Step2,
|
||||
MovementType_RotateClockwise_Step3,
|
||||
};
|
||||
|
||||
const u8 gClockwiseDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkBackAndForth[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkBackAndForth_Step0,
|
||||
MovementType_WalkBackAndForth_Step1,
|
||||
MovementType_WalkBackAndForth_Step2,
|
||||
MovementType_WalkBackAndForth_Step3,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpRightLeftDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpRightLeftDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpRightLeftDownDirections[] = {DIR_NORTH, DIR_EAST, DIR_WEST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftDownUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightLeftDownUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightLeftDownUpDirections[] = {DIR_EAST, DIR_WEST, DIR_SOUTH, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownUpRightLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownUpRightLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gDownUpRightLeftDirections[] = {DIR_SOUTH, DIR_NORTH, DIR_EAST, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownUpRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftDownUpRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftDownUpRightDirections[] = {DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftRightDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpLeftRightDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpLeftRightDownDirections[] = {DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightDownUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftRightDownUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftRightDownUpDirections[] = {DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownUpLeftRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownUpLeftRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightDownUpLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightDownUpLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightDownUpLeftDirections[] = {DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpDownRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftUpDownRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftUpDownRightDirections[] = {DIR_WEST, DIR_NORTH, DIR_SOUTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpDownRightLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpDownRightLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpDownRightLeftDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightLeftUpDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightLeftUpDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightLeftUpDownDirections[] = {DIR_EAST, DIR_WEST, DIR_NORTH, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownRightLeftUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownRightLeftUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gDownRightLeftUpDirections[] = {DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightUpDownLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightUpDownLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightUpDownLeftDirections[] = {DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpDownLeftRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpDownLeftRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpDownLeftRightDirections[] = {DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftRightUpDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftRightUpDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftRightUpDownDirections[] = {DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftRightUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownLeftRightUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gDownLeftRightUpDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpLeftDownRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpLeftDownRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpLeftDownRightDirections[] = {DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownRightUpLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownRightUpLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gDownRightUpLeftDirections[] = {DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftDownRightUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftDownRightUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftDownRightUpDirections[] = {DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightUpLeftDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightUpLeftDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightUpLeftDownDirections[] = {DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceUpRightDownLeft[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceUpRightDownLeft_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gUpRightDownLeftDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceDownLeftUpRight[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceDownLeftUpRight_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gDownLeftUpRightDirections[] = {DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_EAST};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceLeftUpRightDown[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceLeftUpRightDown_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gLeftUpRightDownDirections[] = {DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSequenceRightDownLeftUp[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSequence_Step0,
|
||||
MovementType_WalkSequenceRightDownLeftUp_Step1,
|
||||
MovementType_WalkSequence_Step2,
|
||||
};
|
||||
|
||||
const u8 gRightDownLeftUpDirections[] = {DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_CopyPlayer[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_CopyPlayer_Step0,
|
||||
MovementType_CopyPlayer_Step1,
|
||||
MovementType_CopyPlayer_Step2,
|
||||
};
|
||||
|
||||
bool8 (*const gCopyPlayerMovementFuncs[])(struct EventObject *, struct Sprite *, u8, bool8(u8)) = {
|
||||
CopyablePlayerMovement_None,
|
||||
CopyablePlayerMovement_FaceDirection,
|
||||
CopyablePlayerMovement_GoSpeed0,
|
||||
CopyablePlayerMovement_GoSpeed1,
|
||||
CopyablePlayerMovement_GoSpeed2,
|
||||
CopyablePlayerMovement_Slide,
|
||||
cph_IM_DIFFERENT,
|
||||
CopyablePlayerMovement_GoSpeed4,
|
||||
CopyablePlayerMovement_Jump,
|
||||
CopyablePlayerMovement_None,
|
||||
CopyablePlayerMovement_None,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_CopyPlayer_Step0,
|
||||
MovementType_CopyPlayerInGrass_Step1,
|
||||
MovementType_CopyPlayer_Step2,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_Hidden[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_Hidden_Step0,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkInPlace_Step0,
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_WalkSlowlyInPlace[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_WalkSlowlyInPlace_Step0,
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_JogInPlace[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_JogInPlace_Step0,
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_RunInPlace[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_RunInPlace_Step0,
|
||||
MovementType_MoveInPlace_Step1,
|
||||
};
|
||||
|
||||
u8 (*const gMovementTypeFuncs_Invisible[])(struct EventObject *, struct Sprite *) = {
|
||||
MovementType_Invisible_Step0,
|
||||
MovementType_Invisible_Step1,
|
||||
MovementType_Invisible_Step2,
|
||||
};
|
||||
|
||||
#endif //GUARD_MOVEMENT_TYPE_FUNC_TABLES_H
|
||||
+5
-5
@@ -73,20 +73,20 @@ static const struct ListMenuItem sLevelMenuItems[] =
|
||||
static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
|
||||
{
|
||||
.items = sLevelMenuItems,
|
||||
.moveCursorFunc = sub_81AF078,
|
||||
.unk_08 = DaycarePrintMonInfo,
|
||||
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
|
||||
.itemPrintFunc = DaycarePrintMonInfo,
|
||||
.totalItems = 3,
|
||||
.maxShowed = 3,
|
||||
.windowId = 0,
|
||||
.unk_11 = 0,
|
||||
.unk_12 = 8,
|
||||
.header_X = 0,
|
||||
.item_X = 8,
|
||||
.cursor_X = 0,
|
||||
.upText_Y = 1,
|
||||
.cursorPal = 2,
|
||||
.fillValue = 1,
|
||||
.cursorShadowPal = 3,
|
||||
.lettersSpacing = 1,
|
||||
.unk_16_3 = 0,
|
||||
.itemVerticalPadding = 0,
|
||||
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
|
||||
.fontId = 1,
|
||||
.cursorKind = 0
|
||||
|
||||
+31
-31
@@ -17,7 +17,7 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_screen.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "list_menu.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "menu.h"
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "tilesets.h"
|
||||
#include "item_icon.h"
|
||||
#include "trader.h"
|
||||
#include "constants/map_objects.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "decoration_inventory.h"
|
||||
#include "decoration.h"
|
||||
#include "graphics.h"
|
||||
@@ -838,7 +838,7 @@ void sub_8127500(void)
|
||||
{
|
||||
if (sDecorPCBuffer->unk_522 == 0xFF)
|
||||
{
|
||||
sDecorPCBuffer->unk_522 = AddScrollIndicatorArrowPairParametrized(0x02, 0x3c, 0x0c, 0x94, sDecorPCBuffer->unk_520 - sDecorPCBuffer->unk_521, 0x6e, 0x6e, &sSecretBasePCSelectDecorPageNo);
|
||||
sDecorPCBuffer->unk_522 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x3c, 0x0c, 0x94, sDecorPCBuffer->unk_520 - sDecorPCBuffer->unk_521, 0x6e, 0x6e, &sSecretBasePCSelectDecorPageNo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1202,15 +1202,15 @@ void sub_8127E18(void)
|
||||
if (FlagGet(0xAE + i) == TRUE)
|
||||
{
|
||||
FlagClear(0xAE + i);
|
||||
for (j = 0; j < gMapHeader.events->mapObjectCount; j ++)
|
||||
for (j = 0; j < gMapHeader.events->eventObjectCount; j ++)
|
||||
{
|
||||
if (gMapHeader.events->mapObjects[j].flagId == 0xAE + i)
|
||||
if (gMapHeader.events->eventObjects[j].flagId == 0xAE + i)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
|
||||
gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId;
|
||||
VarSet(0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
|
||||
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
|
||||
gSpecialVar_0x8006 = sCurDecorMapX;
|
||||
gSpecialVar_0x8007 = sCurDecorMapY;
|
||||
show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
@@ -1321,11 +1321,11 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphic
|
||||
}
|
||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||
{
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
|
||||
}
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
|
||||
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
|
||||
@@ -1466,7 +1466,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
|
||||
behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
|
||||
if (behaviorAt != 0 && behaviorAt != 16)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -1491,7 +1491,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
|
||||
if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1511,7 +1511,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
|
||||
behaviorAt = GetEventObjectIdByXYZ(curX, curY, 0);
|
||||
if (behaviorAt != 0 && behaviorAt != 16)
|
||||
{
|
||||
return FALSE;
|
||||
@@ -1556,7 +1556,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
|
||||
if (GetEventObjectIdByXYZ(curX, curY, 0) != 16)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1736,7 +1736,7 @@ bool8 sub_8128D10(u8 taskId)
|
||||
data[1] ++;
|
||||
return FALSE;
|
||||
}
|
||||
if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height)
|
||||
if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapLayout->height)
|
||||
{
|
||||
data[1] --;
|
||||
return FALSE;
|
||||
@@ -1746,7 +1746,7 @@ bool8 sub_8128D10(u8 taskId)
|
||||
data[0] ++;
|
||||
return FALSE;
|
||||
}
|
||||
if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width)
|
||||
if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapLayout->width)
|
||||
{
|
||||
data[0] --;
|
||||
return FALSE;
|
||||
@@ -1990,7 +1990,7 @@ u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuf
|
||||
data->decoration = &gDecorations[decor];
|
||||
if (data->decoration->permission == DECORPERM_SOLID_MAT)
|
||||
{
|
||||
return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
|
||||
return AddPseudoEventObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
|
||||
}
|
||||
FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
|
||||
sub_81291E8(data);
|
||||
@@ -2040,7 +2040,7 @@ const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
|
||||
return gUnknown_085A6BE8[decor][mode];
|
||||
}
|
||||
|
||||
u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor)
|
||||
u8 AddDecorationIconObjectFromEventObject(u16 tilesTag, u16 paletteTag, u8 decor)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct SpriteSheet sheet;
|
||||
@@ -2071,7 +2071,7 @@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor
|
||||
}
|
||||
else
|
||||
{
|
||||
spriteId = AddPseudoFieldObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
|
||||
spriteId = AddPseudoEventObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
|
||||
}
|
||||
return spriteId;
|
||||
}
|
||||
@@ -2092,7 +2092,7 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
|
||||
}
|
||||
else if (gUnknown_085A6BE8[decor][0] == NULL)
|
||||
{
|
||||
spriteId = AddDecorationIconObjectFromFieldObject(tilesTag, paletteTag, decor);
|
||||
spriteId = AddDecorationIconObjectFromEventObject(tilesTag, paletteTag, decor);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
{
|
||||
return MAX_SPRITES;
|
||||
@@ -2141,11 +2141,11 @@ void sub_8129708(void)
|
||||
{
|
||||
gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId;
|
||||
sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
|
||||
for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
|
||||
for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
|
||||
{
|
||||
if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005)
|
||||
if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8005)
|
||||
{
|
||||
gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId;
|
||||
gSpecialVar_0x8006 = gMapHeader.events->eventObjects[i].localId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2156,11 +2156,11 @@ void sub_81297AC(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
|
||||
for (i = 0; i < gMapHeader.events->eventObjectCount; i ++)
|
||||
{
|
||||
if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004)
|
||||
if (gMapHeader.events->eventObjects[i].flagId == gSpecialVar_0x8004)
|
||||
{
|
||||
gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId;
|
||||
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[i].localId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2186,7 +2186,7 @@ void sub_81297F8(void)
|
||||
{
|
||||
for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x ++)
|
||||
{
|
||||
MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapData->map[posX + x + gMapHeader.mapData->width * (posY - y)] | 0x3000);
|
||||
MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapLayout->map[posX + x + gMapHeader.mapLayout->width * (posY - y)] | 0x3000);
|
||||
}
|
||||
}
|
||||
sub_81296EC(sDecorRearrangementDataBuffer[i].idx);
|
||||
@@ -2247,17 +2247,17 @@ bool8 sub_81299AC(u8 taskId)
|
||||
|
||||
void SetUpPuttingAwayDecorationPlayerAvatar(void)
|
||||
{
|
||||
player_get_direction_lower_nybble();
|
||||
GetPlayerFacingDirection();
|
||||
sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.spriteId].data[0];
|
||||
sub_812A39C();
|
||||
gUnknown_03005DD0.spriteId = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
|
||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||
{
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
|
||||
sDecor_CameraSpriteObjectIdx2 = AddPseudoEventObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
|
||||
}
|
||||
gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
|
||||
DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
|
||||
@@ -2451,9 +2451,9 @@ void sub_8129F20(void)
|
||||
yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
|
||||
for (i = 0; i < 0x40; i ++)
|
||||
{
|
||||
if (gSaveBlock1Ptr->mapObjectTemplates[i].x == xOff && gSaveBlock1Ptr->mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->mapObjectTemplates[i].flagId))
|
||||
if (gSaveBlock1Ptr->eventObjectTemplates[i].x == xOff && gSaveBlock1Ptr->eventObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->eventObjectTemplates[i].flagId))
|
||||
{
|
||||
sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId;
|
||||
sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->eventObjectTemplates[i].flagId;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -89,7 +89,7 @@ void CB2_ShowDiploma(void)
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
DisplayDiplomaText();
|
||||
BlendPalettes(-1, 16, 0);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
EnableInterrupts(1);
|
||||
SetVBlankCallback(VBlankCB);
|
||||
SetMainCallback2(MainCB2);
|
||||
@@ -114,7 +114,7 @@ static void Task_DiplomaWaitForKeyPress(u8 taskId)
|
||||
{
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
gTasks[taskId].func = Task_DiplomaFadeOut;
|
||||
}
|
||||
}
|
||||
|
||||
+7
-9
@@ -57,12 +57,10 @@ extern const u8 gText_NickHatchPrompt[];
|
||||
|
||||
extern u8 sav1_map_get_name(void);
|
||||
extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void FadeScreen(u8, u8);
|
||||
extern void overworld_free_bg_tilemaps(void);
|
||||
extern void sub_80AF168(void);
|
||||
extern void ScanlineEffect_Stop(void);
|
||||
extern void CB2_ReturnToField(void);
|
||||
extern void play_some_sound(void);
|
||||
extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback);
|
||||
extern u16 sub_80D22D0(void);
|
||||
@@ -437,8 +435,8 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_806A068(GetMonSpritePalStruct(mon)->tag, r5);
|
||||
spriteID = CreateSprite(&gUnknown_0202499C, 120, 75, 6);
|
||||
SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, r5);
|
||||
spriteID = CreateSprite(&gMultiuseSpriteTemplate, 120, 75, 6);
|
||||
gSprites[spriteID].invisible = 1;
|
||||
gSprites[spriteID].callback = SpriteCallbackDummy;
|
||||
break;
|
||||
@@ -593,7 +591,7 @@ static void CB2_EggHatch_1(void)
|
||||
switch (sEggHatchData->CB2_state)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
sEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_EggHatch, 120, 75, 5);
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
@@ -655,7 +653,7 @@ static void CB2_EggHatch_1(void)
|
||||
case 9:
|
||||
if (!IsTextPrinterActive(sEggHatchData->windowId))
|
||||
{
|
||||
sub_809882C(sEggHatchData->windowId, 0x140, 0xE0);
|
||||
LoadUserWindowBorderGfx(sEggHatchData->windowId, 0x140, 0xE0);
|
||||
CreateYesNoMenu(&sYesNoWinTemplate, 0x140, 0xE, 0);
|
||||
sEggHatchData->CB2_state++;
|
||||
}
|
||||
@@ -676,7 +674,7 @@ static void CB2_EggHatch_1(void)
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
sEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 12:
|
||||
@@ -786,7 +784,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite)
|
||||
{
|
||||
s16 i;
|
||||
if (sprite->data[0] == 0)
|
||||
BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 0x10, 0xFFFF);
|
||||
if (sprite->data[0] < 4u)
|
||||
{
|
||||
for (i = 0; i <= 3; i++)
|
||||
@@ -810,7 +808,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
|
||||
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
|
||||
}
|
||||
if (sprite->data[0] == 8)
|
||||
BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, 0xFFFF);
|
||||
if (sprite->data[0] <= 9)
|
||||
gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
|
||||
if (sprite->data[0] > 40)
|
||||
|
||||
+1
-1
@@ -190,7 +190,7 @@ bool8 VarSet(u16 id, u16 value)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 VarGetFieldObjectGraphicsId(u8 id)
|
||||
u8 VarGetEventObjectGraphicsId(u8 id)
|
||||
{
|
||||
return VarGet(0x4010 + id);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "map_obj_lock.h"
|
||||
#include "event_obj_lock.h"
|
||||
#include "script_movement.h"
|
||||
#include "task.h"
|
||||
#include "trainer_see.h"
|
||||
@@ -39,9 +38,9 @@ bool8 sub_80983C4(void)
|
||||
}
|
||||
|
||||
|
||||
void ScriptFreezeMapObjects(void)
|
||||
void ScriptFreezeEventObjects(void)
|
||||
{
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
CreateTask(sub_80983A4, 80);
|
||||
}
|
||||
|
||||
@@ -54,9 +53,9 @@ static void sub_8098400(u8 taskId)
|
||||
sub_808B864();
|
||||
task->data[0] = 1;
|
||||
}
|
||||
if (!task->data[1] && !gMapObjects[gSelectedMapObject].mapobj_bit_1)
|
||||
if (!task->data[1] && !gEventObjects[gSelectedEventObject].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[gSelectedMapObject]);
|
||||
FreezeEventObject(&gEventObjects[gSelectedEventObject]);
|
||||
task->data[1] = 1;
|
||||
}
|
||||
if (task->data[0] && task->data[1])
|
||||
@@ -76,61 +75,61 @@ bool8 sub_809847C(void)
|
||||
}
|
||||
}
|
||||
|
||||
void LockSelectedMapObject(void)
|
||||
void LockSelectedEventObject(void)
|
||||
{
|
||||
u8 taskId;
|
||||
FreezeMapObjectsExceptOne(gSelectedMapObject);
|
||||
FreezeEventObjectsExceptOne(gSelectedEventObject);
|
||||
taskId = CreateTask(sub_8098400, 80);
|
||||
if (!gMapObjects[gSelectedMapObject].mapobj_bit_1)
|
||||
if (!gEventObjects[gSelectedEventObject].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[gSelectedMapObject]);
|
||||
FreezeEventObject(&gEventObjects[gSelectedEventObject]);
|
||||
gTasks[taskId].data[1] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80984F4(void)
|
||||
void ScriptUnfreezeEventObjects(void)
|
||||
{
|
||||
u8 objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
|
||||
u8 objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeMapObjects();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
void sub_8098524(void)
|
||||
{
|
||||
u8 objectId;
|
||||
|
||||
if (gMapObjects[gSelectedMapObject].active)
|
||||
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
|
||||
objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
|
||||
if (gEventObjects[gSelectedEventObject].active)
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[gSelectedEventObject]);
|
||||
objectId = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[objectId]);
|
||||
sub_80D338C();
|
||||
UnfreezeMapObjects();
|
||||
UnfreezeEventObjects();
|
||||
}
|
||||
|
||||
void sub_8098574(void)
|
||||
{
|
||||
FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gSpecialVar_Facing);
|
||||
EventObjectFaceOppositeDirection(&gEventObjects[gSelectedEventObject], gSpecialVar_Facing);
|
||||
}
|
||||
|
||||
void sub_809859C(void)
|
||||
{
|
||||
FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[gSelectedMapObject]);
|
||||
EventObjectClearHeldMovementIfActive(&gEventObjects[gSelectedEventObject]);
|
||||
}
|
||||
|
||||
static void sub_80985BC(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
u8 mapObjectId = task->data[2];
|
||||
u8 eventObjectId = task->data[2];
|
||||
|
||||
if (!task->data[0] && walkrun_is_standing_still() == TRUE)
|
||||
{
|
||||
sub_808B864();
|
||||
task->data[0] = 1;
|
||||
}
|
||||
if (!task->data[1] && !gMapObjects[mapObjectId].mapobj_bit_1)
|
||||
if (!task->data[1] && !gEventObjects[eventObjectId].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[mapObjectId]);
|
||||
FreezeEventObject(&gEventObjects[eventObjectId]);
|
||||
task->data[1] = 1;
|
||||
}
|
||||
if (task->data[0] && task->data[1])
|
||||
@@ -140,34 +139,34 @@ static void sub_80985BC(u8 taskId)
|
||||
void sub_8098630(void)
|
||||
{
|
||||
u8 trainerObjectId1, trainerObjectId2, taskId;
|
||||
trainerObjectId1 = GetChosenApproachingTrainerMapObjectId(0);
|
||||
trainerObjectId1 = GetChosenApproachingTrainerEventObjectId(0);
|
||||
if(gNoOfApproachingTrainers == 2)
|
||||
{
|
||||
trainerObjectId2 = GetChosenApproachingTrainerMapObjectId(1);
|
||||
trainerObjectId2 = GetChosenApproachingTrainerEventObjectId(1);
|
||||
sub_8098074(trainerObjectId1, trainerObjectId2);
|
||||
taskId = CreateTask(sub_80985BC, 80);
|
||||
gTasks[taskId].data[2] = trainerObjectId1;
|
||||
if(!gMapObjects[trainerObjectId1].mapobj_bit_1)
|
||||
if(!gEventObjects[trainerObjectId1].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[trainerObjectId1]);
|
||||
FreezeEventObject(&gEventObjects[trainerObjectId1]);
|
||||
gTasks[taskId].data[1] = 1;
|
||||
}
|
||||
taskId = CreateTask(sub_80985BC, 81);
|
||||
gTasks[taskId].data[2] = trainerObjectId2;
|
||||
if(!gMapObjects[trainerObjectId2].mapobj_bit_1)
|
||||
if(!gEventObjects[trainerObjectId2].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[trainerObjectId2]);
|
||||
FreezeEventObject(&gEventObjects[trainerObjectId2]);
|
||||
gTasks[taskId].data[1] = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FreezeMapObjectsExceptOne(trainerObjectId1);
|
||||
FreezeEventObjectsExceptOne(trainerObjectId1);
|
||||
taskId = CreateTask(sub_80985BC, 80);
|
||||
gTasks[taskId].data[2] = trainerObjectId1;
|
||||
if(!gMapObjects[trainerObjectId1].mapobj_bit_1)
|
||||
if(!gEventObjects[trainerObjectId1].singleMovementActive)
|
||||
{
|
||||
FreezeMapObject(&gMapObjects[trainerObjectId1]);
|
||||
FreezeEventObject(&gEventObjects[trainerObjectId1]);
|
||||
gTasks[taskId].data[1] = 1;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+37
-38
@@ -62,7 +62,6 @@ extern const u8 gText_CommunicationStandby5[];
|
||||
|
||||
extern void sub_80356D0(void);
|
||||
extern void sub_807B154(void);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_807F19C(void);
|
||||
extern void sub_807B140(void);
|
||||
extern void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
|
||||
@@ -189,7 +188,7 @@ static void Task_BeginEvolutionScene(u8 taskID)
|
||||
switch (gTasks[taskID].tState)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskID].tState++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -280,9 +279,9 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
|
||||
pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality);
|
||||
LoadCompressedPalette(pokePal->data, 0x110, 0x20);
|
||||
|
||||
sub_806A068(currSpecies, 1);
|
||||
gUnknown_0202499C.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->preEvoSpriteID = ID = CreateSprite(&gUnknown_0202499C, 120, 64, 30);
|
||||
SetMultiuseSpriteTemplateToPokemon(currSpecies, 1);
|
||||
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->preEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
|
||||
|
||||
gSprites[ID].callback = SpriteCallbackDummy_2;
|
||||
gSprites[ID].oam.paletteNum = 1;
|
||||
@@ -295,9 +294,9 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
|
||||
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
|
||||
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
|
||||
|
||||
sub_806A068(speciesToEvolve, 3);
|
||||
gUnknown_0202499C.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gUnknown_0202499C, 120, 64, 30);
|
||||
SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 3);
|
||||
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
|
||||
gSprites[ID].callback = SpriteCallbackDummy_2;
|
||||
gSprites[ID].oam.paletteNum = 2;
|
||||
gSprites[ID].invisible = 1;
|
||||
@@ -373,9 +372,9 @@ static void CB2_EvolutionSceneLoadGraphics(void)
|
||||
|
||||
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
|
||||
|
||||
sub_806A068(postEvoSpecies, 3);
|
||||
gUnknown_0202499C.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gUnknown_0202499C, 120, 64, 30);
|
||||
SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3);
|
||||
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
|
||||
|
||||
gSprites[ID].callback = SpriteCallbackDummy_2;
|
||||
gSprites[ID].oam.paletteNum = 2;
|
||||
@@ -386,7 +385,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
|
||||
SetVBlankCallback(VBlankCB_EvolutionScene);
|
||||
SetMainCallback2(CB2_EvolutionSceneUpdate);
|
||||
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
@@ -450,9 +449,9 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
|
||||
{
|
||||
u8 ID;
|
||||
|
||||
sub_806A068(postEvoSpecies, 1);
|
||||
gUnknown_0202499C.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gUnknown_0202499C, 120, 64, 30);
|
||||
SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1);
|
||||
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
|
||||
|
||||
gSprites[ID].callback = SpriteCallbackDummy_2;
|
||||
gSprites[ID].oam.paletteNum = 2;
|
||||
@@ -470,7 +469,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
sub_807B140();
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
@@ -509,9 +508,9 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
|
||||
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
|
||||
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
|
||||
|
||||
sub_806A068(speciesToEvolve, 1);
|
||||
gUnknown_0202499C.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gUnknown_0202499C, 120, 64, 30);
|
||||
SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 1);
|
||||
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
||||
sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
|
||||
|
||||
gSprites[ID].callback = SpriteCallbackDummy_2;
|
||||
gSprites[ID].oam.paletteNum = 2;
|
||||
@@ -623,7 +622,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
switch (gTasks[taskID].tState)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gSprites[sEvoStructPtr->preEvoSpriteID].invisible = 0;
|
||||
gTasks[taskID].tState++;
|
||||
ShowBg(0);
|
||||
@@ -635,7 +634,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
|
||||
BattleHandleAddTextPrinter(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
gTasks[taskID].tState++;
|
||||
}
|
||||
break;
|
||||
@@ -731,7 +730,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (IsCryFinished())
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
|
||||
BattleHandleAddTextPrinter(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
PlayBGM(MUS_FANFA5);
|
||||
gTasks[taskID].tState++;
|
||||
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
|
||||
@@ -771,7 +770,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
}
|
||||
else // no move to learn
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskID].tState++;
|
||||
}
|
||||
}
|
||||
@@ -818,7 +817,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
else // Fire Red leftover probably
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving);
|
||||
|
||||
BattleHandleAddTextPrinter(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
gTasks[taskID].tEvoWasStopped = TRUE;
|
||||
gTasks[taskID].tState = 15;
|
||||
}
|
||||
@@ -829,7 +828,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
BufferMoveToLearnIntoBattleTextBuff2();
|
||||
PlayFanfare(MUS_FANFA1);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
|
||||
gTasks[taskID].tState++;
|
||||
}
|
||||
@@ -846,7 +845,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
{
|
||||
BufferMoveToLearnIntoBattleTextBuff2();
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -854,7 +853,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -862,7 +861,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tData7 = 5;
|
||||
gTasks[taskID].tData8 = 10;
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
@@ -871,7 +870,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
sEvoCursorPos = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
@@ -905,7 +904,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
{
|
||||
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
|
||||
if (gTasks[taskID].tLearnMoveState == 5)
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
}
|
||||
}
|
||||
if (gMain.newKeys & B_BUTTON)
|
||||
@@ -939,7 +938,7 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (IsHMMove2(move))
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnMoveState = 12;
|
||||
}
|
||||
else
|
||||
@@ -955,14 +954,14 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
break;
|
||||
case 7:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
break;
|
||||
case 8:
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -970,20 +969,20 @@ static void Task_EvolutionScene(u8 taskID)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tState = 20;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tData7 = 11;
|
||||
gTasks[taskID].tData8 = 0;
|
||||
gTasks[taskID].tLearnMoveState = 3;
|
||||
break;
|
||||
case 11:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
gTasks[taskID].tState = 15;
|
||||
break;
|
||||
case 12:
|
||||
@@ -1215,7 +1214,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
||||
case 3:
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
sub_809882C(0, 0xA8, 0xE0);
|
||||
LoadUserWindowBorderGfx(0, 0xA8, 0xE0);
|
||||
CreateYesNoMenu(&gUnknown_0833900C, 0xA8, 0xE, 0);
|
||||
sEvoCursorPos = 0;
|
||||
gTasks[taskID].tLearnMoveState++;
|
||||
@@ -1231,7 +1230,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
|
||||
sub_807F1A8(0, gDisplayedStringBattle, 1);
|
||||
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
|
||||
if (gTasks[taskID].tLearnMoveState == 5)
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
break;
|
||||
case 1:
|
||||
case -1:
|
||||
|
||||
+30
-30
@@ -4,7 +4,7 @@
|
||||
#include "field_camera.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
@@ -25,13 +25,13 @@ struct FieldCameraUnknownStruct
|
||||
};
|
||||
|
||||
// static functions
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapData *mapData);
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout);
|
||||
static s32 MapPosToBgTilemapOffset(struct FieldCameraUnknownStruct *a, s32 x, s32 y);
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData);
|
||||
static void DrawMetatileAt(const struct MapData *mapData, u16, int, int);
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout);
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16, int, int);
|
||||
static void DrawMetatile(s32 a, u16 *b, u16 c);
|
||||
static void CameraPanningCB_PanAhead(void);
|
||||
|
||||
@@ -97,11 +97,11 @@ void sub_8089C08(s16 *a, s16 *b)
|
||||
|
||||
void DrawWholeMapView(void)
|
||||
{
|
||||
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapData);
|
||||
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapLayout);
|
||||
gUnknown_03000E20.unk4 = TRUE;
|
||||
}
|
||||
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData)
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 j;
|
||||
@@ -119,27 +119,27 @@ static void DrawWholeMapViewInternal(int x, int y, const struct MapData *mapData
|
||||
temp = gUnknown_03000E20.unk2 + j;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r6 + temp, x + j / 2, y + i / 2);
|
||||
DrawMetatileAt(mapLayout, r6 + temp, x + j / 2, y + i / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSlicesForCameraUpdate(struct FieldCameraUnknownStruct *a, int x, int y)
|
||||
{
|
||||
const struct MapData *mapData = gMapHeader.mapData;
|
||||
const struct MapLayout *mapLayout = gMapHeader.mapLayout;
|
||||
|
||||
if (x > 0)
|
||||
RedrawMapSliceWest(a, mapData);
|
||||
RedrawMapSliceWest(a, mapLayout);
|
||||
if (x < 0)
|
||||
RedrawMapSliceEast(a, mapData);
|
||||
RedrawMapSliceEast(a, mapLayout);
|
||||
if (y > 0)
|
||||
RedrawMapSliceNorth(a, mapData);
|
||||
RedrawMapSliceNorth(a, mapLayout);
|
||||
if (y < 0)
|
||||
RedrawMapSliceSouth(a, mapData);
|
||||
RedrawMapSliceSouth(a, mapLayout);
|
||||
a->unk4 = TRUE;
|
||||
}
|
||||
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -154,11 +154,11 @@ static void RedrawMapSliceNorth(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk2 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -169,11 +169,11 @@ static void RedrawMapSliceSouth(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk2 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -184,11 +184,11 @@ static void RedrawMapSliceEast(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk3 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapData *mapData)
|
||||
static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
@@ -201,7 +201,7 @@ static void RedrawMapSliceWest(struct FieldCameraUnknownStruct *a, const struct
|
||||
temp = a->unk3 + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapData, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ void CurrentMapDrawMetatileAt(int a, int b)
|
||||
|
||||
if (offset >= 0)
|
||||
{
|
||||
DrawMetatileAt(gMapHeader.mapData, offset, a, b);
|
||||
DrawMetatileAt(gMapHeader.mapLayout, offset, a, b);
|
||||
gUnknown_03000E20.unk4 = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -227,7 +227,7 @@ void DrawDoorMetatileAt(int x, int y, u16 *arr)
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawMetatileAt(const struct MapData *mapData, u16 b, int c, int d)
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 b, int c, int d)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(c, d);
|
||||
u16 *metatiles;
|
||||
@@ -235,10 +235,10 @@ static void DrawMetatileAt(const struct MapData *mapData, u16 b, int c, int d)
|
||||
if (metatileId > 1024)
|
||||
metatileId = 0;
|
||||
if (metatileId < 512)
|
||||
metatiles = mapData->primaryTileset->metatiles;
|
||||
metatiles = mapLayout->primaryTileset->metatiles;
|
||||
else
|
||||
{
|
||||
metatiles = mapData->secondaryTileset->metatiles;
|
||||
metatiles = mapLayout->secondaryTileset->metatiles;
|
||||
metatileId -= 512;
|
||||
}
|
||||
DrawMetatile(MapGridGetMetatileLayerTypeAt(c, d), metatiles + metatileId * 8, b);
|
||||
@@ -406,7 +406,7 @@ void CameraUpdate(void)
|
||||
if (deltaX != 0 || deltaY != 0)
|
||||
{
|
||||
CameraMove(deltaX, deltaY);
|
||||
UpdateFieldObjectsForCameraUpdate(deltaX, deltaY);
|
||||
UpdateEventObjectsForCameraUpdate(deltaX, deltaY);
|
||||
RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
|
||||
ResetBerryTreeSparkleFlags();
|
||||
tilemap_move_something(&gUnknown_03000E20, deltaX * 2, deltaY * 2);
|
||||
@@ -421,7 +421,7 @@ void CameraUpdate(void)
|
||||
void camera_move_and_redraw(int a, int b) //unused
|
||||
{
|
||||
CameraMove(a, b);
|
||||
UpdateFieldObjectsForCameraUpdate(a, b);
|
||||
UpdateEventObjectsForCameraUpdate(a, b);
|
||||
DrawWholeMapView();
|
||||
gUnknown_03005DEC -= a * 16;
|
||||
gUnknown_03005DE8 -= b * 16;
|
||||
@@ -477,7 +477,7 @@ static void CameraPanningCB_PanAhead(void)
|
||||
gUnknown_03000E2C = 0;
|
||||
}
|
||||
|
||||
var = player_get_direction_upper_nybble();
|
||||
var = GetPlayerMovementDirection();
|
||||
if (var == 2)
|
||||
{
|
||||
if (gUnknown_03000E2A > -8)
|
||||
|
||||
+1
-1
@@ -889,7 +889,7 @@ bool8 sub_808A964(void)
|
||||
{
|
||||
if (FlagGet(FLAG_SPECIAL_FLAG_0x4002))
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR_2) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR_2))
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR2))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+216
-217
File diff suppressed because it is too large
Load Diff
-5119
File diff suppressed because it is too large
Load Diff
@@ -1,705 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "field_ground_effect.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "malloc.h"
|
||||
#include "task.h"
|
||||
#include "util.h"
|
||||
|
||||
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
|
||||
|
||||
extern const struct Coords16 gUnknown_0850DB7C[4];
|
||||
extern s16 gUnknown_0850E768[];
|
||||
extern SpriteStepFunc *const gUnknown_0850E754[];
|
||||
extern const s8 gUnknown_0850E772[];
|
||||
extern const s8 gUnknown_0850E7BA[];
|
||||
extern const s8 *const gUnknown_0850E834[];
|
||||
extern s16 gUnknown_0850E840[];
|
||||
extern u8 gUnknown_0850E846[];
|
||||
extern s16 gUnknown_0850E84A[];
|
||||
extern u8 gUnknown_0850E850[];
|
||||
|
||||
void sub_8097D68(struct Sprite *sprite);
|
||||
void sub_8097FE4(u8);
|
||||
|
||||
bool8 FreezeMapObject(struct MapObject *mapObject)
|
||||
{
|
||||
if (mapObject->mapobj_bit_6 || mapObject->mapobj_bit_8)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapObject->mapobj_bit_8 = 1;
|
||||
mapObject->mapobj_bit_23 = gSprites[mapObject->spriteId].animPaused;
|
||||
mapObject->mapobj_bit_24 = gSprites[mapObject->spriteId].affineAnimPaused;
|
||||
gSprites[mapObject->spriteId].animPaused = 1;
|
||||
gSprites[mapObject->spriteId].affineAnimPaused = 1;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void FreezeMapObjects(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
if (gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
|
||||
FreezeMapObject(&gMapObjects[i]);
|
||||
}
|
||||
|
||||
void FreezeMapObjectsExceptOne(u8 a1)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
if (i != a1 && gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
|
||||
FreezeMapObject(&gMapObjects[i]);
|
||||
}
|
||||
|
||||
void npc_sync_anim_pause_bits(struct MapObject *mapObject)
|
||||
{
|
||||
if (mapObject->active && mapObject->mapobj_bit_8)
|
||||
{
|
||||
mapObject->mapobj_bit_8 = 0;
|
||||
gSprites[mapObject->spriteId].animPaused = mapObject->mapobj_bit_23;
|
||||
gSprites[mapObject->spriteId].affineAnimPaused = mapObject->mapobj_bit_24;
|
||||
}
|
||||
}
|
||||
|
||||
void UnfreezeMapObjects(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
if (gMapObjects[i].active)
|
||||
npc_sync_anim_pause_bits(&gMapObjects[i]);
|
||||
}
|
||||
|
||||
void little_step(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += gUnknown_0850DB7C[dir].x;
|
||||
sprite->pos1.y += gUnknown_0850DB7C[dir].y;
|
||||
}
|
||||
|
||||
void double_little_steps(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) gUnknown_0850DB7C[dir].x;
|
||||
sprite->pos1.y += 2 * (u16) gUnknown_0850DB7C[dir].y;
|
||||
}
|
||||
|
||||
void triple_little_steps(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) gUnknown_0850DB7C[dir].x + (u16) gUnknown_0850DB7C[dir].x;
|
||||
sprite->pos1.y += 2 * (u16) gUnknown_0850DB7C[dir].y + (u16) gUnknown_0850DB7C[dir].y;
|
||||
}
|
||||
|
||||
void quad_little_steps(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 4 * (u16) gUnknown_0850DB7C[dir].x;
|
||||
sprite->pos1.y += 4 * (u16) gUnknown_0850DB7C[dir].y;
|
||||
}
|
||||
|
||||
void oct_little_steps(struct Sprite *sprite, u8 dir)
|
||||
{
|
||||
sprite->pos1.x += 8 * (u16) gUnknown_0850DB7C[dir].x;
|
||||
sprite->pos1.y += 8 * (u16) gUnknown_0850DB7C[dir].y;
|
||||
}
|
||||
|
||||
void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
|
||||
{
|
||||
sprite->data[3] = a2;
|
||||
sprite->data[4] = a3;
|
||||
sprite->data[5] = 0;
|
||||
}
|
||||
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[5] >= gUnknown_0850E768[sprite->data[4]])
|
||||
return FALSE;
|
||||
|
||||
gUnknown_0850E754[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
|
||||
|
||||
sprite->data[5]++;
|
||||
|
||||
if (sprite->data[5] < gUnknown_0850E768[sprite->data[4]])
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80976DC(struct Sprite *sprite, u8 a2)
|
||||
{
|
||||
sprite->data[3] = a2;
|
||||
sprite->data[4] = 0;
|
||||
sprite->data[5] = 0;
|
||||
}
|
||||
|
||||
bool8 sub_80976EC(struct Sprite *sprite)
|
||||
{
|
||||
if (!(sprite->data[4] & 1))
|
||||
{
|
||||
little_step(sprite, sprite->data[3]);
|
||||
sprite->data[5]++;
|
||||
}
|
||||
|
||||
sprite->data[4]++;
|
||||
|
||||
if (sprite->data[5] > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// new helper added here in the middle. Perhaps Game Freak kept these organized in alphebetical order or some other heirarchy?
|
||||
|
||||
s16 sub_8097728(s16 a1)
|
||||
{
|
||||
return gUnknown_0850E7BA[a1];
|
||||
}
|
||||
|
||||
s16 sub_809773C(s16 a1)
|
||||
{
|
||||
return gUnknown_0850E772[a1];
|
||||
}
|
||||
|
||||
void sub_8097750(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7] = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8097758(struct Sprite *sprite)
|
||||
{
|
||||
bool8 result = FALSE;
|
||||
|
||||
switch(sprite->data[7])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x += sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 1:
|
||||
sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
case 2:
|
||||
sprite->pos2.x -= sub_809773C(sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(sprite->data[6]);
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
|
||||
sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
|
||||
break;
|
||||
}
|
||||
if(++sprite->data[6] == 0x48)
|
||||
{
|
||||
sprite->data[6] = 0;
|
||||
sprite->data[7]++;
|
||||
}
|
||||
if(sprite->data[7] == 0x4)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->pos2.x = 0;
|
||||
result = TRUE;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
s16 sub_8097820(s16 a1, u8 a2)
|
||||
{
|
||||
return gUnknown_0850E834[a2][a1];
|
||||
}
|
||||
|
||||
void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
|
||||
{
|
||||
sprite->data[3] = a2;
|
||||
sprite->data[4] = a3;
|
||||
sprite->data[5] = a4;
|
||||
sprite->data[6] = 0;
|
||||
}
|
||||
|
||||
u8 sub_809785C(struct Sprite *sprite)
|
||||
{
|
||||
s16 v5[3];
|
||||
u8 v6[3];
|
||||
u8 v2;
|
||||
|
||||
memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy
|
||||
memcpy(v6, gUnknown_0850E846, 3);
|
||||
v2 = 0;
|
||||
|
||||
if (sprite->data[4])
|
||||
little_step(sprite, sprite->data[3]);
|
||||
|
||||
sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
|
||||
|
||||
sprite->data[6]++;
|
||||
|
||||
if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
|
||||
v2 = 1;
|
||||
|
||||
if (sprite->data[6] >= v5[sprite->data[4]])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
v2 = -1;
|
||||
}
|
||||
|
||||
return v2;
|
||||
}
|
||||
|
||||
u8 sub_80978E4(struct Sprite *sprite)
|
||||
{
|
||||
s16 v5[3];
|
||||
u8 v6[3];
|
||||
u8 v2;
|
||||
|
||||
memcpy(v5, gUnknown_0850E84A, 6);
|
||||
memcpy(v6, gUnknown_0850E850, 3);
|
||||
v2 = 0;
|
||||
|
||||
if (sprite->data[4] && !(sprite->data[6] & 1))
|
||||
little_step(sprite, sprite->data[3]);
|
||||
|
||||
sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
|
||||
|
||||
sprite->data[6]++;
|
||||
|
||||
if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
|
||||
v2 = 1;
|
||||
|
||||
if (sprite->data[6] >= v5[sprite->data[4]])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
v2 = -1;
|
||||
}
|
||||
|
||||
return v2;
|
||||
}
|
||||
|
||||
void SetFieldObjectStepTimer(struct Sprite *sprite, u16 timer)
|
||||
{
|
||||
sprite->data[3] = timer;
|
||||
}
|
||||
|
||||
|
||||
bool8 RunFieldObjectStepTimer(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[3]--;
|
||||
|
||||
if (sprite->data[3] == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3)
|
||||
{
|
||||
sprite->animNum = a2;
|
||||
sprite->animPaused = 0 ;
|
||||
SeekSpriteAnim(sprite, a3);
|
||||
}
|
||||
|
||||
bool8 sub_80979BC(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80979D4(struct Sprite *sprite, bool8 invisible)
|
||||
{
|
||||
u16 x, y;
|
||||
s16 x2, y2;
|
||||
|
||||
sprite->invisible = invisible;
|
||||
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
x2 = x - (sprite->centerToCornerVecX >> 1);
|
||||
y2 = y - (sprite->centerToCornerVecY >> 1);
|
||||
|
||||
if ((s16)x > 255 || x2 < -16)
|
||||
sprite->invisible = 1;
|
||||
if ((s16)y > 175 || y2 < -16)
|
||||
sprite->invisible = 1;
|
||||
}
|
||||
|
||||
void sub_8097AC8(struct Sprite *sprite)
|
||||
{
|
||||
sub_8097D68(sprite);
|
||||
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
|
||||
sub_80979D4(sprite, sprite->data[2]);
|
||||
}
|
||||
|
||||
void sub_8097AF0(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if(sprite->inUse && sprite->callback == sub_8097AC8)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
int sub_8097B2C(u8 var) // this should return a u8, because all that call this shifts to u8, but it wont match because it doesnt shift u8 at the end.
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if(sprite->inUse && sprite->callback == sub_8097AC8 && (u8)sprite->data[0] == var)
|
||||
return i;
|
||||
}
|
||||
return MAX_SPRITES;
|
||||
}
|
||||
|
||||
void sub_8097B78(u8 var1, u8 var2)
|
||||
{
|
||||
u8 spriteId = sub_8097B2C(var1);
|
||||
|
||||
if(spriteId != MAX_SPRITES)
|
||||
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(var2));
|
||||
}
|
||||
|
||||
void sub_8097BB4(u8 var1, u8 var2)
|
||||
{
|
||||
int spriteId = sub_8097B2C(var1);
|
||||
|
||||
if(spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(var2);
|
||||
u16 tileNum = sprite->oam.tileNum;
|
||||
|
||||
sprite->oam = *gfxInfo->oam;
|
||||
sprite->oam.tileNum = tileNum;
|
||||
sprite->oam.paletteNum = gfxInfo->paletteSlot;
|
||||
sprite->images = gfxInfo->images;
|
||||
|
||||
if(gfxInfo->subspriteTables == NULL)
|
||||
{
|
||||
sprite->subspriteTables = NULL;
|
||||
sprite->subspriteTableNum = 0;
|
||||
sprite->subspriteMode = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetSubspriteTables(sprite, gfxInfo->subspriteTables);
|
||||
sprite->subspriteMode = 2;
|
||||
}
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097C44(u8 var, bool32 var2)
|
||||
{
|
||||
u8 spriteId = sub_8097B2C(var);
|
||||
|
||||
if(spriteId == MAX_SPRITES)
|
||||
return;
|
||||
|
||||
if(var2)
|
||||
gSprites[spriteId].data[2] = 1;
|
||||
else
|
||||
gSprites[spriteId].data[2] = 0;
|
||||
}
|
||||
|
||||
bool32 sub_8097C8C(u8 var)
|
||||
{
|
||||
u8 spriteId = sub_8097B2C(var);
|
||||
|
||||
if(spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
|
||||
return (gSprites[spriteId].data[2] == TRUE);
|
||||
}
|
||||
|
||||
void sub_8097CC4(u8 var1, u8 var2)
|
||||
{
|
||||
u8 spriteId = sub_8097B2C(var1);
|
||||
|
||||
if(spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].data[3] = var2;
|
||||
gSprites[spriteId].data[4] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097CF4(struct Sprite *sprite)
|
||||
{
|
||||
switch(sprite->data[4])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->data[4]++;
|
||||
case 1:
|
||||
sprite->pos2.y -= 8;
|
||||
if(sprite->pos2.y == -160)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->data[2] = 1;
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097D30(struct Sprite *sprite)
|
||||
{
|
||||
switch(sprite->data[4])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = -160;
|
||||
sprite->data[4]++;
|
||||
case 1:
|
||||
sprite->pos2.y += 8;
|
||||
if(sprite->pos2.y == 0)
|
||||
{
|
||||
sprite->data[3] = 0;
|
||||
sprite->data[4] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8097D68(struct Sprite *sprite)
|
||||
{
|
||||
switch(sprite->data[3])
|
||||
{
|
||||
case 1:
|
||||
sub_8097D30(sprite);
|
||||
break;
|
||||
case 2:
|
||||
sub_8097CF4(sprite);
|
||||
break;
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
sprite->data[3] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_8097D9C(u8 var)
|
||||
{
|
||||
u8 spriteId = sub_8097B2C(var);
|
||||
|
||||
if(spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
|
||||
if(gSprites[spriteId].data[3] != FALSE)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
|
||||
{
|
||||
FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
|
||||
return FieldEffectStart(fieldEffectId);
|
||||
}
|
||||
|
||||
void DoShadowFieldEffect(struct MapObject *mapObject)
|
||||
{
|
||||
if (!mapObject->mapobj_bit_22)
|
||||
{
|
||||
mapObject->mapobj_bit_22 = 1;
|
||||
oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
|
||||
}
|
||||
}
|
||||
|
||||
void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
|
||||
gFieldEffectArguments[0] = sprite->pos1.x;
|
||||
gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
|
||||
gFieldEffectArguments[2] = 151;
|
||||
gFieldEffectArguments[3] = 3;
|
||||
FieldEffectStart(FLDEFF_RIPPLE);
|
||||
}
|
||||
|
||||
bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
u32 one;
|
||||
bool32 ableToStore = FALSE;
|
||||
if (gUnknown_020375B8 == NULL)
|
||||
{
|
||||
gUnknown_020375B8 = AllocZeroed(0x14);
|
||||
gUnknown_020375B8[0] = mapObject->localId;
|
||||
// needed to match
|
||||
gUnknown_020375B8[16] = (one = 1);
|
||||
ableToStore = one;
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 i;
|
||||
u8 firstFreeSlot;
|
||||
bool32 found;
|
||||
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
|
||||
{
|
||||
if (firstFreeSlot == 16 && gUnknown_020375B8[i] == 0)
|
||||
firstFreeSlot = i;
|
||||
|
||||
if (gUnknown_020375B8[i] == mapObject->localId)
|
||||
{
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found && firstFreeSlot != 16)
|
||||
{
|
||||
gUnknown_020375B8[firstFreeSlot] = mapObject->localId;
|
||||
gUnknown_020375B8[16]++;
|
||||
ableToStore = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (ableToStore == TRUE)
|
||||
{
|
||||
mapObject->mapobj_bit_12 = TRUE;
|
||||
mapObject->mapobj_bit_9 = TRUE;
|
||||
}
|
||||
|
||||
sprite->data[2] = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_8097EF0(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
bool32 ableToStore;
|
||||
u8 id;
|
||||
|
||||
sprite->data[2] = 1;
|
||||
if (gUnknown_020375B8 != NULL)
|
||||
{
|
||||
ableToStore = FALSE;
|
||||
id = sub_8097F78(mapObject);
|
||||
if (id != 16)
|
||||
{
|
||||
gUnknown_020375B8[id] = 0;
|
||||
gUnknown_020375B8[16]--;
|
||||
ableToStore = TRUE;
|
||||
}
|
||||
if (gUnknown_020375B8[16] == 0)
|
||||
FREE_AND_SET_NULL(gUnknown_020375B8);
|
||||
if (ableToStore == TRUE)
|
||||
{
|
||||
mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate;
|
||||
mapObject->mapobj_bit_9 = 0;
|
||||
sprite->animPaused = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_8097F78(struct MapObject *mapObject)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for(i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
{
|
||||
if(gUnknown_020375B8[i] == mapObject->localId)
|
||||
return i;
|
||||
}
|
||||
return MAP_OBJECTS_COUNT;
|
||||
}
|
||||
|
||||
void sub_8097FA4(struct MapObject *mapObject)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_8097FE4, 0xFF);
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
StoreWordInTwoHalfwords(&task->data[0], (u32)mapObject);
|
||||
mapObject->mapobj_unk_1B = taskId;
|
||||
task->data[3] = 0xFFFF;
|
||||
}
|
||||
|
||||
void sub_8097FE4(u8 taskId)
|
||||
{
|
||||
struct MapObject *mapObject;
|
||||
struct Sprite *sprite;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&mapObject); // load the map object pointer.
|
||||
sprite = &gSprites[mapObject->spriteId];
|
||||
|
||||
if(!(task->data[2] & 0x3))
|
||||
sprite->pos2.y += task->data[3];
|
||||
|
||||
if(!(task->data[2] & 0xF))
|
||||
task->data[3] = -task->data[3];
|
||||
|
||||
task->data[2]++;
|
||||
}
|
||||
|
||||
void sub_8098044(u8 taskId)
|
||||
{
|
||||
u32 word;
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
LoadWordFromTwoHalfwords(&task->data[0], &word); // huh??? why does it load a word that never gets used???
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void sub_8098074(u8 var1, u8 var2)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for(i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
{
|
||||
if(i != var1 && i != var2 &&
|
||||
gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
|
||||
FreezeMapObject(&gMapObjects[i]);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_80980C0(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_80980D0(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y -= 8;
|
||||
|
||||
if(sprite->pos2.y == -160)
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_80980F4(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = -160;
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_8098108(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y += 8;
|
||||
|
||||
if(!sprite->pos2.y)
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// though this function returns TRUE without doing anything, this header is required due to being in an array of functions which needs it.
|
||||
bool32 sub_8098124(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ static void MCB2_InitRegionMapRegisters(void)
|
||||
InitBgsFromTemplates(1, gUnknown_085E5068, 2);
|
||||
InitWindows(gUnknown_085E5070);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 0x27, 0xd0);
|
||||
LoadUserWindowBorderGfx(0, 0x27, 0xd0);
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
SetMainCallback2(MCB2_FieldUpdateRegionMap);
|
||||
SetVBlankCallback(VBCB_FieldUpdateRegionMap);
|
||||
@@ -130,7 +130,7 @@ static void FieldUpdateRegionMap(void)
|
||||
schedule_bg_copy_tilemap_to_vram(0);
|
||||
SetWindowBorderStyle(0, 0, 0x27, 0xd);
|
||||
PrintRegionMapSecName();
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
sFieldRegionMapHandler->state++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -158,7 +158,7 @@ static void FieldUpdateRegionMap(void)
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
sFieldRegionMapHandler->state++;
|
||||
break;
|
||||
case 6:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "task.h"
|
||||
#include "sprite.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "constants/songs.h"
|
||||
#include "sound.h"
|
||||
#include "palette.h"
|
||||
@@ -329,24 +329,24 @@ void Task_HandlePorthole(u8 taskId)
|
||||
|
||||
void sub_80FB6EC(void)
|
||||
{
|
||||
u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
|
||||
u8 spriteId = AddPseudoEventObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
|
||||
|
||||
gSprites[spriteId].coordOffsetEnabled = FALSE;
|
||||
|
||||
if (VarGet(0x40B4) == 2)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
|
||||
StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(4));
|
||||
}
|
||||
else
|
||||
{
|
||||
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3));
|
||||
StartSpriteAnim(&gSprites[spriteId], GetFaceDirectionAnimNum(3));
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FB768(void)
|
||||
{
|
||||
sub_80FB6EC();
|
||||
gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].invisible = TRUE;
|
||||
pal_fill_black();
|
||||
CreateTask(Task_HandlePorthole, 80);
|
||||
ScriptContext2_Enable();
|
||||
|
||||
+3
-3
@@ -525,8 +525,8 @@ static bool32 sub_809E184(s16 x, s16 y)
|
||||
void SetSootopolisGymCrackedIceMetatiles(void)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 width = gMapHeader.mapData->width;
|
||||
s32 height = gMapHeader.mapData->height;
|
||||
s32 width = gMapHeader.mapLayout->width;
|
||||
s32 height = gMapHeader.mapLayout->height;
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
for (y = 0; y < height; y++)
|
||||
@@ -623,7 +623,7 @@ static void PerStepCallback_8069F64(u8 taskId)
|
||||
{
|
||||
data[1] = x;
|
||||
data[2] = y;
|
||||
if (MetatileBehavior_IsAsh(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == 0x20a)
|
||||
{
|
||||
|
||||
+61
-61
@@ -28,7 +28,7 @@ EWRAM_DATA struct Camera gCamera = {0};
|
||||
EWRAM_DATA static struct ConnectionFlags gUnknown_02037340 = {0};
|
||||
EWRAM_DATA static u32 sFiller_02037344 = 0; // without this, the next file won't align properly
|
||||
|
||||
struct BackupMapData gUnknown_03005DC0;
|
||||
struct BackupMapLayout gUnknown_03005DC0;
|
||||
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {0};
|
||||
|
||||
@@ -68,19 +68,19 @@ void trainer_hill_map_load_related(void)
|
||||
|
||||
void mapheader_copy_mapdata_with_padding(struct MapHeader *mapHeader)
|
||||
{
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
int width;
|
||||
int height;
|
||||
mapData = mapHeader->mapData;
|
||||
mapLayout = mapHeader->mapLayout;
|
||||
CpuFastFill16(0x03ff, gUnknown_02032318, sizeof(gUnknown_02032318));
|
||||
gUnknown_03005DC0.map = gUnknown_02032318;
|
||||
width = mapData->width + 15;
|
||||
width = mapLayout->width + 15;
|
||||
gUnknown_03005DC0.width = width;
|
||||
height = mapData->height + 14;
|
||||
height = mapLayout->height + 14;
|
||||
gUnknown_03005DC0.height = height;
|
||||
if (width * height <= 0x2800)
|
||||
{
|
||||
map_copy_with_padding(mapData->map, mapData->width, mapData->height);
|
||||
map_copy_with_padding(mapLayout->map, mapLayout->width, mapLayout->height);
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
}
|
||||
}
|
||||
@@ -146,8 +146,8 @@ void sub_8087F54(int x, int y, struct MapHeader const *mapHeader, int x2, int y2
|
||||
u16 *dest;
|
||||
int mapWidth;
|
||||
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
src = &mapHeader->mapData->map[mapWidth * y2 + x2];
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
src = &mapHeader->mapLayout->map[mapWidth * y2 + x2];
|
||||
dest = &gUnknown_03005DC0.map[gUnknown_03005DC0.width * y + x];
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
@@ -167,9 +167,9 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
x = offset + 7;
|
||||
y = mapHeader->mapData->height + 7;
|
||||
y = mapHeader->mapLayout->height + 7;
|
||||
if (x < 0)
|
||||
{
|
||||
x2 = -x;
|
||||
@@ -214,8 +214,8 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
x = offset + 7;
|
||||
y2 = cHeight - 7;
|
||||
if (x < 0)
|
||||
@@ -262,8 +262,8 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
int cWidth, cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cWidth = connectedMapHeader->mapData->width;
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
cWidth = connectedMapHeader->mapLayout->width;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
y = offset + 7;
|
||||
x2 = cWidth - 7;
|
||||
if (y < 0)
|
||||
@@ -308,8 +308,8 @@ void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
int cHeight;
|
||||
if (connectedMapHeader)
|
||||
{
|
||||
cHeight = connectedMapHeader->mapData->height;
|
||||
x = mapHeader->mapData->width + 7;
|
||||
cHeight = connectedMapHeader->mapLayout->height;
|
||||
x = mapHeader->mapLayout->width + 7;
|
||||
y = offset + 7;
|
||||
if (y < 0)
|
||||
{
|
||||
@@ -369,10 +369,10 @@ u8 MapGridGetZCoordAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = gMapHeader.mapData->border[i];
|
||||
block = gMapHeader.mapLayout->border[i];
|
||||
block |= 0xc00;
|
||||
}
|
||||
|
||||
@@ -380,7 +380,7 @@ u8 MapGridGetZCoordAt(int x, int y)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
return block >> 12;
|
||||
}
|
||||
|
||||
@@ -397,10 +397,10 @@ u8 MapGridIsImpassableAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = gMapHeader.mapData->border[i];
|
||||
block = gMapHeader.mapLayout->border[i];
|
||||
block |= 0xc00;
|
||||
}
|
||||
if (block == 0x3ff)
|
||||
@@ -415,7 +415,7 @@ u32 MapGridGetMetatileIdAt(int x, int y)
|
||||
u16 block;
|
||||
int i;
|
||||
int j;
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
u16 *border;
|
||||
u16 block2;
|
||||
|
||||
@@ -426,17 +426,17 @@ u32 MapGridGetMetatileIdAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
mapData = gMapHeader.mapData;
|
||||
mapLayout = gMapHeader.mapLayout;
|
||||
i = (x + 1) & 1;
|
||||
i += ((y + 1) & 1) * 2;
|
||||
block = mapData->border[i] | 0xc00;
|
||||
block = mapLayout->border[i] | 0xc00;
|
||||
}
|
||||
if (block == 0x3ff)
|
||||
{
|
||||
border = gMapHeader.mapData->border;
|
||||
border = gMapHeader.mapLayout->border;
|
||||
j = (x + 1) & 1;
|
||||
j += ((y + 1) & 1) * 2;
|
||||
block2 = gMapHeader.mapData->border[j];
|
||||
block2 = gMapHeader.mapLayout->border[j];
|
||||
block2 |= 0xc00;
|
||||
return block2 & block;
|
||||
}
|
||||
@@ -484,12 +484,12 @@ u16 GetBehaviorByMetatileId(u16 metatile)
|
||||
u16 *attributes;
|
||||
if (metatile <= 0x1ff)
|
||||
{
|
||||
attributes = gMapHeader.mapData->primaryTileset->metatileAttributes;
|
||||
attributes = gMapHeader.mapLayout->primaryTileset->metatileAttributes;
|
||||
return attributes[metatile];
|
||||
}
|
||||
else if (metatile <= 0x3ff)
|
||||
{
|
||||
attributes = gMapHeader.mapData->secondaryTileset->metatileAttributes;
|
||||
attributes = gMapHeader.mapLayout->secondaryTileset->metatileAttributes;
|
||||
return attributes[metatile - 0x200];
|
||||
}
|
||||
else
|
||||
@@ -555,11 +555,11 @@ void mapdata_from_sav2(void)
|
||||
{
|
||||
if (i == y && i != 0)
|
||||
a0 = 0;
|
||||
else if (i == y + 13 && i != gMapHeader.mapData->height - 1)
|
||||
else if (i == y + 13 && i != gMapHeader.mapLayout->height - 1)
|
||||
a0 = 1;
|
||||
else
|
||||
a0 = -1;
|
||||
|
||||
|
||||
for (j = x; j < x + 15; j++)
|
||||
{
|
||||
if (!sub_8088BF0(&gUnknown_02032318[j + width * i], width, a0))
|
||||
@@ -571,7 +571,7 @@ void mapdata_from_sav2(void)
|
||||
{
|
||||
if (y != 0)
|
||||
sub_80D423C(j, y - 1);
|
||||
if (i < gMapHeader.mapData->height - 1)
|
||||
if (i < gMapHeader.mapLayout->height - 1)
|
||||
sub_80D42B8(j, y + 13);
|
||||
}
|
||||
sav2_mapdata_clear();
|
||||
@@ -636,7 +636,7 @@ void sub_80885C4(u8 a1)
|
||||
|
||||
int GetMapBorderIdAt(int x, int y)
|
||||
{
|
||||
struct MapData const *mapData;
|
||||
struct MapLayout const *mapLayout;
|
||||
u16 block, block2;
|
||||
int i, j;
|
||||
if (x >= 0 && x < gUnknown_03005DC0.width
|
||||
@@ -652,10 +652,10 @@ int GetMapBorderIdAt(int x, int y)
|
||||
}
|
||||
else
|
||||
{
|
||||
mapData = gMapHeader.mapData;
|
||||
mapLayout = gMapHeader.mapLayout;
|
||||
j = (x + 1) & 1;
|
||||
j += ((y + 1) & 1) * 2;
|
||||
block2 = 0xc00 | mapData->border[j];
|
||||
block2 = 0xc00 | mapLayout->border[j];
|
||||
if (block2 == 0x3ff)
|
||||
{
|
||||
goto fail;
|
||||
@@ -732,7 +732,7 @@ void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
|
||||
gSaveBlock1Ptr->pos.y -= connection->offset;
|
||||
break;
|
||||
case CONNECTION_WEST:
|
||||
gSaveBlock1Ptr->pos.x = mapHeader->mapData->width;
|
||||
gSaveBlock1Ptr->pos.x = mapHeader->mapLayout->width;
|
||||
gSaveBlock1Ptr->pos.y -= connection->offset;
|
||||
break;
|
||||
case CONNECTION_SOUTH:
|
||||
@@ -741,7 +741,7 @@ void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
|
||||
break;
|
||||
case CONNECTION_NORTH:
|
||||
gSaveBlock1Ptr->pos.x -= connection->offset;
|
||||
gSaveBlock1Ptr->pos.y = mapHeader->mapData->height;
|
||||
gSaveBlock1Ptr->pos.y = mapHeader->mapLayout->height;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -800,10 +800,10 @@ bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
case CONNECTION_NORTH:
|
||||
return sub_8088A0C(x, gMapHeader.mapData->width, mapHeader->mapData->width, connection->offset);
|
||||
return sub_8088A0C(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset);
|
||||
case CONNECTION_WEST:
|
||||
case CONNECTION_EAST:
|
||||
return sub_8088A0C(y, gMapHeader.mapData->height, mapHeader->mapData->height, connection->offset);
|
||||
return sub_8088A0C(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -841,10 +841,10 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y)
|
||||
{
|
||||
case CONNECTION_SOUTH:
|
||||
case CONNECTION_NORTH:
|
||||
return sub_8088A38(x - connection->offset, mapHeader->mapData->width);
|
||||
return sub_8088A38(x - connection->offset, mapHeader->mapLayout->width);
|
||||
case CONNECTION_WEST:
|
||||
case CONNECTION_EAST:
|
||||
return sub_8088A38(y - connection->offset, mapHeader->mapData->height);
|
||||
return sub_8088A38(y - connection->offset, mapHeader->mapLayout->height);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -868,9 +868,9 @@ struct MapConnection *sub_8088A8C(s16 x, s16 y)
|
||||
direction = connection->direction;
|
||||
if ((direction == CONNECTION_DIVE || direction == CONNECTION_EMERGE)
|
||||
|| (direction == CONNECTION_NORTH && y > 6)
|
||||
|| (direction == CONNECTION_SOUTH && y < gMapHeader.mapData->height + 7)
|
||||
|| (direction == CONNECTION_SOUTH && y < gMapHeader.mapLayout->height + 7)
|
||||
|| (direction == CONNECTION_WEST && x > 6)
|
||||
|| (direction == CONNECTION_EAST && x < gMapHeader.mapData->width + 7))
|
||||
|| (direction == CONNECTION_EAST && x < gMapHeader.mapLayout->width + 7))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -922,7 +922,7 @@ bool8 sub_8088BF0(u16* a0, u16 a1, u8 a2)
|
||||
{
|
||||
if (a2 == 0xFF)
|
||||
return FALSE;
|
||||
|
||||
|
||||
if (a2 == 0)
|
||||
a0 -= a1;
|
||||
else
|
||||
@@ -990,45 +990,45 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
|
||||
}
|
||||
}
|
||||
|
||||
void copy_map_tileset1_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset1_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram(mapData->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram(mapLayout->primaryTileset, 0x200, 0);
|
||||
}
|
||||
|
||||
void copy_map_tileset2_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset2_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
|
||||
void copy_map_tileset2_to_vram_2(struct MapData const *mapData)
|
||||
void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram2(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
|
||||
void apply_map_tileset1_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset1_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
apply_map_tileset_palette(mapData->primaryTileset, 0, 0xC0);
|
||||
apply_map_tileset_palette(mapLayout->primaryTileset, 0, 0xC0);
|
||||
}
|
||||
|
||||
void apply_map_tileset2_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset2_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
apply_map_tileset_palette(mapData->secondaryTileset, 0x60, 0xE0);
|
||||
apply_map_tileset_palette(mapLayout->secondaryTileset, 0x60, 0xE0);
|
||||
}
|
||||
|
||||
void copy_map_tileset1_tileset2_to_vram(struct MapData const *mapData)
|
||||
void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout)
|
||||
{
|
||||
if (mapData)
|
||||
if (mapLayout)
|
||||
{
|
||||
copy_tileset_patterns_to_vram2(mapData->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram2(mapData->secondaryTileset, 0x200, 0x200);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, 0x200, 0);
|
||||
copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, 0x200, 0x200);
|
||||
}
|
||||
}
|
||||
|
||||
void apply_map_tileset1_tileset2_palette(struct MapData const *mapData)
|
||||
void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout)
|
||||
{
|
||||
if (mapData)
|
||||
if (mapLayout)
|
||||
{
|
||||
apply_map_tileset1_palette(mapData);
|
||||
apply_map_tileset2_palette(mapData);
|
||||
apply_map_tileset1_palette(mapLayout);
|
||||
apply_map_tileset2_palette(mapLayout);
|
||||
}
|
||||
}
|
||||
|
||||
+676
-12
@@ -1,19 +1,683 @@
|
||||
|
||||
// Includes
|
||||
#include "global.h"
|
||||
#include "fldeff_cut.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "event_obj_lock.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "party_menu.h"
|
||||
#include "overworld.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
#include "malloc.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/abilities.h"
|
||||
|
||||
// Static type declarations
|
||||
extern bool8 CheckObjectGraphicsInFrontOfPlayer(u8);
|
||||
extern u8 oei_task_add(void);
|
||||
extern void ScriptUnfreezeEventObjects(void);
|
||||
extern bool8 IsMewPlayingHideAndSeek(void);
|
||||
|
||||
// Static RAM declarations
|
||||
extern struct MapPosition gPlayerFacingPosition;
|
||||
|
||||
IWRAM_DATA u8 gUnknown_03001100;
|
||||
IWRAM_DATA u8 gUnknown_03001101;
|
||||
IWRAM_DATA u8 gUnknown_03001102;
|
||||
IWRAM_DATA u32 fldeff_cut_unused_03001104;
|
||||
IWRAM_DATA u8 gUnknown_03001108[25];
|
||||
extern const u8 Route103_EventScript_290705[];
|
||||
extern const u8 FarawayIsland_Interior_EventScript_267EDB[];
|
||||
|
||||
// Static ROM declarations
|
||||
extern const u8 gFieldEffectPic_CutGrass[];
|
||||
extern const u16 gFieldEffectObjectPalette6[];
|
||||
|
||||
// .rodata
|
||||
// tileset 0 as first
|
||||
#define METATILE_ID_GRASS 0x1
|
||||
#define METATILE_ID_POKE_GRASS 0xD
|
||||
|
||||
// .text
|
||||
#define METATILE_ID_POKE_GRASS_TREE_UP 0x25
|
||||
#define METATILE_ID_GRASS_TREE_UP 0xE
|
||||
|
||||
#define METATILE_ID_POKE_GRASS_TREE_LEFT 0x1C6
|
||||
#define METATILE_ID_POKE_GRASS_TREE_RIGHT 0x1C7
|
||||
|
||||
#define METATILE_ID_GRASS_TREE_LEFT 0x1CE
|
||||
#define METATILE_ID_GRASS_TREE_RIGHT 0x1CF
|
||||
|
||||
#define METATILE_ID_POKE_LONG_GRASS 0x15
|
||||
|
||||
// tileset 6 as second
|
||||
#define METATILE_ID_POKE_STEP_LAVA_GRASS 0x206
|
||||
#define METATILE_ID_POKE_LAVA_GRASS 0x207
|
||||
#define METATILE_ID_LAVA_FIELD 0x271
|
||||
|
||||
// tileset 7 as second
|
||||
#define METATILE_ID_POKE_ASH_GRASS 0x20A
|
||||
#define METATILE_ID_POKE_STEP_ASH_GRASS 0x212
|
||||
#define METATILE_ID_ASH 0x218
|
||||
|
||||
// tileset 8 as second
|
||||
#define METATILE_ID_POKE_LONG_GRASS_START 0x208
|
||||
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS 0x279
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS 0x27A
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS 0x27B
|
||||
|
||||
#define METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS 0x281
|
||||
#define METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS 0x282
|
||||
#define METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS 0x283
|
||||
|
||||
// cut 'square' defines
|
||||
#define CUT_NORMAL_SIDE 3
|
||||
#define CUT_NORMAL_AREA CUT_NORMAL_SIDE * CUT_NORMAL_SIDE
|
||||
|
||||
#define CUT_HYPER_SIDE 5
|
||||
#define CUT_HYPER_AREA CUT_HYPER_SIDE * CUT_HYPER_SIDE
|
||||
|
||||
#define CUT_SPRITE_ARRAY_COUNT 8
|
||||
|
||||
struct HyperCutterUnk
|
||||
{
|
||||
s8 x;
|
||||
s8 y;
|
||||
u8 unk2[2];
|
||||
};
|
||||
|
||||
// this file's functions
|
||||
static void FieldCallback_CutTree(void);
|
||||
static void FieldCallback_CutGrass(void);
|
||||
static void StartCutTreeFieldEffect(void);
|
||||
static void StartCutGrassFieldEffect(void);
|
||||
static void SetCutGrassMetatile(s16, s16);
|
||||
static void SetCutGrassMetatiles(s16, s16);
|
||||
static void CutGrassSpriteCallback1(struct Sprite *);
|
||||
static void CutGrassSpriteCallback2(struct Sprite *);
|
||||
static void CutGrassSpriteCallbackEnd(struct Sprite *);
|
||||
static void HandleLongGrassOnHyper(u8, s16, s16);
|
||||
|
||||
// IWRAM variables
|
||||
static IWRAM_DATA u8 sCutSquareSide;
|
||||
static IWRAM_DATA u8 sTileCountFromPlayer_X;
|
||||
static IWRAM_DATA u8 sTileCountFromPlayer_Y;
|
||||
static IWRAM_DATA u32 sUnused;
|
||||
static IWRAM_DATA bool8 sHyperCutTiles[CUT_HYPER_AREA];
|
||||
|
||||
// EWRAM variables
|
||||
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
||||
|
||||
// const rom data
|
||||
static const struct HyperCutterUnk sHyperCutStruct[] =
|
||||
{
|
||||
{-2, -2, {1}},
|
||||
{-1, -2, {1}},
|
||||
{0, -2, {2}},
|
||||
{1, -2, {3}},
|
||||
{2, -2, {3}},
|
||||
{-2, -1, {1}},
|
||||
{2, -1, {3}},
|
||||
{-2, 0, {4}},
|
||||
{2, 0, {6}},
|
||||
{-2, 1, {7}},
|
||||
{2, 1, {9}},
|
||||
{-2, 2, {7}},
|
||||
{-1, 2, {7}},
|
||||
{0, 2, {8}},
|
||||
{1, 2, {9}},
|
||||
{2, 2, {9}},
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_CutGrass =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 0,
|
||||
.tileNum = 1,
|
||||
.priority = 1,
|
||||
.paletteNum = 1,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_CutGrass[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 30),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_CutGrass[] =
|
||||
{
|
||||
sSpriteAnim_CutGrass,
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sSpriteImageTable_CutGrass[] =
|
||||
{
|
||||
{gFieldEffectPic_CutGrass, 0x20},
|
||||
};
|
||||
|
||||
const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_CutGrass =
|
||||
{
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0x1000,
|
||||
.oam = &sOamData_CutGrass,
|
||||
.anims = sSpriteAnimTable_CutGrass,
|
||||
.images = sSpriteImageTable_CutGrass,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = CutGrassSpriteCallback1,
|
||||
};
|
||||
|
||||
// code
|
||||
bool8 SetUpFieldMove_Cut(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 i, j;
|
||||
u8 tileBehavior;
|
||||
u8 userAbility;
|
||||
bool8 cutTiles[CUT_NORMAL_AREA];
|
||||
bool8 ret;
|
||||
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_CUTTABLE_TREE) == TRUE)
|
||||
{
|
||||
// Standing in front of cuttable tree.
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutTree;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
userAbility = GetMonAbility(&gPlayerParty[GetCursorSelectionMonId()]);
|
||||
if (userAbility == ABILITY_HYPER_CUTTER)
|
||||
{
|
||||
sCutSquareSide = CUT_HYPER_SIDE;
|
||||
sTileCountFromPlayer_X = 2;
|
||||
sTileCountFromPlayer_Y = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
sCutSquareSide = CUT_NORMAL_SIDE;
|
||||
sTileCountFromPlayer_X = 1;
|
||||
sTileCountFromPlayer_Y = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < CUT_NORMAL_AREA; i++)
|
||||
cutTiles[i] = FALSE;
|
||||
for (i = 0; i < CUT_HYPER_AREA; i++)
|
||||
sHyperCutTiles[i] = FALSE;
|
||||
|
||||
ret = FALSE;
|
||||
|
||||
for (i = 0; i < CUT_NORMAL_SIDE; i++)
|
||||
{
|
||||
y = i - 1 + gPlayerFacingPosition.y;
|
||||
for (j = 0; j < CUT_NORMAL_SIDE; j++)
|
||||
{
|
||||
x = j - 1 + gPlayerFacingPosition.x;
|
||||
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||
{
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|
||||
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
|
||||
{
|
||||
// Standing in front of grass.
|
||||
sHyperCutTiles[6 + (i * 5) + j] = TRUE;
|
||||
ret = TRUE;
|
||||
}
|
||||
if (MapGridIsImpassableAt(x, y) == TRUE)
|
||||
{
|
||||
cutTiles[i * 3 + j] = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
cutTiles[i * 3 + j] = TRUE;
|
||||
if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
||||
sHyperCutTiles[6 + (i * 5) + j] = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cutTiles[i * 3 + j] = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (userAbility != ABILITY_HYPER_CUTTER)
|
||||
{
|
||||
if (ret == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bool8 tileCuttable;
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
x = gPlayerFacingPosition.x + sHyperCutStruct[i].x;
|
||||
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
|
||||
tileCuttable = TRUE;
|
||||
|
||||
j = 0;
|
||||
do
|
||||
{
|
||||
if (sHyperCutStruct[i].unk2[j] == 0)
|
||||
break;
|
||||
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
|
||||
{
|
||||
tileCuttable = FALSE;
|
||||
break;
|
||||
}
|
||||
} while (++j <= 1);
|
||||
|
||||
if (tileCuttable == TRUE)
|
||||
{
|
||||
if (MapGridGetZCoordAt(x, y) == gPlayerFacingPosition.height)
|
||||
{
|
||||
u8 tileArrayId = ((sHyperCutStruct[i].y * 5) + 12) + (sHyperCutStruct[i].x);
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|
||||
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
sHyperCutTiles[tileArrayId] = TRUE;
|
||||
ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
|
||||
sHyperCutTiles[tileArrayId] = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
static void FieldCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnGrass(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
|
||||
gTasks[taskId].data[8] = (u32)StartCutGrassFieldEffect >> 16;
|
||||
gTasks[taskId].data[9] = (u32)StartCutGrassFieldEffect;
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FieldCallback_CutTree(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(Route103_EventScript_290705);
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnTree(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
|
||||
gTasks[taskId].data[8] = (u32)StartCutTreeFieldEffect >> 16;
|
||||
gTasks[taskId].data[9] = (u32)StartCutTreeFieldEffect;
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void StartCutGrassFieldEffect(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
|
||||
FieldEffectStart(FLDEFF_CUT_GRASS);
|
||||
}
|
||||
|
||||
bool8 FldEff_CutGrass(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 i = 0;
|
||||
|
||||
PlaySE(SE_W015);
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
for (i = 0; i < CUT_HYPER_AREA; i++)
|
||||
{
|
||||
if (sHyperCutTiles[i] == TRUE)
|
||||
{
|
||||
s8 xAdd = (i % 5) - 2;
|
||||
s8 yAdd = (i / 5) - 2;
|
||||
|
||||
x = xAdd + gPlayerFacingPosition.x;
|
||||
y = yAdd + gPlayerFacingPosition.y;
|
||||
|
||||
SetCutGrassMetatile(x, y);
|
||||
sub_808E75C(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
SetCutGrassMetatiles(gPlayerFacingPosition.x - sTileCountFromPlayer_X, gPlayerFacingPosition.y - (1 + sTileCountFromPlayer_Y));
|
||||
DrawWholeMapView();
|
||||
sCutGrassSpriteArrayPtr = AllocZeroed(CUT_SPRITE_ARRAY_COUNT);
|
||||
|
||||
// populate sprite ID array
|
||||
for (i = 0; i < CUT_SPRITE_ARRAY_COUNT; i++)
|
||||
{
|
||||
sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_CutGrass,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
|
||||
gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = 32 * i;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// set map grid metatile depending on x, y
|
||||
static void SetCutGrassMetatile(s16 x, s16 y)
|
||||
{
|
||||
s32 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
switch (metatileId)
|
||||
{
|
||||
case METATILE_ID_POKE_LONG_GRASS_START:
|
||||
case METATILE_ID_POKE_LONG_GRASS:
|
||||
case METATILE_ID_POKE_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS);
|
||||
break;
|
||||
case METATILE_ID_POKE_GRASS_TREE_LEFT:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_LEFT);
|
||||
break;
|
||||
case METATILE_ID_POKE_GRASS_TREE_RIGHT:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_RIGHT);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_POKE_STEP_LAVA_GRASS:
|
||||
case METATILE_ID_POKE_LAVA_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_LAVA_FIELD);
|
||||
break;
|
||||
case METATILE_ID_POKE_STEP_ASH_GRASS:
|
||||
case METATILE_ID_POKE_ASH_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_ASH);
|
||||
break;
|
||||
case METATILE_ID_POKE_GRASS_TREE_UP:
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_ID_GRASS_TREE_UP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
LONG_GRASS_NONE,
|
||||
LONG_GRASS_FIELD,
|
||||
LONG_GRASS_BASE_LEFT,
|
||||
LONG_GRASS_BASE_CENTER,
|
||||
LONG_GRASS_BASE_RIGHT
|
||||
};
|
||||
|
||||
static u8 GetLongGrassCaseAt(s16 x, s16 y)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
if (metatileId == METATILE_ID_GRASS)
|
||||
return LONG_GRASS_FIELD;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_LEFT;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_CENTER;
|
||||
else if (metatileId == METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS)
|
||||
return LONG_GRASS_BASE_RIGHT;
|
||||
else
|
||||
return LONG_GRASS_NONE;
|
||||
}
|
||||
|
||||
static void SetCutGrassMetatiles(s16 x, s16 y)
|
||||
{
|
||||
s16 i;
|
||||
s16 lowerY = y + sCutSquareSide;
|
||||
|
||||
for (i = 0; i < sCutSquareSide; i++)
|
||||
{
|
||||
s16 currentX = x + i;
|
||||
if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetLongGrassCaseAt(currentX, y + 1))
|
||||
{
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID_GRASS)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
}
|
||||
|
||||
if (sCutSquareSide == CUT_HYPER_SIDE)
|
||||
{
|
||||
HandleLongGrassOnHyper(0, x, y);
|
||||
HandleLongGrassOnHyper(1, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
static void HandleLongGrassOnHyper(u8 caseId, s16 x, s16 y)
|
||||
{
|
||||
s16 newX;
|
||||
bool8 arr[3];
|
||||
|
||||
if (caseId == 0)
|
||||
{
|
||||
arr[0] = sHyperCutTiles[5];
|
||||
arr[1] = sHyperCutTiles[10];
|
||||
arr[2] = sHyperCutTiles[15];
|
||||
newX = x;
|
||||
}
|
||||
else if (caseId == 1)
|
||||
{
|
||||
arr[0] = sHyperCutTiles[9];
|
||||
arr[1] = sHyperCutTiles[14];
|
||||
arr[2] = sHyperCutTiles[19];
|
||||
newX = x + 4;
|
||||
}
|
||||
else // invalid case
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (arr[0] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
if (arr[1] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetLongGrassCaseAt(newX, y + 3))
|
||||
{
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_POKE_LONG_GRASS_START)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS)
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
}
|
||||
if (arr[2] == TRUE)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID_POKE_LONG_GRASS)
|
||||
{
|
||||
switch (GetLongGrassCaseAt(newX, y + 4))
|
||||
{
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void CutGrassSpriteCallback1(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = 8;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = CutGrassSpriteCallback2;
|
||||
}
|
||||
|
||||
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->data[2] = (sprite->data[2] + 8) & 0xFF;
|
||||
sprite->data[0] += 1 + (sprite->data[3] >> 2); // right shift by 2 is dividing by 4
|
||||
sprite->data[3]++;
|
||||
|
||||
if (sprite->data[1] != 28)
|
||||
sprite->data[1]++;
|
||||
else
|
||||
sprite->callback = CutGrassSpriteCallbackEnd; // done rotating the grass, execute clean up function
|
||||
}
|
||||
|
||||
static void CutGrassSpriteCallbackEnd(struct Sprite *sprite)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 1; i < CUT_SPRITE_ARRAY_COUNT; i++)
|
||||
DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]);
|
||||
|
||||
FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS);
|
||||
FREE_AND_SET_NULL(sCutGrassSpriteArrayPtr);
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
|
||||
if (IsMewPlayingHideAndSeek() == TRUE)
|
||||
ScriptContext1_SetupScript(FarawayIsland_Interior_EventScript_267EDB);
|
||||
}
|
||||
|
||||
void sub_80D423C(s16 x, s16 y)
|
||||
{
|
||||
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsLongGrass_Duplicate(metatileBehavior))
|
||||
{
|
||||
switch (GetLongGrassCaseAt(x, y + 1))
|
||||
{
|
||||
case LONG_GRASS_FIELD:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_POKE_LONG_GRASS_START);
|
||||
break;
|
||||
case LONG_GRASS_BASE_LEFT:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_CENTER:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS);
|
||||
break;
|
||||
case LONG_GRASS_BASE_RIGHT:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80D42B8(s16 x, s16 y)
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == METATILE_ID_GRASS)
|
||||
{
|
||||
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y + 1);
|
||||
if (MetatileBehavior_IsLongGrassSouthEdge(metatileBehavior))
|
||||
{
|
||||
s32 metatileId = MapGridGetMetatileIdAt(x, y + 1);
|
||||
switch (metatileId)
|
||||
{
|
||||
case METATILE_ID_POKE_LONG_GRASS_START:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_LEFT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_LEFT_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_CENTER_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_CENTER_LONG_GRASS);
|
||||
break;
|
||||
case METATILE_ID_SECRET_BASE_RIGHT_POKE_LONG_GRASS:
|
||||
MapGridSetMetatileIdAt(x, y + 1, METATILE_ID_SECRET_BASE_RIGHT_LONG_GRASS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void StartCutTreeFieldEffect(void)
|
||||
{
|
||||
PlaySE(SE_W015);
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
+4
-4
@@ -78,14 +78,14 @@ bool8 SetUpFieldMove_Flash(void)
|
||||
if (ShouldDoBrailleFlyEffect())
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = sub_8179918;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = sub_8179918;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
|
||||
{
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = hm2_flash;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = hm2_flash;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -4,7 +4,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "malloc.h"
|
||||
#include "random.h"
|
||||
#include "roulette_util.h"
|
||||
@@ -179,17 +179,17 @@ void sub_81BE7F4(void)
|
||||
|
||||
static void sub_81BE808(u8 taskId)
|
||||
{
|
||||
u8 mapObjectIdBuffer;
|
||||
struct MapObject *fieldMapObject;
|
||||
struct MapObject *playerAvatarMapObject;
|
||||
u8 eventObjectIdBuffer;
|
||||
struct EventObject *fieldEventObject;
|
||||
struct EventObject *playerAvatarEventObject;
|
||||
|
||||
TryGetFieldObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectIdBuffer);
|
||||
fieldMapObject = &(gMapObjects[mapObjectIdBuffer]);
|
||||
gSprites[fieldMapObject->spriteId].pos2.y += 4;
|
||||
playerAvatarMapObject = &(gMapObjects[gPlayerAvatar.mapObjectId]);
|
||||
TryGetEventObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &eventObjectIdBuffer);
|
||||
fieldEventObject = &(gEventObjects[eventObjectIdBuffer]);
|
||||
gSprites[fieldEventObject->spriteId].pos2.y += 4;
|
||||
playerAvatarEventObject = &(gEventObjects[gPlayerAvatar.eventObjectId]);
|
||||
|
||||
if((gSprites[fieldMapObject->spriteId].pos1.y + gSprites[fieldMapObject->spriteId].pos2.y) >=
|
||||
(gSprites[playerAvatarMapObject->spriteId].pos1.y + gSprites[playerAvatarMapObject->spriteId].pos2.y))
|
||||
if((gSprites[fieldEventObject->spriteId].pos1.y + gSprites[fieldEventObject->spriteId].pos2.y) >=
|
||||
(gSprites[playerAvatarEventObject->spriteId].pos1.y + gSprites[playerAvatarEventObject->spriteId].pos2.y))
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "rom6.h"
|
||||
#include "script.h"
|
||||
#include "task.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
// static functions
|
||||
static void FldEff_UseStrength(void);
|
||||
@@ -14,11 +15,11 @@ static void sub_8145E74(void);
|
||||
// text
|
||||
bool8 SetUpFieldMove_Strength(void)
|
||||
{
|
||||
if (npc_before_player_of_type(87) == TRUE)
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(EVENT_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = FldEff_UseStrength;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FldEff_UseStrength;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
@@ -24,8 +24,8 @@ void sub_81BE72C(void);
|
||||
|
||||
bool8 SetUpFieldMove_SweetScent(void)
|
||||
{
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = hm2_sweet_scent;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = hm2_sweet_scent;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ bool8 SetUpFieldMove_Teleport(void)
|
||||
{
|
||||
if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
|
||||
{
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = hm_teleport_run_dp02scr;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = hm_teleport_run_dp02scr;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "bg.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "fieldmap.h"
|
||||
#include "global.fieldmap.h"
|
||||
#include "gpu_regs.h"
|
||||
|
||||
+14
-14
@@ -33,12 +33,12 @@ struct HallofFameMon
|
||||
u32 personality;
|
||||
u16 species:9;
|
||||
u16 lvl:7;
|
||||
u8 nick[10];
|
||||
u8 nick[POKEMON_NAME_LENGTH];
|
||||
};
|
||||
|
||||
struct HallofFameTeam
|
||||
{
|
||||
struct HallofFameMon mon[6];
|
||||
struct HallofFameMon mon[PARTY_SIZE];
|
||||
};
|
||||
|
||||
struct HofGfx
|
||||
@@ -49,11 +49,11 @@ struct HofGfx
|
||||
u8 tilemap2[0x1000];
|
||||
};
|
||||
|
||||
static EWRAM_DATA u32 sUnknown_0203BCD4 = 0;
|
||||
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
|
||||
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
||||
|
||||
extern bool8 gHasHallOfFameRecords;
|
||||
extern u32 gUnknown_0203BCD4;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern MainCallback gGameContinueCallback;
|
||||
extern u32 gDamagedSaveSectors;
|
||||
@@ -89,7 +89,7 @@ extern void sub_8197434(u8, u8);
|
||||
extern u16 sub_818D97C(u8 playerGender, u8);
|
||||
extern u16 sub_818D8AC(u16, u8, s16, s16, u8, u16);
|
||||
extern const void* stdpal_get(u8);
|
||||
extern void sub_80987D4(u8, u8, u16, u8);
|
||||
extern void LoadWindowGfx(u8, u8, u16, u8);
|
||||
extern u16 sub_818D820(u16);
|
||||
extern u16 sub_818D8F0(u16);
|
||||
extern u16 sub_818D7D8(u16 species, u32 trainerId, u32 personality, u8 arg3, s16 sp0, s16 sp1, u8 sp2, u16 sp3);
|
||||
@@ -414,7 +414,7 @@ static bool8 InitHallOfFameScreen(void)
|
||||
if (!sub_8175024())
|
||||
{
|
||||
SetVBlankCallback(VBlankCB_HallOfFame);
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
@@ -490,7 +490,7 @@ static void Task_Hof_InitMonData(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
gUnknown_0203BCD4 = 0;
|
||||
sUnknown_0203BCD4 = 0;
|
||||
gTasks[taskId].tDisplayedMonId = 0;
|
||||
gTasks[taskId].tPlayerSpriteID = 0xFF;
|
||||
|
||||
@@ -648,11 +648,11 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum);
|
||||
sUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum);
|
||||
if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
|
||||
{
|
||||
gTasks[taskId].tDisplayedMonId++;
|
||||
BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0);
|
||||
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, 0x63B0);
|
||||
gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1;
|
||||
gTasks[taskId].func = Task_Hof_DisplayMon;
|
||||
}
|
||||
@@ -696,7 +696,7 @@ static void sub_8173DC0(u8 taskId)
|
||||
if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
|
||||
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
|
||||
}
|
||||
BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0);
|
||||
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, 0x63B0);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
CopyWindowToVram(0, 3);
|
||||
gTasks[taskId].tFrameCount = 7;
|
||||
@@ -725,7 +725,7 @@ static void sub_8173EE4(u8 taskId)
|
||||
ShowBg(3);
|
||||
gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF);
|
||||
AddWindow(&sHof_WindowTemplate);
|
||||
sub_80987D4(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0);
|
||||
LoadWindowGfx(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0);
|
||||
LoadPalette(stdpal_get(1), 0xE0, 0x20);
|
||||
gTasks[taskId].tFrameCount = 120;
|
||||
gTasks[taskId].func = Task_Hof_WaitAndPrintPlayerInfo;
|
||||
@@ -764,7 +764,7 @@ static void Task_Hof_ExitOnKeyPressed(u8 taskId)
|
||||
static void Task_Hof_HandlePaletteOnExit(u8 taskId)
|
||||
{
|
||||
CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
|
||||
BeginNormalPaletteFade(-1, 8, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_Hof_HandleExit;
|
||||
}
|
||||
|
||||
@@ -923,7 +923,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
|
||||
savedTeams++;
|
||||
|
||||
currMon = &savedTeams->mon[0];
|
||||
gUnknown_0203BCD4 = 0;
|
||||
sUnknown_0203BCD4 = 0;
|
||||
gTasks[taskId].tCurrMonId = 0;
|
||||
gTasks[taskId].tMonNo = 0;
|
||||
|
||||
@@ -998,8 +998,8 @@ static void Task_HofPC_PrintMonInfo(u8 taskId)
|
||||
|
||||
currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrMonId);
|
||||
gSprites[currMonID].oam.priority = 0;
|
||||
gUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
|
||||
BlendPalettesUnfaded(gUnknown_0203BCD4, 0xC, 0x63B0);
|
||||
sUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
|
||||
BlendPalettesUnfaded(sUnknown_0203BCD4, 0xC, 0x63B0);
|
||||
|
||||
currMon = &savedTeams->mon[gTasks[taskId].tCurrMonId];
|
||||
if (currMon->species != SPECIES_EGG)
|
||||
|
||||
+9
-9
@@ -845,8 +845,8 @@ u16 CountTotalItemQuantityInBag(u16 itemId)
|
||||
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -867,8 +867,8 @@ static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count)
|
||||
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count)
|
||||
{
|
||||
u8 i;
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
|
||||
{
|
||||
@@ -890,8 +890,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16));
|
||||
u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8));
|
||||
@@ -963,8 +963,8 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
u16 *items = gSaveBlock2Ptr->pyramidBag.itemId[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->pyramidBag.quantity[gSaveBlock2Ptr->frontierChosenLvl];
|
||||
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.chosenLvl];
|
||||
|
||||
i = gUnknown_0203CF30[3] + gUnknown_0203CF30[4];
|
||||
if (items[i] == itemId && quantities[i] >= count)
|
||||
@@ -1024,7 +1024,7 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
|
||||
|
||||
static u16 SanitizeItemId(u16 itemId)
|
||||
{
|
||||
if (itemId >= ITEM_LAST_ID + 1)
|
||||
if (itemId >= ITEMS_COUNT)
|
||||
return ITEM_NONE;
|
||||
else
|
||||
return itemId;
|
||||
|
||||
+1
-1
@@ -162,7 +162,7 @@ const void *GetItemIconPicOrPalette(u16 itemId, u8 which)
|
||||
{
|
||||
if (itemId == 0xFFFF)
|
||||
itemId = ITEM_FIELD_ARROW;
|
||||
else if (itemId > ITEM_LAST_ID)
|
||||
else if (itemId >= ITEMS_COUNT)
|
||||
itemId = 0;
|
||||
|
||||
return gItemIconTable[itemId][which];
|
||||
|
||||
+13
-13
@@ -9,7 +9,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "decompress.h"
|
||||
#include "event_data.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_specials.h"
|
||||
#include "graphics.h"
|
||||
@@ -209,7 +209,7 @@ const struct YesNoFuncTable gUnknown_08614084 = {BagMenuActuallyToss, BagMenuCan
|
||||
|
||||
const struct YesNoFuncTable gUnknown_0861408C = {sub_81AD84C, sub_81AD6FC};
|
||||
|
||||
const struct ArrowStruct gUnknown_08614094 = {0, 0x1C, 16, 1, 100, 16, -1, -1, 0x6F, 0x6F, 0};
|
||||
const struct ScrollArrowsTemplate gUnknown_08614094 = {SCROLL_ARROW_LEFT, 0x1C, 16, SCROLL_ARROW_RIGHT, 100, 16, -1, -1, 0x6F, 0x6F, 0};
|
||||
|
||||
const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp");
|
||||
|
||||
@@ -488,7 +488,7 @@ bool8 setup_bag_menu(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 20:
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -733,7 +733,7 @@ void bag_menu_print_cursor(u8 a, u8 b)
|
||||
void bag_menu_add_pocket_scroll_arrow_indicators_maybe(void)
|
||||
{
|
||||
if (gUnknown_0203CE54->unk81E == 0xFF)
|
||||
gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParametrized(2, 0xAC, 12, 0x94, gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->unk82E[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
|
||||
gUnknown_0203CE54->unk81E = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xAC, 12, 0x94, gUnknown_0203CE54->unk829[gUnknown_0203CE58.pocket] - gUnknown_0203CE54->unk82E[gUnknown_0203CE58.pocket], 0x6E, 0x6E, &gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket]);
|
||||
}
|
||||
|
||||
void sub_81AB824(void)
|
||||
@@ -771,7 +771,7 @@ void free_bag_item_list_buffers(void)
|
||||
|
||||
void unknown_ItemMenu_Confirm(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
gTasks[taskId].func = task_close_bag_menu_2;
|
||||
}
|
||||
|
||||
@@ -1114,7 +1114,7 @@ void bag_menu_swap_items(u8 taskId)
|
||||
{
|
||||
s16* data = gTasks[taskId].data;
|
||||
|
||||
sub_81AF15C(data[0], 16, 1);
|
||||
ListMenuSetUnkIndicatorsStructField(data[0], 16, 1);
|
||||
data[1] = gUnknown_0203CE58.scrollPosition[gUnknown_0203CE58.pocket] + gUnknown_0203CE58.cursorPosition[gUnknown_0203CE58.pocket];
|
||||
gUnknown_0203CE54->unk81A = data[1];
|
||||
CopyItemName(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, data[1]), gStringVar1);
|
||||
@@ -1716,7 +1716,7 @@ bool8 UseRegisteredKeyItemOnField(void)
|
||||
if (CheckBagHasItem(gSaveBlock1Ptr->registeredItem, 1) == TRUE)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeMapObjects();
|
||||
FreezeEventObjects();
|
||||
sub_808B864();
|
||||
sub_808BCF4();
|
||||
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
|
||||
@@ -2078,7 +2078,7 @@ void bag_menu_print_pocket_names(u8 *pocketName1, u8 *pocketName2)
|
||||
offset = GetStringCenterAlignXOffset(1, pocketName2, 0x40);
|
||||
bag_menu_print(windowId, 1, pocketName2, offset + 0x40, 1, 0, 0, -1, 1);
|
||||
}
|
||||
CpuCopy32((u8*)GetWindowAttribute(windowId, 7), gUnknown_0203CE54->unk844, 0x400);
|
||||
CpuCopy32((u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA), gUnknown_0203CE54->unk844, 0x400);
|
||||
RemoveWindow(windowId);
|
||||
}
|
||||
|
||||
@@ -2090,7 +2090,7 @@ void bag_menu_copy_pocket_name_to_window(u32 a)
|
||||
if (a > 8)
|
||||
a = 8;
|
||||
r4 = &gUnknown_0203CE54->unk844;
|
||||
windowAttribute = (u8*)GetWindowAttribute(2, 7);
|
||||
windowAttribute = (u8*)GetWindowAttribute(2, WINDOW_TILE_DATA);
|
||||
CpuCopy32(r4[0][a], windowAttribute, 0x100);
|
||||
b = a + 16;
|
||||
CpuCopy32(r4[0][b], windowAttribute + 0x100, 0x100);
|
||||
@@ -2103,8 +2103,8 @@ void setup_bag_menu_textboxes(void)
|
||||
|
||||
InitWindows(gUnknown_08614174);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 1, -32);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 10, -48);
|
||||
LoadUserWindowBorderGfx(0, 1, -32);
|
||||
LoadMessageBoxGfx(0, 10, -48);
|
||||
sub_819A2BC(-64, 1);
|
||||
LoadPalette(&gUnknown_0860F074, 0xF0, 0x20);
|
||||
for (i = 0; i < 3; i++)
|
||||
@@ -2116,9 +2116,9 @@ void setup_bag_menu_textboxes(void)
|
||||
schedule_bg_copy_tilemap_to_vram(1);
|
||||
}
|
||||
|
||||
void bag_menu_print(u8 a, u8 b, const u8 *str, u8 c, u8 d, u8 e, u8 f, u8 g, u8 h)
|
||||
void bag_menu_print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 h)
|
||||
{
|
||||
AddTextPrinterParameterized2(a, b, c, d, e, f, gUnknown_08614164[h], g, str);
|
||||
AddTextPrinterParameterized2(windowId, fontId, left, top, letterSpacing, lineSpacing, gUnknown_08614164[h], speed, str);
|
||||
}
|
||||
|
||||
u8 sub_81AE124(u8 a)
|
||||
|
||||
+22
-22
@@ -5,6 +5,7 @@
|
||||
#include "berry.h"
|
||||
#include "bike.h"
|
||||
#include "coins.h"
|
||||
#include "constants/bg_event_constants.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -12,12 +13,11 @@
|
||||
#include "data2.h"
|
||||
#include "event_data.h"
|
||||
#include "fieldmap.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_screen.h"
|
||||
#include "field_weather.h"
|
||||
#include "item.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "mail.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "overworld.h"
|
||||
@@ -40,7 +40,7 @@ extern void sub_81C5B14(u8 taskId);
|
||||
extern u8 gText_DadsAdvice[];
|
||||
extern u8 gText_CantDismountBike[];
|
||||
extern void sub_8197434(u8 a, u8 b);
|
||||
extern void sub_80984F4(void);
|
||||
extern void ScriptUnfreezeEventObjects(void);
|
||||
extern void ItemUseOutOfBattle_TMHM(u8 a);
|
||||
extern void ItemUseOutOfBattle_EvolutionStone(u8 b);
|
||||
extern void bag_menu_mail_related(void);
|
||||
@@ -198,7 +198,7 @@ void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId)
|
||||
{
|
||||
sub_8197434(0, 1);
|
||||
DestroyTask(taskId);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId)
|
||||
GetOnOffBike(2);
|
||||
else
|
||||
GetOnOffBike(4);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -338,7 +338,7 @@ void sub_80FD504(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
playerDir = player_get_direction_lower_nybble();
|
||||
playerDir = GetPlayerFacingDirection();
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (playerDir == gUnknown_085920E4[i])
|
||||
@@ -359,7 +359,7 @@ void sub_80FD504(u8 taskId)
|
||||
void sub_80FD5CC(u8 taskId)
|
||||
{
|
||||
sub_8197434(0, 1);
|
||||
sub_80984F4();
|
||||
ScriptUnfreezeEventObjects();
|
||||
ScriptContext2_Disable();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -372,7 +372,7 @@ bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId)
|
||||
gTasks[taskId].data[2] = FALSE;
|
||||
for (i = 0; i < events->bgEventCount; i++)
|
||||
{
|
||||
if (events->bgEvents[i].kind == 7 && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 0x1F4))
|
||||
if (events->bgEvents[i].kind == BG_EVENT_HIDDEN_ITEM && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 0x1F4))
|
||||
{
|
||||
distanceX = (u16)events->bgEvents[i].x + 7;
|
||||
newDistanceX = distanceX - x;
|
||||
@@ -399,7 +399,7 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
|
||||
|
||||
for (i = 0; i < bgEventCount; i++)
|
||||
{
|
||||
if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
|
||||
if (bgEvent[i].kind == BG_EVENT_HIDDEN_ITEM && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
|
||||
{
|
||||
if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 0x1F4))
|
||||
return TRUE;
|
||||
@@ -425,23 +425,23 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
|
||||
case 2:
|
||||
localOffset = connection->offset + 7;
|
||||
localX = x - localOffset;
|
||||
localLength = mapHeader->mapData->height - 7;
|
||||
localLength = mapHeader->mapLayout->height - 7;
|
||||
localY = localLength + y; // additions are reversed for some reason
|
||||
break;
|
||||
case 1:
|
||||
localOffset = connection->offset + 7;
|
||||
localX = x - localOffset;
|
||||
localLength = gMapHeader.mapData->height + 7;
|
||||
localLength = gMapHeader.mapLayout->height + 7;
|
||||
localY = y - localLength;
|
||||
break;
|
||||
case 3:
|
||||
localLength = mapHeader->mapData->width - 7;
|
||||
localLength = mapHeader->mapLayout->width - 7;
|
||||
localX = localLength + x; // additions are reversed for some reason
|
||||
localOffset = connection->offset + 7;
|
||||
localY = y - localOffset;
|
||||
break;
|
||||
case 4:
|
||||
localLength = gMapHeader.mapData->width + 7;
|
||||
localLength = gMapHeader.mapLayout->width + 7;
|
||||
localX = x - localLength;
|
||||
localOffset = connection->offset + 7;
|
||||
localY = y - localOffset;
|
||||
@@ -456,8 +456,8 @@ void sub_80FD7C8(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
s16 curX, curY;
|
||||
s16 width = gMapHeader.mapData->width + 7;
|
||||
s16 height = gMapHeader.mapData->height + 7;
|
||||
s16 width = gMapHeader.mapLayout->width + 7;
|
||||
s16 height = gMapHeader.mapLayout->height + 7;
|
||||
|
||||
s16 var1 = 7;
|
||||
s16 var2 = 7;
|
||||
@@ -580,15 +580,15 @@ u8 sub_80FD9B0(s16 itemX, s16 itemY)
|
||||
|
||||
void sub_80FDA24(u8 direction)
|
||||
{
|
||||
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
FieldObjectClearAnim(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
npc_sync_anim_pause_bits(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
UnfreezeEventObject(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
PlayerTurnInPlace(direction);
|
||||
}
|
||||
|
||||
void sub_80FDA94(u8 taskId)
|
||||
{
|
||||
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
|
||||
DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC);
|
||||
}
|
||||
|
||||
@@ -596,7 +596,7 @@ void sub_80FDADC(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|
||||
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|
||||
|| data[2] == FALSE)
|
||||
{
|
||||
sub_80FDA24(gUnknown_085920E4[data[5]]);
|
||||
@@ -728,8 +728,8 @@ bool8 sub_80FDE2C(void)
|
||||
u8 objId;
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||
z = PlayerGetZCoord();
|
||||
objId = GetFieldObjectIdByXYZ(x, y, z);
|
||||
if (objId == 16 || gMapObjects[objId].graphicsId != 0xE4)
|
||||
objId = GetEventObjectIdByXYZ(x, y, z);
|
||||
if (objId == 16 || gEventObjects[objId].graphicsId != 0xE4)
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
+2
-2
@@ -219,7 +219,7 @@ const u8 gUnknown_082ED224[] = {
|
||||
|
||||
// .text
|
||||
|
||||
bool8 sub_80093CC(void)
|
||||
bool8 IsWirelessAdapterConnected(void)
|
||||
{
|
||||
sub_800B488();
|
||||
sub_800E700();
|
||||
@@ -444,7 +444,7 @@ static void LinkTestProcessKeyInput(void)
|
||||
}
|
||||
if (gMain.newKeys & L_BUTTON)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 2);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 2);
|
||||
}
|
||||
if (gMain.newKeys & START_BUTTON)
|
||||
{
|
||||
|
||||
+309
-302
File diff suppressed because it is too large
Load Diff
+8
-8
@@ -180,32 +180,32 @@ void LoadPlayerParty(void)
|
||||
gPlayerParty[i] = gSaveBlock1Ptr->playerParty[i];
|
||||
}
|
||||
|
||||
void SaveMapObjects(void)
|
||||
void SaveEventObjects(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
gSaveBlock1Ptr->mapObjects[i] = gMapObjects[i];
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
|
||||
gSaveBlock1Ptr->eventObjects[i] = gEventObjects[i];
|
||||
}
|
||||
|
||||
void LoadMapObjects(void)
|
||||
void LoadEventObjects(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
gMapObjects[i] = gSaveBlock1Ptr->mapObjects[i];
|
||||
for (i = 0; i < EVENT_OBJECTS_COUNT; i++)
|
||||
gEventObjects[i] = gSaveBlock1Ptr->eventObjects[i];
|
||||
}
|
||||
|
||||
void SaveSerializedGame(void)
|
||||
{
|
||||
SavePlayerParty();
|
||||
SaveMapObjects();
|
||||
SaveEventObjects();
|
||||
}
|
||||
|
||||
void LoadSerializedGame(void)
|
||||
{
|
||||
LoadPlayerParty();
|
||||
LoadMapObjects();
|
||||
LoadEventObjects();
|
||||
}
|
||||
|
||||
void LoadPlayerBag(void)
|
||||
|
||||
+2
-2
@@ -417,7 +417,7 @@ static bool8 MailReadBuildGraphics(void)
|
||||
ShowBg(0);
|
||||
ShowBg(1);
|
||||
ShowBg(2);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
sMailRead->callback2 = CB2_WaitForPaletteExitOnKeyPress;
|
||||
return TRUE;
|
||||
@@ -526,7 +526,7 @@ static void CB2_ExitOnKeyPress(void)
|
||||
{
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
sMailRead->callback2 = CB2_ExitMailReadFreeVars;
|
||||
}
|
||||
}
|
||||
|
||||
+206
-178
@@ -44,10 +44,10 @@
|
||||
|
||||
// Static RAM declarations
|
||||
|
||||
EWRAM_DATA u8 gUnknown_02022D04 = 0;
|
||||
EWRAM_DATA u16 gUnknown_02022D06 = 0;
|
||||
static EWRAM_DATA u8 gUnknown_02022D04 = 0;
|
||||
static EWRAM_DATA u16 sCurrItemAndOptionMenuCheck = 0;
|
||||
|
||||
IWRAM_DATA u8 gUnknown_03000DD0;
|
||||
static IWRAM_DATA u8 gUnknown_03000DD0;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
@@ -56,7 +56,7 @@ void Task_MainMenuCheckSaveFile(u8);
|
||||
void Task_MainMenuCheckBattery(u8);
|
||||
void Task_WaitForSaveFileErrorWindow(u8);
|
||||
void CreateMainMenuErrorWindow(const u8*);
|
||||
void sub_8032250(const struct WindowTemplate*);
|
||||
static void ClearMainMenuWindowTilemap(const struct WindowTemplate*);
|
||||
void Task_DisplayMainMenu(u8);
|
||||
void Task_WaitForBatteryDryErrorWindow(u8);
|
||||
void fmt_savegame(void);
|
||||
@@ -133,12 +133,12 @@ const u8 gUnknown_082FEEF0[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
|
||||
const u16 gUnknown_082FF018[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
|
||||
const u16 gUnknown_082FF028[] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
const struct WindowTemplate gUnknown_082FF038[] = {
|
||||
const struct WindowTemplate sWindowTemplates_NoSavedGame[] = {
|
||||
{0, 2, 1, 26, 2, 15, 1},
|
||||
{0, 2, 5, 26, 2, 15, 0x35}
|
||||
};
|
||||
|
||||
const struct WindowTemplate gUnknown_082FF048[] = {
|
||||
const struct WindowTemplate sWindowTemplates_HasSavedGame[] = {
|
||||
{0, 2, 1, 26, 6, 15, 1},
|
||||
{0, 2, 9, 26, 2, 15, 0x9D},
|
||||
{0, 2, 13, 26, 2, 15, 0xD1},
|
||||
@@ -146,7 +146,7 @@ const struct WindowTemplate gUnknown_082FF048[] = {
|
||||
{0, 2, 21, 26, 2, 15, 0x139}
|
||||
};
|
||||
|
||||
const struct WindowTemplate gUnknown_082FF070[] = {
|
||||
const struct WindowTemplate sWindowTemplate_ErrorWindow[] = {
|
||||
{0, 2, 15, 26, 4, 15, 0x16D},
|
||||
{0xFF, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
@@ -161,7 +161,7 @@ const struct WindowTemplate gUnknown_082FF080[] = {
|
||||
const u16 gMainMenuBgPal[] = INCBIN_U16("graphics/misc/main_menu_bg.gbapal");
|
||||
const u16 gMainMenuTextPal[] = INCBIN_U16("graphics/misc/main_menu_text.gbapal");
|
||||
|
||||
const u8 gUnknown_082FF0E0[] = {10, 11, 12};
|
||||
const u8 gTextColor_Headers[] = {10, 11, 12};
|
||||
const u8 gUnknown_082FF0E3[] = {10, 1, 12};
|
||||
|
||||
const struct BgTemplate gUnknown_082FF0E8[] = {
|
||||
@@ -195,7 +195,7 @@ const struct BgTemplate gUnknown_082FF0F0 = {
|
||||
.baseTile = 0
|
||||
};
|
||||
|
||||
const struct ArrowStruct gUnknown_082FF0F4 = {2, 0x78, 8, 3, 0x78, 0x98, 3, 4, 1, 1, 0};
|
||||
const struct ScrollArrowsTemplate sScrollArrowsTemplate_MainMenu = {2, 0x78, 8, 3, 0x78, 0x98, 3, 4, 1, 1, 0};
|
||||
|
||||
const union AffineAnimCmd gUnknown_082FF104[] = {
|
||||
AFFINEANIMCMD_FRAME(-2, -2, 0, 0x30),
|
||||
@@ -265,6 +265,16 @@ enum
|
||||
HAS_MYSTERY_EVENTS,
|
||||
};
|
||||
|
||||
enum {
|
||||
ACTION_NEW_GAME,
|
||||
ACTION_CONTINUE,
|
||||
ACTION_OPTIONS,
|
||||
ACTION_MYSTERY_GIFT,
|
||||
ACTION_MYSTERY_EVENTS,
|
||||
ACTION_UNKNOWN, // TODO: change when rom_8011DC0 decompiled
|
||||
ACTION_INVALID
|
||||
};
|
||||
|
||||
#define MAIN_MENU_BORDER_TILE 0x1D5
|
||||
|
||||
void CB2_MainMenu(void)
|
||||
@@ -319,16 +329,16 @@ u32 InitMainMenu(bool8 returningFromOptionsMenu)
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
if (returningFromOptionsMenu)
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0x0000); // fade to black
|
||||
else
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xFFFF); // fade to white
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); // fade to white
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, gUnknown_082FF0E8, 2);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgX(1, 0, 0);
|
||||
ChangeBgY(1, 0, 0);
|
||||
InitWindows(gUnknown_082FF038);
|
||||
InitWindows(sWindowTemplates_NoSavedGame);
|
||||
DeactivateAllTextPrinters();
|
||||
LoadMainMenuWindowFrameTiles(0, MAIN_MENU_BORDER_TILE);
|
||||
|
||||
@@ -351,6 +361,15 @@ u32 InitMainMenu(bool8 returningFromOptionsMenu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define tMenuType data[0]
|
||||
#define tCurrItem data[1]
|
||||
#define tItemCount data[12]
|
||||
#define tScrollArrowTaskId data[13]
|
||||
#define tIsScrolled data[14]
|
||||
#define tWirelessAdapterConnected data[15]
|
||||
|
||||
#define tArrowTaskIsScrolled data[15] // For scroll indicator arrow task
|
||||
|
||||
void Task_MainMenuCheckSaveFile(u8 taskId)
|
||||
{
|
||||
s16* data = gTasks[taskId].data;
|
||||
@@ -359,64 +378,64 @@ void Task_MainMenuCheckSaveFile(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 17);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x31);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_DARKEN | BLDCNT_TGT1_BG0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 7);
|
||||
|
||||
if (sub_80093CC())
|
||||
data[15] = 1;
|
||||
if (IsWirelessAdapterConnected())
|
||||
tWirelessAdapterConnected = TRUE;
|
||||
switch (gSaveFileStatus)
|
||||
{
|
||||
case 1:
|
||||
data[0] = HAS_SAVED_GAME;
|
||||
tMenuType = HAS_SAVED_GAME;
|
||||
if (IsMysteryGiftEnabled())
|
||||
data[0]++;
|
||||
tMenuType++;
|
||||
gTasks[taskId].func = Task_MainMenuCheckBattery;
|
||||
break;
|
||||
case 2:
|
||||
CreateMainMenuErrorWindow(gText_SaveFileErased);
|
||||
data[0] = 0;
|
||||
tMenuType = HAS_NO_SAVED_GAME;
|
||||
gTasks[taskId].func = Task_WaitForSaveFileErrorWindow;
|
||||
break;
|
||||
case 0xFF:
|
||||
CreateMainMenuErrorWindow(gText_SaveFileCorrupted);
|
||||
gTasks[taskId].func = Task_WaitForSaveFileErrorWindow;
|
||||
data[0] = HAS_SAVED_GAME;
|
||||
tMenuType = HAS_SAVED_GAME;
|
||||
if (IsMysteryGiftEnabled() == TRUE)
|
||||
data[0]++;
|
||||
tMenuType++;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
data[0] = HAS_NO_SAVED_GAME;
|
||||
tMenuType = HAS_NO_SAVED_GAME;
|
||||
gTasks[taskId].func = Task_MainMenuCheckBattery;
|
||||
break;
|
||||
case 4:
|
||||
CreateMainMenuErrorWindow(gJPText_No1MSubCircuit);
|
||||
gTasks[taskId].data[0] = HAS_NO_SAVED_GAME;
|
||||
gTasks[taskId].tMenuType = HAS_NO_SAVED_GAME;
|
||||
gTasks[taskId].func = Task_WaitForSaveFileErrorWindow;
|
||||
break;
|
||||
}
|
||||
if (gUnknown_02022D06 & 0x8000)
|
||||
if (sCurrItemAndOptionMenuCheck & 0x8000) // are we returning from the options menu?
|
||||
{
|
||||
switch (data[0])
|
||||
switch (tMenuType) // if so, highlight the OPTIONS item
|
||||
{
|
||||
case HAS_NO_SAVED_GAME:
|
||||
case HAS_SAVED_GAME:
|
||||
gUnknown_02022D06 = data[0] + 1;
|
||||
sCurrItemAndOptionMenuCheck = tMenuType + 1;
|
||||
break;
|
||||
case HAS_MYSTERY_GIFT:
|
||||
gUnknown_02022D06 = 3;
|
||||
sCurrItemAndOptionMenuCheck = 3;
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_02022D06 = 4;
|
||||
case HAS_MYSTERY_EVENTS:
|
||||
sCurrItemAndOptionMenuCheck = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
gUnknown_02022D06 &= 0x7FFF;
|
||||
data[1] = gUnknown_02022D06;
|
||||
data[12] = data[0] + 2;
|
||||
sCurrItemAndOptionMenuCheck &= 0x7FFF; // turn off the "returning from options menu" flag
|
||||
tCurrItem = sCurrItemAndOptionMenuCheck;
|
||||
tItemCount = tMenuType + 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -426,7 +445,7 @@ void Task_WaitForSaveFileErrorWindow(u8 taskId)
|
||||
if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
|
||||
{
|
||||
ClearWindowTilemap(7);
|
||||
sub_8032250(gUnknown_082FF070);
|
||||
ClearMainMenuWindowTilemap(sWindowTemplate_ErrorWindow);
|
||||
gTasks[taskId].func = Task_MainMenuCheckBattery;
|
||||
}
|
||||
}
|
||||
@@ -437,8 +456,8 @@ void Task_MainMenuCheckBattery(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 17);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x31);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_DARKEN | BLDCNT_TGT1_BG0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 7);
|
||||
@@ -461,7 +480,7 @@ void Task_WaitForBatteryDryErrorWindow(u8 taskId)
|
||||
if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
|
||||
{
|
||||
ClearWindowTilemap(7);
|
||||
sub_8032250(gUnknown_082FF070);
|
||||
ClearMainMenuWindowTilemap(sWindowTemplate_ErrorWindow);
|
||||
gTasks[taskId].func = Task_DisplayMainMenu;
|
||||
}
|
||||
}
|
||||
@@ -475,8 +494,8 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 17);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x31);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_DARKEN | BLDCNT_TGT1_BG0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 7);
|
||||
@@ -504,28 +523,28 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
LoadPalette(&palette, 241, 2);
|
||||
}
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tMenuType)
|
||||
{
|
||||
case HAS_NO_SAVED_GAME:
|
||||
default:
|
||||
FillWindowPixelBuffer(0, 0xAA);
|
||||
FillWindowPixelBuffer(1, 0xAA);
|
||||
box_print(0, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuNewGame);
|
||||
box_print(1, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuOption);
|
||||
box_print(0, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
|
||||
box_print(1, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(1);
|
||||
CopyWindowToVram(0, 2);
|
||||
CopyWindowToVram(1, 2);
|
||||
DrawMainMenuWindowBorder(gUnknown_082FF038, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF038[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_NoSavedGame[0], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_NoSavedGame[1], MAIN_MENU_BORDER_TILE);
|
||||
break;
|
||||
case HAS_SAVED_GAME:
|
||||
FillWindowPixelBuffer(2, 0xAA);
|
||||
FillWindowPixelBuffer(3, 0xAA);
|
||||
FillWindowPixelBuffer(4, 0xAA);
|
||||
box_print(2, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuOption);
|
||||
box_print(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
|
||||
fmt_savegame();
|
||||
PutWindowTilemap(2);
|
||||
PutWindowTilemap(3);
|
||||
@@ -533,19 +552,19 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
CopyWindowToVram(2, 2);
|
||||
CopyWindowToVram(3, 2);
|
||||
CopyWindowToVram(4, 2);
|
||||
DrawMainMenuWindowBorder(gUnknown_082FF048, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[2], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[0], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[2], MAIN_MENU_BORDER_TILE);
|
||||
break;
|
||||
case HAS_MYSTERY_GIFT:
|
||||
FillWindowPixelBuffer(2, 0xAA);
|
||||
FillWindowPixelBuffer(3, 0xAA);
|
||||
FillWindowPixelBuffer(4, 0xAA);
|
||||
FillWindowPixelBuffer(5, 0xAA);
|
||||
box_print(2, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuMysteryGift);
|
||||
box_print(5, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuOption);
|
||||
box_print(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryGift);
|
||||
box_print(5, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
|
||||
fmt_savegame();
|
||||
PutWindowTilemap(2);
|
||||
PutWindowTilemap(3);
|
||||
@@ -555,10 +574,10 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
CopyWindowToVram(3, 2);
|
||||
CopyWindowToVram(4, 2);
|
||||
CopyWindowToVram(5, 2);
|
||||
DrawMainMenuWindowBorder(gUnknown_082FF048, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[2], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[3], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(sWindowTemplates_HasSavedGame, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[2], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[3], MAIN_MENU_BORDER_TILE);
|
||||
break;
|
||||
case HAS_MYSTERY_EVENTS:
|
||||
FillWindowPixelBuffer(2, 0xAA);
|
||||
@@ -566,11 +585,11 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
FillWindowPixelBuffer(4, 0xAA);
|
||||
FillWindowPixelBuffer(5, 0xAA);
|
||||
FillWindowPixelBuffer(6, 0xAA);
|
||||
box_print(2, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuMysteryGift2);
|
||||
box_print(5, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuMysteryEvents);
|
||||
box_print(6, 1, 0, 1, gUnknown_082FF0E0, -1, gText_MainMenuOption);
|
||||
box_print(2, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuContinue);
|
||||
box_print(3, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuNewGame);
|
||||
box_print(4, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryGift2);
|
||||
box_print(5, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuMysteryEvents);
|
||||
box_print(6, 1, 0, 1, gTextColor_Headers, -1, gText_MainMenuOption);
|
||||
fmt_savegame();
|
||||
PutWindowTilemap(2);
|
||||
PutWindowTilemap(3);
|
||||
@@ -582,19 +601,19 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
CopyWindowToVram(4, 2);
|
||||
CopyWindowToVram(5, 2);
|
||||
CopyWindowToVram(6, 2);
|
||||
DrawMainMenuWindowBorder(gUnknown_082FF048, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[2], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[3], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&gUnknown_082FF048[4], MAIN_MENU_BORDER_TILE);
|
||||
data[13] = AddScrollIndicatorArrowPair(&gUnknown_082FF0F4, &gUnknown_02022D06);
|
||||
gTasks[data[13]].func = Task_ScrollIndicatorArrowPairOnMainMenu;
|
||||
if (gUnknown_02022D06 == 4)
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[0], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[1], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[2], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[3], MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(&sWindowTemplates_HasSavedGame[4], MAIN_MENU_BORDER_TILE);
|
||||
tScrollArrowTaskId = AddScrollIndicatorArrowPair(&sScrollArrowsTemplate_MainMenu, &sCurrItemAndOptionMenuCheck);
|
||||
gTasks[tScrollArrowTaskId].func = Task_ScrollIndicatorArrowPairOnMainMenu;
|
||||
if (sCurrItemAndOptionMenuCheck == 4)
|
||||
{
|
||||
ChangeBgY(0, 0x2000, 1);
|
||||
ChangeBgY(1, 0x2000, 1);
|
||||
data[14] = 1;
|
||||
gTasks[data[13]].data[15] = 1;
|
||||
tIsScrolled = TRUE;
|
||||
gTasks[tScrollArrowTaskId].tArrowTaskIsScrolled = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -604,7 +623,7 @@ void Task_DisplayMainMenu(u8 taskId)
|
||||
|
||||
void Task_HighlightSelectedMainMenuItem(u8 taskId)
|
||||
{
|
||||
HighlightSelectedMainMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[14]);
|
||||
HighlightSelectedMainMenuItem(gTasks[taskId].tMenuType, gTasks[taskId].tCurrItem, gTasks[taskId].tIsScrolled);
|
||||
gTasks[taskId].func = Task_HandleMainMenuInput;
|
||||
}
|
||||
|
||||
@@ -615,40 +634,40 @@ bool8 HandleMainMenuInput(u8 taskId)
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_80093CC();
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
|
||||
IsWirelessAdapterConnected(); // why bother calling this here? debug? Task_HandleMainMenuAPressed will check too
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
|
||||
gTasks[taskId].func = Task_HandleMainMenuAPressed;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_WHITEALPHA);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0xA0);
|
||||
gTasks[taskId].func = Task_HandleMainMenuBPressed;
|
||||
}
|
||||
else if ((gMain.newKeys & DPAD_UP) && data[1] > 0)
|
||||
else if ((gMain.newKeys & DPAD_UP) && tCurrItem > 0)
|
||||
{
|
||||
if (data[0] == 3 && data[14] == 1 && data[1] == 1)
|
||||
if (tMenuType == HAS_MYSTERY_EVENTS && tIsScrolled == TRUE && tCurrItem == 1)
|
||||
{
|
||||
ChangeBgY(0, 0x2000, 2);
|
||||
ChangeBgY(1, 0x2000, 2);
|
||||
gTasks[data[13]].data[15] = data[14] = 0;
|
||||
gTasks[tScrollArrowTaskId].tArrowTaskIsScrolled = tIsScrolled = FALSE;
|
||||
}
|
||||
data[1]--;
|
||||
gUnknown_02022D06 = data[1];
|
||||
tCurrItem--;
|
||||
sCurrItemAndOptionMenuCheck = tCurrItem;
|
||||
return TRUE;
|
||||
}
|
||||
else if ((gMain.newKeys & DPAD_DOWN) && data[1] < data[12] - 1)
|
||||
else if ((gMain.newKeys & DPAD_DOWN) && tCurrItem < tItemCount - 1)
|
||||
{
|
||||
if (data[0] == 3 && data[1] == 3 && data[14] == 0)
|
||||
if (tMenuType == HAS_MYSTERY_EVENTS && tCurrItem == 3 && tIsScrolled == FALSE)
|
||||
{
|
||||
ChangeBgY(0, 0x2000, 1);
|
||||
ChangeBgY(1, 0x2000, 1);
|
||||
gTasks[data[13]].data[15] = data[14] = 1;
|
||||
gTasks[tScrollArrowTaskId].tArrowTaskIsScrolled = tIsScrolled = TRUE;
|
||||
}
|
||||
data[1]++;
|
||||
gUnknown_02022D06 = data[1];
|
||||
tCurrItem++;
|
||||
sCurrItemAndOptionMenuCheck = tCurrItem;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -662,13 +681,13 @@ void Task_HandleMainMenuInput(u8 taskId)
|
||||
|
||||
void Task_HandleMainMenuAPressed(u8 taskId)
|
||||
{
|
||||
bool8 r2;
|
||||
bool8 wirelessAdapterConnected;
|
||||
u8 action;
|
||||
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 3)
|
||||
RemoveScrollIndicatorArrowPair(gTasks[taskId].data[13]);
|
||||
if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS)
|
||||
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
|
||||
sub_819746C(0, 1);
|
||||
sub_819746C(1, 1);
|
||||
sub_819746C(2, 1);
|
||||
@@ -677,103 +696,103 @@ void Task_HandleMainMenuAPressed(u8 taskId)
|
||||
sub_819746C(5, 1);
|
||||
sub_819746C(6, 1);
|
||||
sub_819746C(7, 1);
|
||||
r2 = sub_80093CC();
|
||||
switch (gTasks[taskId].data[0])
|
||||
wirelessAdapterConnected = IsWirelessAdapterConnected();
|
||||
switch (gTasks[taskId].tMenuType)
|
||||
{
|
||||
case HAS_NO_SAVED_GAME:
|
||||
default:
|
||||
switch (gTasks[taskId].data[1])
|
||||
switch (gTasks[taskId].tCurrItem)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
action = 0;
|
||||
action = ACTION_NEW_GAME;
|
||||
break;
|
||||
case 1:
|
||||
action = 2;
|
||||
action = ACTION_OPTIONS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HAS_SAVED_GAME:
|
||||
switch (gTasks[taskId].data[1])
|
||||
switch (gTasks[taskId].tCurrItem)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
action = 1;
|
||||
action = ACTION_CONTINUE;
|
||||
break;
|
||||
case 1:
|
||||
action = 0;
|
||||
action = ACTION_NEW_GAME;
|
||||
break;
|
||||
case 2:
|
||||
action = 2;
|
||||
action = ACTION_OPTIONS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HAS_MYSTERY_GIFT:
|
||||
switch (gTasks[taskId].data[1])
|
||||
switch (gTasks[taskId].tCurrItem)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
action = 1;
|
||||
action = ACTION_CONTINUE;
|
||||
break;
|
||||
case 1:
|
||||
action = 0;
|
||||
action = ACTION_NEW_GAME;
|
||||
break;
|
||||
case 2:
|
||||
action = 3;
|
||||
if (r2 == FALSE)
|
||||
action = ACTION_MYSTERY_GIFT;
|
||||
if (!wirelessAdapterConnected)
|
||||
{
|
||||
action = 6;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
action = ACTION_INVALID;
|
||||
gTasks[taskId].tMenuType = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
action = 2;
|
||||
action = ACTION_OPTIONS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case HAS_MYSTERY_EVENTS:
|
||||
switch (gTasks[taskId].data[1])
|
||||
switch (gTasks[taskId].tCurrItem)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
action = 1;
|
||||
action = ACTION_CONTINUE;
|
||||
break;
|
||||
case 1:
|
||||
action = 0;
|
||||
action = ACTION_NEW_GAME;
|
||||
break;
|
||||
case 2:
|
||||
if (gTasks[taskId].data[15])
|
||||
if (gTasks[taskId].tWirelessAdapterConnected)
|
||||
{
|
||||
action = 3;
|
||||
if (r2 == FALSE)
|
||||
action = ACTION_MYSTERY_GIFT;
|
||||
if (!wirelessAdapterConnected)
|
||||
{
|
||||
action = 6;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
action = ACTION_INVALID;
|
||||
gTasks[taskId].tMenuType = 0;
|
||||
}
|
||||
}
|
||||
else if (r2)
|
||||
else if (wirelessAdapterConnected)
|
||||
{
|
||||
action = 6;
|
||||
gTasks[taskId].data[0] = 1;
|
||||
action = ACTION_INVALID;
|
||||
gTasks[taskId].tMenuType = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
action = 5;
|
||||
action = ACTION_UNKNOWN;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (r2)
|
||||
if (wirelessAdapterConnected)
|
||||
{
|
||||
action = 6;
|
||||
gTasks[taskId].data[0] = 2;
|
||||
action = ACTION_INVALID;
|
||||
gTasks[taskId].tMenuType = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
action = 4;
|
||||
action = ACTION_MYSTERY_EVENTS;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
action = 2;
|
||||
action = ACTION_OPTIONS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -782,37 +801,37 @@ void Task_HandleMainMenuAPressed(u8 taskId)
|
||||
ChangeBgY(1, 0, 0);
|
||||
switch (action)
|
||||
{
|
||||
case 0:
|
||||
case ACTION_NEW_GAME:
|
||||
default:
|
||||
gPlttBufferUnfaded[0] = RGB_BLACK;
|
||||
gPlttBufferFaded[0] = RGB_BLACK;
|
||||
gTasks[taskId].func = task_new_game_prof_birch_speech_1;
|
||||
break;
|
||||
case 1:
|
||||
case ACTION_CONTINUE:
|
||||
gPlttBufferUnfaded[0] = RGB_BLACK;
|
||||
gPlttBufferFaded[0] = RGB_BLACK;
|
||||
SetMainCallback2(CB2_ContinueSavedGame);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 2:
|
||||
case ACTION_OPTIONS:
|
||||
gMain.savedCallback = CB2_ReinitMainMenu;
|
||||
SetMainCallback2(CB2_InitOptionMenu);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 3:
|
||||
case ACTION_MYSTERY_GIFT:
|
||||
SetMainCallback2(c2_mystery_gift);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 4:
|
||||
case ACTION_MYSTERY_EVENTS:
|
||||
SetMainCallback2(CB2_InitMysteryEventMenu);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 5:
|
||||
case ACTION_UNKNOWN:
|
||||
SetMainCallback2(sub_801867C);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 6:
|
||||
gTasks[taskId].data[1] = 0;
|
||||
case ACTION_INVALID:
|
||||
gTasks[taskId].tCurrItem = 0;
|
||||
gTasks[taskId].func = Task_DisplayMainMenuInvalidActionError;
|
||||
gPlttBufferUnfaded[0xF1] = RGB_WHITE;
|
||||
gPlttBufferFaded[0xF1] = RGB_WHITE;
|
||||
@@ -822,14 +841,14 @@ void Task_HandleMainMenuAPressed(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
return;
|
||||
}
|
||||
FreeAllWindowBuffers();
|
||||
if (action != 2)
|
||||
gUnknown_02022D06 = 0;
|
||||
if (action != ACTION_OPTIONS)
|
||||
sCurrItemAndOptionMenuCheck = 0;
|
||||
else
|
||||
gUnknown_02022D06 |= 0x8000;
|
||||
sCurrItemAndOptionMenuCheck |= 0x8000; // entering the options menu
|
||||
}
|
||||
}
|
||||
|
||||
@@ -837,9 +856,9 @@ void Task_HandleMainMenuBPressed(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 3)
|
||||
RemoveScrollIndicatorArrowPair(gTasks[taskId].data[13]);
|
||||
gUnknown_02022D06 = 0;
|
||||
if (gTasks[taskId].tMenuType == 3)
|
||||
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
|
||||
sCurrItemAndOptionMenuCheck = 0;
|
||||
FreeAllWindowBuffers();
|
||||
SetMainCallback2(CB2_InitTitleScreen);
|
||||
DestroyTask(taskId);
|
||||
@@ -848,11 +867,11 @@ void Task_HandleMainMenuBPressed(u8 taskId)
|
||||
|
||||
void Task_DisplayMainMenuInvalidActionError(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].data[1])
|
||||
switch (gTasks[taskId].tCurrItem)
|
||||
{
|
||||
case 0:
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tMenuType)
|
||||
{
|
||||
case 0:
|
||||
CreateMainMenuErrorWindow(gText_WirelessNotConnected);
|
||||
@@ -864,30 +883,39 @@ void Task_DisplayMainMenuInvalidActionError(u8 taskId)
|
||||
CreateMainMenuErrorWindow(gText_MysteryEventsCantUse);
|
||||
break;
|
||||
}
|
||||
gTasks[taskId].data[1]++;
|
||||
gTasks[taskId].tCurrItem++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
gTasks[taskId].data[1]++;
|
||||
gTasks[taskId].tCurrItem++;
|
||||
break;
|
||||
case 2:
|
||||
RunTextPrinters();
|
||||
if (!IsTextPrinterActive(7))
|
||||
gTasks[taskId].data[1]++;
|
||||
gTasks[taskId].tCurrItem++;
|
||||
break;
|
||||
case 3:
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, RGB_BLACK);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gTasks[taskId].func = Task_HandleMainMenuBPressed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 a)
|
||||
#undef tMenuType
|
||||
#undef tCurrItem
|
||||
#undef tItemCount
|
||||
#undef tScrollArrowTaskId
|
||||
#undef tIsScrolled
|
||||
#undef tWirelessAdapterConnected
|
||||
|
||||
#undef tArrowTaskIsScrolled
|
||||
|
||||
void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 isScrolled)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0x9E7);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, WINHV_COORDS(9, 231));
|
||||
|
||||
switch (menuType)
|
||||
{
|
||||
@@ -897,10 +925,10 @@ void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x11F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(1, 31));
|
||||
break;
|
||||
case 1:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x213F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(33, 63));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -909,13 +937,13 @@ void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x13F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(1, 63));
|
||||
break;
|
||||
case 1:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x415F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(65, 95));
|
||||
break;
|
||||
case 2:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x617F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(97, 127));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -924,16 +952,16 @@ void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x13F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(1, 63));
|
||||
break;
|
||||
case 1:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x415F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(65, 95));
|
||||
break;
|
||||
case 2:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x617F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(97, 127));
|
||||
break;
|
||||
case 3:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x819F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(129, 159));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -942,28 +970,28 @@ void HighlightSelectedMainMenuItem(u8 menuType, u8 selectedMenuItem, s16 a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x13F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(1, 63));
|
||||
break;
|
||||
case 1:
|
||||
if (a)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x213F);
|
||||
if (isScrolled)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(33, 63));
|
||||
else
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x415F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(65, 95));
|
||||
break;
|
||||
case 2:
|
||||
if (a)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x415F);
|
||||
if (isScrolled)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(65, 95));
|
||||
else
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x617F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(97, 127));
|
||||
break;
|
||||
case 3:
|
||||
if (a)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x617F);
|
||||
if (isScrolled)
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(97, 127));
|
||||
else
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x819F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(129, 159));
|
||||
break;
|
||||
case 4:
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x819F);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, WINHV_COORDS(129, 159));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -992,7 +1020,7 @@ void task_new_game_prof_birch_speech_1(u8 taskId)
|
||||
FreeAllSpritePalettes();
|
||||
dp13_810BB8C();
|
||||
AddBirchSpeechObjects(taskId);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gTasks[taskId].data[4] = 0;
|
||||
gTasks[taskId].func = task_new_game_prof_birch_speech_2;
|
||||
gTasks[taskId].data[2] = 0xFF;
|
||||
@@ -1038,7 +1066,7 @@ void task_new_game_prof_birch_speech_3(u8 taskId)
|
||||
{
|
||||
InitWindows(gUnknown_082FF080);
|
||||
LoadMainMenuWindowFrameTiles(0, 0xF3);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0xFC, 0xF0);
|
||||
LoadMessageBoxGfx(0, 0xFC, 0xF0);
|
||||
unknown_rbox_to_vram(0, 1);
|
||||
PutWindowTilemap(0);
|
||||
CopyWindowToVram(0, 2);
|
||||
@@ -1298,7 +1326,7 @@ void task_new_game_prof_birch_speech_16(u8 taskId)
|
||||
{
|
||||
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, RGB_BLACK);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gTasks[taskId].func = task_new_game_prof_birch_speech_17;
|
||||
}
|
||||
}
|
||||
@@ -1547,7 +1575,7 @@ void new_game_prof_birch_speech_part2_start(void)
|
||||
gSprites[spriteId].invisible = 0;
|
||||
gTasks[taskId].data[2] = spriteId;
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, -60);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0);
|
||||
@@ -1565,7 +1593,7 @@ void new_game_prof_birch_speech_part2_start(void)
|
||||
SetMainCallback2(CB2_MainMenu);
|
||||
InitWindows(gUnknown_082FF080);
|
||||
LoadMainMenuWindowFrameTiles(0, 0xF3);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0xFC, 0xF0);
|
||||
LoadMessageBoxGfx(0, 0xFC, 0xF0);
|
||||
PutWindowTilemap(0);
|
||||
CopyWindowToVram(0, 3);
|
||||
}
|
||||
@@ -1797,7 +1825,7 @@ void CreateMainMenuErrorWindow(const u8* str)
|
||||
PrintTextOnWindow(7, 1, str, 0, 1, 2, 0);
|
||||
PutWindowTilemap(7);
|
||||
CopyWindowToVram(7, 2);
|
||||
DrawMainMenuWindowBorder(gUnknown_082FF070, MAIN_MENU_BORDER_TILE);
|
||||
DrawMainMenuWindowBorder(sWindowTemplate_ErrorWindow, MAIN_MENU_BORDER_TILE);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0x9E7);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0x719F);
|
||||
}
|
||||
@@ -1892,7 +1920,7 @@ void DrawMainMenuWindowBorder(const struct WindowTemplate *template, u16 baseTil
|
||||
CopyBgTilemapBufferToVram(template->priority);
|
||||
}
|
||||
|
||||
void sub_8032250(const struct WindowTemplate *template)
|
||||
static void ClearMainMenuWindowTilemap(const struct WindowTemplate *template)
|
||||
{
|
||||
FillBgTilemapBufferRect(template->priority, 0, template->tilemapLeft - 1, template->tilemapTop - 1, template->tilemapLeft + template->width + 1, template->tilemapTop + template->height + 1, 2);
|
||||
CopyBgTilemapBufferToVram(template->priority);
|
||||
@@ -1914,11 +1942,11 @@ void sub_80322E0(u8 windowId, u8 a)
|
||||
|
||||
void sub_8032318(u8 a)
|
||||
{
|
||||
u8 fontAttribute = GetFontAttribute(1, 6);
|
||||
u8 fontAttribute2 = GetFontAttribute(1, 0);
|
||||
u8 fontAttribute3 = GetFontAttribute(1, 1);
|
||||
u8 windowAttribute = GetWindowAttribute(a, 3);
|
||||
u8 windowAttribute2 = GetWindowAttribute(a, 4);
|
||||
u8 fontAttribute = GetFontAttribute(1, FONTATTR_COLOR_BACKGROUND);
|
||||
u8 fontAttribute2 = GetFontAttribute(1, FONTATTR_MAX_LETTER_WIDTH);
|
||||
u8 fontAttribute3 = GetFontAttribute(1, FONTATTR_MAX_LETTER_HEIGHT);
|
||||
u8 windowAttribute = GetWindowAttribute(a, WINDOW_WIDTH);
|
||||
u8 windowAttribute2 = GetWindowAttribute(a, WINDOW_HEIGHT);
|
||||
|
||||
FillWindowPixelRect(a, fontAttribute, 0, 0, fontAttribute2 * windowAttribute, fontAttribute3 * windowAttribute2);
|
||||
CopyWindowToVram(a, 2);
|
||||
|
||||
@@ -228,7 +228,7 @@ static void ShowMapNamePopUpWindow(void)
|
||||
|
||||
if(InBattlePyramid())
|
||||
{
|
||||
if(gMapHeader.mapDataId == 0x17A)
|
||||
if(gMapHeader.mapLayoutId == 0x17A)
|
||||
{
|
||||
withoutPrefixPtr = &(mapDisplayHeader[3]);
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[7];
|
||||
@@ -236,7 +236,7 @@ static void ShowMapNamePopUpWindow(void)
|
||||
else
|
||||
{
|
||||
withoutPrefixPtr = &(mapDisplayHeader[3]);
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->battlePyramidWildHeaderId];
|
||||
mapDisplayHeaderSource = gBattlePyramid_MapHeaderStrings[gSaveBlock2Ptr->frontier.field_CB2];
|
||||
}
|
||||
StringCopy(withoutPrefixPtr, mapDisplayHeaderSource);
|
||||
}
|
||||
@@ -463,7 +463,7 @@ static void LoadMapNamePopUpWindowBg(void)
|
||||
}
|
||||
popUpThemeId = gRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId];
|
||||
|
||||
LoadBgTiles(GetWindowAttribute(popupWindowId, 0), &(gMapPopUp_Outline_Table[popUpThemeId][0]), 0x400, 0x21D);
|
||||
LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_PRIORITY), &(gMapPopUp_Outline_Table[popUpThemeId][0]), 0x400, 0x21D);
|
||||
CallWindowFunction(popupWindowId, sub_80D4A78);
|
||||
PutWindowTilemap(popupWindowId);
|
||||
if(gMapHeader.weather == WEATHER_BUBBLES)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "main.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/easy_chat.h"
|
||||
#include "constants/map_objects.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/vars.h"
|
||||
#include "mauville_old_man.h"
|
||||
#include "event_data.h"
|
||||
@@ -136,7 +136,7 @@ void SetMauvilleOldMan(void)
|
||||
SetupGiddy();
|
||||
break;
|
||||
}
|
||||
ScrSpecial_SetMauvilleOldManMapObjGfx();
|
||||
ScrSpecial_SetMauvilleOldManEventObjGfx();
|
||||
}
|
||||
|
||||
u8 GetCurrentMauvilleOldMan(void)
|
||||
@@ -406,7 +406,7 @@ void ResetMauvilleOldManFlag(void)
|
||||
case MAUVILLE_MAN_GIDDY:
|
||||
break;
|
||||
}
|
||||
ScrSpecial_SetMauvilleOldManMapObjGfx();
|
||||
ScrSpecial_SetMauvilleOldManEventObjGfx();
|
||||
}
|
||||
|
||||
|
||||
@@ -671,9 +671,9 @@ static void Task_BardSong(u8 taskId)
|
||||
sub_8197224();
|
||||
}
|
||||
|
||||
void ScrSpecial_SetMauvilleOldManMapObjGfx(void)
|
||||
void ScrSpecial_SetMauvilleOldManEventObjGfx(void)
|
||||
{
|
||||
VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD);
|
||||
VarSet(VAR_OBJ_GFX_ID_0, EVENT_OBJ_GFX_BARD);
|
||||
}
|
||||
|
||||
// Language fixers?
|
||||
|
||||
+17
-17
@@ -193,8 +193,8 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP
|
||||
|
||||
void sub_81973A4(void)
|
||||
{
|
||||
copy_textbox_border_tile_patterns_to_vram(0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
|
||||
sub_809882C(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
|
||||
LoadMessageBoxGfx(0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
|
||||
LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
|
||||
}
|
||||
|
||||
void NewMenuHelpers_DrawDialogueFrame(u8 windowId, bool8 copyToVram)
|
||||
@@ -412,7 +412,7 @@ void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram)
|
||||
|
||||
void sub_819786C(u8 windowId, bool8 copyToVram)
|
||||
{
|
||||
copy_textbox_border_tile_patterns_to_vram(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
|
||||
LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
|
||||
sub_8197B1C(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
|
||||
}
|
||||
|
||||
@@ -1107,12 +1107,12 @@ void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 l
|
||||
|
||||
printer.windowId = windowId;
|
||||
printer.fontId = fontId;
|
||||
printer.fgColor = GetFontAttribute(fontId, 5);
|
||||
printer.bgColor = GetFontAttribute(fontId, 6);
|
||||
printer.shadowColor = GetFontAttribute(fontId, 7);
|
||||
printer.fontColor_l = GetFontAttribute(fontId, 4);
|
||||
printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
|
||||
printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
|
||||
printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
|
||||
printer.fontColor_l = GetFontAttribute(fontId, FONTATTR_COLOR_LOWNIBBLE);
|
||||
printer.letterSpacing = letterSpacing;
|
||||
printer.lineSpacing = GetFontAttribute(fontId, 3);
|
||||
printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
|
||||
printer.x = left;
|
||||
printer.currentX = left;
|
||||
|
||||
@@ -1129,7 +1129,7 @@ void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 l
|
||||
|
||||
void sub_81989B8(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a5)
|
||||
{
|
||||
AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, 0), 1, GetFontAttribute(fontId, 2), lineHeight, itemCount, strs, a5);
|
||||
AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 1, GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), lineHeight, itemCount, strs, a5);
|
||||
}
|
||||
|
||||
void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
|
||||
@@ -1167,20 +1167,20 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
|
||||
printer.current_text_offset = gText_YesNo;
|
||||
printer.windowId = gUnknown_0203CD9F;
|
||||
printer.fontId = fontId;
|
||||
printer.x = GetFontAttribute(fontId, 0) + left;
|
||||
printer.x = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + left;
|
||||
printer.y = top;
|
||||
printer.currentX = printer.x;
|
||||
printer.currentY = printer.y;
|
||||
printer.fgColor = GetFontAttribute(fontId, 5);
|
||||
printer.bgColor = GetFontAttribute(fontId, 6);
|
||||
printer.shadowColor = GetFontAttribute(fontId, 7);
|
||||
printer.fontColor_l = GetFontAttribute(fontId, 4);
|
||||
printer.letterSpacing = GetFontAttribute(fontId, 2);
|
||||
printer.lineSpacing = GetFontAttribute(fontId, 3);
|
||||
printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
|
||||
printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
|
||||
printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
|
||||
printer.fontColor_l = GetFontAttribute(fontId, FONTATTR_COLOR_LOWNIBBLE);
|
||||
printer.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
|
||||
printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
|
||||
|
||||
AddTextPrinter(&printer, 0xFF, NULL);
|
||||
|
||||
sub_81983AC(gUnknown_0203CD9F, fontId, left, top, GetFontAttribute(fontId, 1), 2, initialCursorPos);
|
||||
sub_81983AC(gUnknown_0203CD9F, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT), 2, initialCursorPos);
|
||||
}
|
||||
|
||||
void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum, u8 paletteNum)
|
||||
|
||||
@@ -252,8 +252,7 @@ static const u8 sTileBitAttributes[] =
|
||||
TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEF
|
||||
};
|
||||
|
||||
// only used as default case for checking jump landing in field_ground_effect.
|
||||
bool8 ShouldDoJumpLandingDustEffect(u8 var)
|
||||
bool8 MetatileBehavior_IsATile(u8 var)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -847,7 +846,7 @@ bool8 MetatileBehavior_IsBerryTreeSoil(u8 var)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MetatileBehavior_IsAsh(u8 var)
|
||||
bool8 MetatileBehavior_IsAshGrass(u8 var)
|
||||
{
|
||||
if (var == MB_ASHGRASS)
|
||||
return TRUE;
|
||||
|
||||
@@ -77,7 +77,7 @@ void CB2_InitMysteryEventMenu(void)
|
||||
FillWindowPixelBuffer(i, 0);
|
||||
|
||||
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
|
||||
sub_809882C(0, 1u, 0xD0u);
|
||||
LoadUserWindowBorderGfx(0, 1u, 0xD0u);
|
||||
sub_81978B0(0xE0);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
@@ -121,7 +121,7 @@ static void CB2_MysteryEventMenu(void)
|
||||
PutWindowTilemap(0);
|
||||
CopyWindowToVram(0, 3);
|
||||
ShowBg(0);
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -264,7 +264,7 @@ static void CB2_MysteryEventMenu(void)
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 16:
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@
|
||||
#include "pokemon.h"
|
||||
#include "field_specials.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "event_data.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "menu.h"
|
||||
#include "text_window.h"
|
||||
#include "overworld.h"
|
||||
#include "constants/map_objects.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
EWRAM_DATA static struct NamingScreenData *gNamingScreenData = NULL;
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
@@ -1142,7 +1142,7 @@ static void NamingScreen_CreatePlayerIcon(void)
|
||||
u8 spriteId;
|
||||
|
||||
rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gNamingScreenData->monSpecies);
|
||||
spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
|
||||
spriteId = AddPseudoEventObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x25, 0);
|
||||
gSprites[spriteId].oam.priority = 3;
|
||||
StartSpriteAnim(&gSprites[spriteId], 4);
|
||||
}
|
||||
@@ -1169,7 +1169,7 @@ static void NamingScreen_CreateWandaDadIcon(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
spriteId = AddPseudoFieldObject(MAP_OBJ_GFX_MAN_1, SpriteCallbackDummy, 0x38, 0x25, 0);
|
||||
spriteId = AddPseudoEventObject(EVENT_OBJ_GFX_MAN_1, SpriteCallbackDummy, 0x38, 0x25, 0);
|
||||
gSprites[spriteId].oam.priority = 3;
|
||||
StartSpriteAnim(&gSprites[spriteId], 4);
|
||||
}
|
||||
|
||||
+24
-19
@@ -31,11 +31,9 @@ extern u8 gUnknown_030060B0;
|
||||
// TODO: replace those declarations with file headers
|
||||
extern u16 GetGeneratedTrainerIdLower(void);
|
||||
extern void ClearContestWinnerPicsInContestHall(void);
|
||||
extern void warp_in(void);
|
||||
extern void sub_80BB358(void);
|
||||
extern void ResetBagScrollPositions(void);
|
||||
extern void ResetPokedex(void);
|
||||
extern void sub_8084400(void);
|
||||
extern void ResetGabbyAndTy(void);
|
||||
extern void ResetSecretBases(void);
|
||||
extern void ResetLinkContestBoolean(void);
|
||||
@@ -58,6 +56,19 @@ extern void SetBerryPowder(u32* powder, u32 newValue);
|
||||
|
||||
extern const u8 EventScript_2715DE[];
|
||||
|
||||
// this file's functions
|
||||
static void ClearFrontierRecord(void);
|
||||
static void WarpToTruck(void);
|
||||
static void ResetMiniGamesResults(void);
|
||||
|
||||
// const rom data
|
||||
static const struct ContestWinner sContestWinnerPicDummy =
|
||||
{
|
||||
.monName = _(""),
|
||||
.trainerName = _("")
|
||||
};
|
||||
|
||||
// code
|
||||
void WriteUnalignedWord(u32 var, u8 *dataPtr)
|
||||
{
|
||||
dataPtr[0] = var;
|
||||
@@ -78,14 +89,14 @@ void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom)
|
||||
copyTo[i] = copyFrom[i];
|
||||
}
|
||||
|
||||
void InitPlayerTrainerId(void)
|
||||
static void InitPlayerTrainerId(void)
|
||||
{
|
||||
u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
|
||||
WriteUnalignedWord(trainerId, gSaveBlock2Ptr->playerTrainerId);
|
||||
}
|
||||
|
||||
// L=A isnt set here for some reason.
|
||||
void SetDefaultOptions(void)
|
||||
static void SetDefaultOptions(void)
|
||||
{
|
||||
gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID;
|
||||
gSaveBlock2Ptr->optionsWindowFrameType = 0;
|
||||
@@ -95,37 +106,31 @@ void SetDefaultOptions(void)
|
||||
gSaveBlock2Ptr->regionMapZoom = FALSE;
|
||||
}
|
||||
|
||||
void ClearPokedexFlags(void)
|
||||
static void ClearPokedexFlags(void)
|
||||
{
|
||||
gUnknown_030060B0 = 0;
|
||||
memset(&gSaveBlock2Ptr->pokedex.owned, 0, sizeof(gSaveBlock2Ptr->pokedex.owned));
|
||||
memset(&gSaveBlock2Ptr->pokedex.seen, 0, sizeof(gSaveBlock2Ptr->pokedex.seen));
|
||||
}
|
||||
|
||||
const struct ContestWinner gContestWinnerPicDummy = {
|
||||
.monName = _(""),
|
||||
.trainerName = _("")
|
||||
};
|
||||
|
||||
void ClearAllContestWinnerPics(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
ClearContestWinnerPicsInContestHall();
|
||||
for (i = 8; i < 13; i++)
|
||||
gSaveBlock1Ptr->contestWinners[i] = gContestWinnerPicDummy;
|
||||
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
||||
}
|
||||
|
||||
void sub_8084400(void)
|
||||
static void ClearFrontierRecord(void)
|
||||
{
|
||||
// probably clearing one struct for battle frontier
|
||||
CpuFill32(0, &gSaveBlock2Ptr->battleTower, 2272);
|
||||
CpuFill32(0, &gSaveBlock2Ptr->frontier, sizeof(gSaveBlock2Ptr->frontier));
|
||||
|
||||
gSaveBlock2Ptr->field_EE1[0][0] = EOS;
|
||||
gSaveBlock2Ptr->field_EE1[1][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[0][0] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[1][0] = EOS;
|
||||
}
|
||||
|
||||
void WarpToTruck(void)
|
||||
static void WarpToTruck(void)
|
||||
{
|
||||
Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
|
||||
warp_in();
|
||||
@@ -157,7 +162,7 @@ void NewGameInitData(void)
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
ResetPokedex();
|
||||
sub_8084400();
|
||||
ClearFrontierRecord();
|
||||
ClearSav1();
|
||||
ClearMailData();
|
||||
gSaveBlock2Ptr->specialSaveWarp = 0;
|
||||
@@ -207,7 +212,7 @@ void NewGameInitData(void)
|
||||
ResetContestLinkResults();
|
||||
}
|
||||
|
||||
void ResetMiniGamesResults(void)
|
||||
static void ResetMiniGamesResults(void)
|
||||
{
|
||||
CpuFill16(0, &gSaveBlock2Ptr->berryCrush, sizeof(struct BerryCrush));
|
||||
SetBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, 0);
|
||||
|
||||
+2
-2
@@ -235,7 +235,7 @@ void CB2_InitOptionMenu(void)
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
SetVBlankCallback(VBlankCB);
|
||||
SetMainCallback2(MainCB2);
|
||||
return;
|
||||
@@ -344,7 +344,7 @@ static void Task_OptionMenuSave(u8 taskId)
|
||||
gSaveBlock2Ptr->optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE];
|
||||
gSaveBlock2Ptr->optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE];
|
||||
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_OptionMenuFadeOut;
|
||||
}
|
||||
|
||||
|
||||
+205
-206
@@ -10,9 +10,7 @@
|
||||
#include "field_control_avatar.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_fadetransition.h"
|
||||
#include "field_ground_effect.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "field_map_obj_helpers.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_message_box.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_screen_effect.h"
|
||||
@@ -59,6 +57,7 @@
|
||||
#include "malloc.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "link_rfu.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
// event scripts
|
||||
extern const u8 EventScript_WhiteOut[];
|
||||
@@ -83,14 +82,14 @@ extern const u8 gUnknown_082774EF[];
|
||||
extern const u8 gUnknown_08277509[];
|
||||
|
||||
// vars
|
||||
extern const struct MapData *const gMapAttributes[];
|
||||
extern const struct MapLayout *const gMapLayouts[];
|
||||
extern const struct MapHeader *const *const gMapGroups[];
|
||||
extern const s32 gMaxFlashLevel;
|
||||
extern const u16 gUnknown_82EC7C4[];
|
||||
|
||||
u16 gUnknown_03005DA8;
|
||||
MainCallback gFieldCallback;
|
||||
bool8 (*gUnknown_03005DB0)(void);
|
||||
bool8 (*gFieldCallback2)(void);
|
||||
u8 gUnknown_03005DB4;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
|
||||
@@ -99,16 +98,16 @@ extern void HealPlayerParty(void);
|
||||
extern void move_tilemap_camera_to_upper_left_corner(void);
|
||||
extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
|
||||
extern void DrawWholeMapView(void);
|
||||
extern void copy_map_tileset1_tileset2_to_vram(const struct MapData *);
|
||||
extern void apply_map_tileset1_tileset2_palette(const struct MapData *);
|
||||
extern void copy_map_tileset1_tileset2_to_vram(const struct MapLayout *);
|
||||
extern void apply_map_tileset1_tileset2_palette(const struct MapLayout *);
|
||||
extern void ResetCyclingRoadChallengeData(void);
|
||||
extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
|
||||
extern void mapheader_run_script_with_tag_x5(void);
|
||||
extern void ResetFieldTasksArgs(void);
|
||||
extern void sub_80A0A2C(void);
|
||||
extern void not_trainer_hill_battle_pyramid(void);
|
||||
extern void apply_map_tileset2_palette(const struct MapData *);
|
||||
extern void copy_map_tileset2_to_vram_2(const struct MapData *);
|
||||
extern void apply_map_tileset2_palette(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
|
||||
extern void prev_quest_postbuffer_cursor_backup_reset(void);
|
||||
extern void ShowMapNamePopup(void);
|
||||
extern bool32 InTrainerHill(void);
|
||||
@@ -145,8 +144,8 @@ extern void sub_80EDB44(void);
|
||||
extern void sub_81D64C0(void);
|
||||
extern void sub_81BE6AC(void);
|
||||
extern void sub_8098128(void);
|
||||
extern void copy_map_tileset1_to_vram(const struct MapData *);
|
||||
extern void copy_map_tileset2_to_vram(const struct MapData *);
|
||||
extern void copy_map_tileset1_to_vram(const struct MapLayout *);
|
||||
extern void copy_map_tileset2_to_vram(const struct MapLayout *);
|
||||
extern void FieldUpdateBgTilemapScroll(void);
|
||||
extern void TransferTilesetAnimsBuffer(void);
|
||||
extern bool32 sub_81D5F48(void);
|
||||
@@ -171,7 +170,7 @@ extern const u8* sub_809C2C8(struct MapPosition *a1, u8, u8);
|
||||
extern u8 *sub_809D0F4(void*);
|
||||
extern u8 sub_808BD6C(u8);
|
||||
extern u8 sub_808BD7C(u8);
|
||||
extern void sub_80979D4(struct Sprite*, u8);
|
||||
extern void UpdateEventObjectSpriteVisibility(struct Sprite*, u8);
|
||||
|
||||
// this file's functions
|
||||
static void Overworld_ResetStateAfterWhiteOut(void);
|
||||
@@ -206,7 +205,7 @@ static void sub_8086C90(void);
|
||||
static void sub_8086FA0(u16);
|
||||
static void sub_8086F38(u16*, s32);
|
||||
static u8 npc_something3(u8 a1, u8 a2);
|
||||
static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y);
|
||||
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y);
|
||||
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
|
||||
static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
|
||||
static u8 sub_80878A0(u8 linkPlayerId);
|
||||
@@ -214,15 +213,15 @@ static u8 sub_80878C0(u8 linkPlayerId);
|
||||
static s32 sub_80878E4(u8 linkPlayerId);
|
||||
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
|
||||
static void sub_808796C(u8 linkPlayerId, u8 a2);
|
||||
static void ZeroMapObject(struct MapObject *mapObj);
|
||||
static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
|
||||
static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y);
|
||||
static void ZeroEventObject(struct EventObject *eventObj);
|
||||
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
|
||||
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
|
||||
static void sub_80877DC(u8 linkPlayerId, u8 a2);
|
||||
static void sub_808780C(u8 linkPlayerId);
|
||||
static u8 sub_8087858(u8 linkPlayerId);
|
||||
static void sub_8087584(void);
|
||||
static u32 sub_8087690(void);
|
||||
static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj);
|
||||
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
|
||||
static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
|
||||
static u16 sub_8087480(const u8 *script);
|
||||
static void sub_8087510(void);
|
||||
@@ -269,7 +268,7 @@ EWRAM_DATA static u16 sLastMapSectionId = 0;
|
||||
EWRAM_DATA static struct UnkPlayerStruct sUnknown_02032300 = {0};
|
||||
EWRAM_DATA static u16 sAmbientCrySpecies = 0;
|
||||
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
|
||||
EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
|
||||
EWRAM_DATA struct LinkPlayerEventObject gLinkPlayerEventObjects[4] = {0};
|
||||
|
||||
// const rom data
|
||||
static const struct WarpData sDummyWarpData =
|
||||
@@ -354,22 +353,22 @@ static const struct ScanlineEffectParams gUnknown_08339DBC =
|
||||
0,
|
||||
};
|
||||
|
||||
static u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
|
||||
static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
|
||||
static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
|
||||
{
|
||||
sub_80879D8,
|
||||
sub_80879F8,
|
||||
sub_80879FC,
|
||||
};
|
||||
|
||||
static u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||
static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8);
|
||||
|
||||
static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
|
||||
static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
|
||||
{
|
||||
sub_8087A1C,
|
||||
sub_8087A20,
|
||||
@@ -384,10 +383,10 @@ static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapO
|
||||
sub_8087A88,
|
||||
};
|
||||
|
||||
static void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *);
|
||||
static void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *);
|
||||
static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *);
|
||||
static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *);
|
||||
|
||||
static void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) =
|
||||
static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) =
|
||||
{
|
||||
sub_8087AA0,
|
||||
sub_8087AA8,
|
||||
@@ -503,55 +502,55 @@ void ApplyNewEncryptionKeyToGameStats(u32 newKey)
|
||||
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey);
|
||||
}
|
||||
|
||||
void LoadMapObjTemplatesFromHeader(void)
|
||||
void LoadEventObjTemplatesFromHeader(void)
|
||||
{
|
||||
// Clear map object templates
|
||||
CpuFill32(0, gSaveBlock1Ptr->mapObjectTemplates, sizeof(gSaveBlock1Ptr->mapObjectTemplates));
|
||||
CpuFill32(0, gSaveBlock1Ptr->eventObjectTemplates, sizeof(gSaveBlock1Ptr->eventObjectTemplates));
|
||||
|
||||
// Copy map header events to save block
|
||||
CpuCopy32(gMapHeader.events->mapObjects,
|
||||
gSaveBlock1Ptr->mapObjectTemplates,
|
||||
gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate));
|
||||
CpuCopy32(gMapHeader.events->eventObjects,
|
||||
gSaveBlock1Ptr->eventObjectTemplates,
|
||||
gMapHeader.events->eventObjectCount * sizeof(struct EventObjectTemplate));
|
||||
}
|
||||
|
||||
void LoadSaveblockMapObjScripts(void)
|
||||
void LoadSaveblockEventObjScripts(void)
|
||||
{
|
||||
struct MapObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->mapObjects;
|
||||
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||
struct EventObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->eventObjects;
|
||||
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 64; i++)
|
||||
savObjTemplates[i].script = mapHeaderObjTemplates[i].script;
|
||||
}
|
||||
|
||||
void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
|
||||
void Overworld_SetEventObjTemplateCoords(u8 localId, s16 x, s16 y)
|
||||
{
|
||||
s32 i;
|
||||
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
|
||||
for (i = 0; i < 64; i++)
|
||||
{
|
||||
struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
|
||||
if (mapObjectTemplate->localId == localId)
|
||||
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
|
||||
if (eventObjectTemplate->localId == localId)
|
||||
{
|
||||
mapObjectTemplate->x = x;
|
||||
mapObjectTemplate->y = y;
|
||||
eventObjectTemplate->x = x;
|
||||
eventObjectTemplate->y = y;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
|
||||
void Overworld_SetEventObjTemplateMovementType(u8 localId, u8 movementType)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||
struct EventObjectTemplate *savObjTemplates = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
for (i = 0; i < 64; i++)
|
||||
{
|
||||
struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
|
||||
if (mapObjectTemplate->localId == localId)
|
||||
struct EventObjectTemplate *eventObjectTemplate = &savObjTemplates[i];
|
||||
if (eventObjectTemplate->localId == localId)
|
||||
{
|
||||
mapObjectTemplate->movementType = movementType;
|
||||
eventObjectTemplate->movementType = movementType;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -560,17 +559,17 @@ void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
|
||||
static void mapdata_load_assets_to_gpu_and_full_redraw(void)
|
||||
{
|
||||
move_tilemap_camera_to_upper_left_corner();
|
||||
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
DrawWholeMapView();
|
||||
cur_mapheader_run_tileset_funcs_after_some_cpuset();
|
||||
}
|
||||
|
||||
const struct MapData *get_mapdata_header(void)
|
||||
const struct MapLayout *GetMapLayout(void)
|
||||
{
|
||||
u16 mapDataId = gSaveBlock1Ptr->mapDataId;
|
||||
if (mapDataId)
|
||||
return gMapAttributes[mapDataId - 1];
|
||||
u16 mapLayoutId = gSaveBlock1Ptr->mapLayoutId;
|
||||
if (mapLayoutId)
|
||||
return gMapLayouts[mapLayoutId - 1];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -627,14 +626,14 @@ void set_current_map_header_from_sav1_save_old_name(void)
|
||||
{
|
||||
sLastMapSectionId = gMapHeader.regionMapSectionId;
|
||||
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||
gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId;
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gSaveBlock1Ptr->mapLayoutId = gMapHeader.mapLayoutId;
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void LoadSaveblockMapHeader(void)
|
||||
{
|
||||
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void update_camera_pos_from_warpid(void)
|
||||
@@ -651,8 +650,8 @@ void update_camera_pos_from_warpid(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = gMapHeader.mapData->width / 2;
|
||||
gSaveBlock1Ptr->pos.y = gMapHeader.mapData->height / 2;
|
||||
gSaveBlock1Ptr->pos.x = gMapHeader.mapLayout->width / 2;
|
||||
gSaveBlock1Ptr->pos.y = gMapHeader.mapLayout->height / 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -826,7 +825,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
|
||||
ApplyCurrentWarp();
|
||||
set_current_map_header_from_sav1_save_old_name();
|
||||
LoadMapObjTemplatesFromHeader();
|
||||
LoadEventObjTemplatesFromHeader();
|
||||
TrySetMapSaveWarpStatus();
|
||||
ClearTempFieldEventData();
|
||||
ResetCyclingRoadChallengeData();
|
||||
@@ -839,8 +838,8 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
|
||||
Overworld_ClearSavedMusic();
|
||||
mapheader_run_script_with_tag_x3();
|
||||
not_trainer_hill_battle_pyramid();
|
||||
copy_map_tileset2_to_vram_2(gMapHeader.mapData);
|
||||
apply_map_tileset2_palette(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
|
||||
apply_map_tileset2_palette(gMapHeader.mapLayout);
|
||||
|
||||
for (paletteIndex = 6; paletteIndex < 13; paletteIndex++)
|
||||
ApplyWeatherGammaShiftToPal(paletteIndex);
|
||||
@@ -864,12 +863,12 @@ static void mli0_load_map(u32 a1)
|
||||
set_current_map_header_from_sav1_save_old_name();
|
||||
if (!(sUnknown_020322D8 & 1))
|
||||
{
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
sub_81AA1D8();
|
||||
else if (InTrainerHill())
|
||||
sub_81D5DF8();
|
||||
else
|
||||
LoadMapObjTemplatesFromHeader();
|
||||
LoadEventObjTemplatesFromHeader();
|
||||
}
|
||||
|
||||
v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
|
||||
@@ -892,7 +891,7 @@ static void mli0_load_map(u32 a1)
|
||||
mapheader_run_script_with_tag_x3();
|
||||
UpdateLocationHistoryForRoamer();
|
||||
RoamerMoveToOtherLocationSet();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(0);
|
||||
else if (InTrainerHill())
|
||||
trainer_hill_map_load_related();
|
||||
@@ -914,7 +913,7 @@ void player_avatar_init_params_reset(void)
|
||||
|
||||
void walkrun_find_lowest_active_bit_in_bitfield(void)
|
||||
{
|
||||
sUnknown_02032300.player_field_1 = player_get_direction_lower_nybble();
|
||||
sUnknown_02032300.player_field_1 = GetPlayerFacingDirection();
|
||||
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
|
||||
sUnknown_02032300.player_field_0 = 2;
|
||||
@@ -1018,10 +1017,10 @@ u8 Overworld_GetFlashLevel(void)
|
||||
return gSaveBlock1Ptr->flashLevel;
|
||||
}
|
||||
|
||||
void sub_8085524(u16 mapDataId)
|
||||
void sub_8085524(u16 mapLayoutId)
|
||||
{
|
||||
gSaveBlock1Ptr->mapDataId = mapDataId;
|
||||
gMapHeader.mapData = get_mapdata_header();
|
||||
gSaveBlock1Ptr->mapLayoutId = mapLayoutId;
|
||||
gMapHeader.mapLayout = GetMapLayout();
|
||||
}
|
||||
|
||||
void sub_8085540(u8 var)
|
||||
@@ -1520,15 +1519,15 @@ void sub_8085E94(void *a0)
|
||||
|
||||
static bool8 map_post_load_hook_exec(void)
|
||||
{
|
||||
if (gUnknown_03005DB0 != NULL)
|
||||
if (gFieldCallback2 != NULL)
|
||||
{
|
||||
if (!gUnknown_03005DB0())
|
||||
if (!gFieldCallback2())
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_03005DB0 = NULL;
|
||||
gFieldCallback2 = NULL;
|
||||
gFieldCallback = NULL;
|
||||
}
|
||||
}
|
||||
@@ -1556,7 +1555,7 @@ void CB2_NewGame(void)
|
||||
ScriptContext1_Init();
|
||||
ScriptContext2_Disable();
|
||||
gFieldCallback = ExecuteTruckSequence;
|
||||
gUnknown_03005DB0 = NULL;
|
||||
gFieldCallback2 = NULL;
|
||||
do_load_map_stuff_loop(&gMain.state);
|
||||
SetFieldVBlankCallback();
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
@@ -1686,7 +1685,7 @@ void c2_8056854(void)
|
||||
void CB2_ReturnToFieldWithOpenMenu(void)
|
||||
{
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
gUnknown_03005DB0 = sub_80AF6A4;
|
||||
gFieldCallback2 = sub_80AF6A4;
|
||||
CB2_ReturnToField();
|
||||
}
|
||||
|
||||
@@ -1731,17 +1730,17 @@ void CB2_ContinueSavedGame(void)
|
||||
LoadSaveblockMapHeader();
|
||||
set_warp2_warp3_to_neg_1();
|
||||
trainerHillMapId = GetCurrentTrainerHillMapId();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
sub_81AA2F8();
|
||||
else if (trainerHillMapId != 0 && trainerHillMapId != 6)
|
||||
sub_81D5F48();
|
||||
else
|
||||
LoadSaveblockMapObjScripts();
|
||||
LoadSaveblockEventObjScripts();
|
||||
|
||||
UnfreezeMapObjects();
|
||||
UnfreezeEventObjects();
|
||||
DoTimeBasedEvents();
|
||||
sub_8084788();
|
||||
if (gMapHeader.mapDataId == 0x169)
|
||||
if (gMapHeader.mapLayoutId == 0x169)
|
||||
battle_pyramid_map_load_related(1);
|
||||
else if (trainerHillMapId != 0)
|
||||
trainer_hill_map_load_related();
|
||||
@@ -1861,17 +1860,17 @@ static bool32 map_loading_iteration_3(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 8:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -1936,17 +1935,17 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 8:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -2033,17 +2032,17 @@ static bool32 map_loading_iteration_2_link(u8 *state)
|
||||
(*state)++;
|
||||
break;
|
||||
case 5:
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset1_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 6:
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapData);
|
||||
copy_map_tileset2_to_vram(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
break;
|
||||
case 7:
|
||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||
{
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||
apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -2172,7 +2171,7 @@ static void sub_80869DC(void)
|
||||
gUnknown_03005DEC = 0;
|
||||
gUnknown_03005DE8 = 0;
|
||||
sub_808D438();
|
||||
SpawnFieldObjectsInView(0, 0);
|
||||
TrySpawnEventObjects(0, 0);
|
||||
mapheader_run_first_tag4_script_list_match();
|
||||
}
|
||||
|
||||
@@ -2189,7 +2188,7 @@ static void mli4_mapscripts_and_other(void)
|
||||
InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2Ptr->playerGender);
|
||||
SetPlayerAvatarTransitionFlags(player->player_field_0);
|
||||
player_avatar_init_params_reset();
|
||||
SpawnFieldObjectsInView(0, 0);
|
||||
TrySpawnEventObjects(0, 0);
|
||||
mapheader_run_first_tag4_script_list_match();
|
||||
}
|
||||
|
||||
@@ -2202,7 +2201,7 @@ static void sub_8086A68(void)
|
||||
|
||||
static void sub_8086A80(void)
|
||||
{
|
||||
gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1;
|
||||
gEventObjects[gPlayerAvatar.eventObjectId].trackedByCamera = 1;
|
||||
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
|
||||
}
|
||||
|
||||
@@ -2233,7 +2232,7 @@ static void sub_8086B14(void)
|
||||
|
||||
for (i = 0; i < gFieldLinkPlayerCount; i++)
|
||||
{
|
||||
SpawnLinkPlayerMapObject(i, i + x, y, gLinkPlayers[i].gender);
|
||||
SpawnLinkPlayerEventObject(i, i + x, y, gLinkPlayers[i].gender);
|
||||
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
|
||||
}
|
||||
|
||||
@@ -2678,7 +2677,7 @@ static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
|
||||
|
||||
a3->a = linkPlayerId;
|
||||
a3->b = (linkPlayerId == a2) ? 1 : 0;
|
||||
a3->c = gLinkPlayerMapObjects[linkPlayerId].mode;
|
||||
a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
|
||||
a3->d = sub_80878A0(linkPlayerId);
|
||||
sub_8087878(linkPlayerId, &x, &y);
|
||||
a3->sub.x = x;
|
||||
@@ -2891,109 +2890,109 @@ static u32 sub_8087690(void)
|
||||
return gLink.sendQueue.count;
|
||||
}
|
||||
|
||||
static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj)
|
||||
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj)
|
||||
{
|
||||
memset(linkPlayerMapObj, 0, sizeof(struct LinkPlayerMapObject));
|
||||
memset(linkPlayerEventObj, 0, sizeof(struct LinkPlayerEventObject));
|
||||
}
|
||||
|
||||
void ZeroAllLinkPlayerMapObjects(void)
|
||||
void ClearLinkPlayerEventObjects(void)
|
||||
{
|
||||
memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects));
|
||||
memset(gLinkPlayerEventObjects, 0, sizeof(gLinkPlayerEventObjects));
|
||||
}
|
||||
|
||||
static void ZeroMapObject(struct MapObject *mapObj)
|
||||
static void ZeroEventObject(struct EventObject *eventObj)
|
||||
{
|
||||
memset(mapObj, 0, sizeof(struct MapObject));
|
||||
memset(eventObj, 0, sizeof(struct EventObject));
|
||||
}
|
||||
|
||||
static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
|
||||
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
|
||||
{
|
||||
u8 mapObjId = sub_808D4F4();
|
||||
struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
u8 eventObjId = GetFirstInactiveEventObjectId();
|
||||
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
|
||||
ZeroLinkPlayerMapObject(linkPlayerMapObj);
|
||||
ZeroMapObject(mapObj);
|
||||
ZeroLinkPlayerEventObject(linkPlayerEventObj);
|
||||
ZeroEventObject(eventObj);
|
||||
|
||||
linkPlayerMapObj->active = 1;
|
||||
linkPlayerMapObj->linkPlayerId = linkPlayerId;
|
||||
linkPlayerMapObj->mapObjId = mapObjId;
|
||||
linkPlayerMapObj->mode = 0;
|
||||
linkPlayerEventObj->active = 1;
|
||||
linkPlayerEventObj->linkPlayerId = linkPlayerId;
|
||||
linkPlayerEventObj->eventObjId = eventObjId;
|
||||
linkPlayerEventObj->mode = 0;
|
||||
|
||||
mapObj->active = 1;
|
||||
mapObj->mapobj_bit_1 = a4;
|
||||
mapObj->range.as_byte = 2;
|
||||
mapObj->spriteId = 64;
|
||||
eventObj->active = 1;
|
||||
eventObj->singleMovementActive = a4;
|
||||
eventObj->range.as_byte = 2;
|
||||
eventObj->spriteId = 64;
|
||||
|
||||
InitLinkPlayerMapObjectPos(mapObj, x, y);
|
||||
InitLinkPlayerEventObjectPos(eventObj, x, y);
|
||||
}
|
||||
|
||||
static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y)
|
||||
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y)
|
||||
{
|
||||
mapObj->coords2.x = x;
|
||||
mapObj->coords2.y = y;
|
||||
mapObj->coords3.x = x;
|
||||
mapObj->coords3.y = y;
|
||||
sub_8093038(x, y, &mapObj->coords1.x, &mapObj->coords1.y);
|
||||
mapObj->coords1.x += 8;
|
||||
FieldObjectUpdateZCoord(mapObj);
|
||||
eventObj->currentCoords.x = x;
|
||||
eventObj->currentCoords.y = y;
|
||||
eventObj->previousCoords.x = x;
|
||||
eventObj->previousCoords.y = y;
|
||||
sub_8093038(x, y, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
|
||||
eventObj->initialCoords.x += 8;
|
||||
EventObjectUpdateZCoord(eventObj);
|
||||
}
|
||||
|
||||
static void sub_80877DC(u8 linkPlayerId, u8 a2)
|
||||
{
|
||||
if (gLinkPlayerMapObjects[linkPlayerId].active)
|
||||
if (gLinkPlayerEventObjects[linkPlayerId].active)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
mapObj->range.as_byte = a2;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
eventObj->range.as_byte = a2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_808780C(u8 linkPlayerId)
|
||||
{
|
||||
struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
|
||||
u8 mapObjId = linkPlayerMapObj->mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
if (mapObj->spriteId != 64 )
|
||||
DestroySprite(&gSprites[mapObj->spriteId]);
|
||||
linkPlayerMapObj->active = 0;
|
||||
mapObj->active = 0;
|
||||
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
|
||||
u8 eventObjId = linkPlayerEventObj->eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
if (eventObj->spriteId != 64 )
|
||||
DestroySprite(&gSprites[eventObj->spriteId]);
|
||||
linkPlayerEventObj->active = 0;
|
||||
eventObj->active = 0;
|
||||
}
|
||||
|
||||
static u8 sub_8087858(u8 linkPlayerId)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
return mapObj->spriteId;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
return eventObj->spriteId;
|
||||
}
|
||||
|
||||
static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
*x = mapObj->coords2.x;
|
||||
*y = mapObj->coords2.y;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
*x = eventObj->currentCoords.x;
|
||||
*y = eventObj->currentCoords.y;
|
||||
}
|
||||
|
||||
static u8 sub_80878A0(u8 linkPlayerId)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
return mapObj->range.as_byte;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
return eventObj->range.as_byte;
|
||||
}
|
||||
|
||||
static u8 sub_80878C0(u8 linkPlayerId)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
return mapObj->mapobj_unk_0B_0;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
return eventObj->currentElevation;
|
||||
}
|
||||
|
||||
static s32 sub_80878E4(u8 linkPlayerId)
|
||||
{
|
||||
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
return 16 - (s8)mapObj->mapobj_unk_21;
|
||||
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
return 16 - (s8)eventObj->directionSequenceIndex;
|
||||
}
|
||||
|
||||
static u8 GetLinkPlayerIdAt(s16 x, s16 y)
|
||||
@@ -3001,11 +3000,11 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
|
||||
u8 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (gLinkPlayerMapObjects[i].active
|
||||
&& (gLinkPlayerMapObjects[i].mode == 0 || gLinkPlayerMapObjects[i].mode == 2))
|
||||
if (gLinkPlayerEventObjects[i].active
|
||||
&& (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
|
||||
{
|
||||
struct MapObject *mapObj = &gMapObjects[gLinkPlayerMapObjects[i].mapObjId];
|
||||
if (mapObj->coords2.x == x && mapObj->coords2.y == y)
|
||||
struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
|
||||
if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -3014,79 +3013,79 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
|
||||
|
||||
static void sub_808796C(u8 linkPlayerId, u8 a2)
|
||||
{
|
||||
struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
|
||||
u8 mapObjId = linkPlayerMapObj->mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
|
||||
u8 eventObjId = linkPlayerEventObj->eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
|
||||
if (linkPlayerMapObj->active)
|
||||
if (linkPlayerEventObj->active)
|
||||
{
|
||||
if (a2 > 10)
|
||||
mapObj->mapobj_bit_2 = 1;
|
||||
eventObj->triggerGroundEffectsOnMove = 1;
|
||||
else
|
||||
gUnknown_08339E00[gUnknown_08339DC8[linkPlayerMapObj->mode](linkPlayerMapObj, mapObj, a2)](linkPlayerMapObj, mapObj);
|
||||
gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_80879D8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
|
||||
return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
|
||||
}
|
||||
|
||||
static u8 sub_80879F8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static u8 sub_80879FC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
|
||||
return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
|
||||
}
|
||||
|
||||
static u8 sub_8087A1C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 sub_8087A20(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
s16 x, y;
|
||||
|
||||
mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
|
||||
FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
|
||||
eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
|
||||
EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
|
||||
|
||||
if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
|
||||
if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
mapObj->mapobj_unk_21 = 16;
|
||||
npc_coords_shift(mapObj, x, y);
|
||||
FieldObjectUpdateZCoord(mapObj);
|
||||
eventObj->directionSequenceIndex = 16;
|
||||
ShiftEventObjectCoords(eventObj, x, y);
|
||||
EventObjectUpdateZCoord(eventObj);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_8087A88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
|
||||
static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
|
||||
{
|
||||
mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
|
||||
eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sub_8087AA0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
|
||||
static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
|
||||
{
|
||||
linkPlayerMapObj->mode = 0;
|
||||
linkPlayerEventObj->mode = 0;
|
||||
}
|
||||
|
||||
static void sub_8087AA8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
|
||||
static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
|
||||
{
|
||||
mapObj->mapobj_unk_21--;
|
||||
linkPlayerMapObj->mode = 1;
|
||||
MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
|
||||
if (!mapObj->mapobj_unk_21)
|
||||
eventObj->directionSequenceIndex--;
|
||||
linkPlayerEventObj->mode = 1;
|
||||
MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
|
||||
if (!eventObj->directionSequenceIndex)
|
||||
{
|
||||
npc_coords_shift_still(mapObj);
|
||||
linkPlayerMapObj->mode = 2;
|
||||
ShiftStillEventObjectCoords(eventObj);
|
||||
linkPlayerEventObj->mode = 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3110,15 +3109,15 @@ static u8 npc_something3(u8 a1, u8 a2)
|
||||
return a2;
|
||||
}
|
||||
|
||||
static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
|
||||
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
if (i != selfMapObjId)
|
||||
if (i != selfEventObjId)
|
||||
{
|
||||
if ((gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
|
||||
|| (gMapObjects[i].coords3.x == x && gMapObjects[i].coords3.y == y))
|
||||
if ((gEventObjects[i].currentCoords.x == x && gEventObjects[i].currentCoords.y == y)
|
||||
|| (gEventObjects[i].previousCoords.x == x && gEventObjects[i].previousCoords.y == y))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@@ -3129,51 +3128,51 @@ static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
|
||||
|
||||
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
|
||||
{
|
||||
struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
|
||||
u8 mapObjId = linkPlayerMapObj->mapObjId;
|
||||
struct MapObject *mapObj = &gMapObjects[mapObjId];
|
||||
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
|
||||
u8 eventObjId = linkPlayerEventObj->eventObjId;
|
||||
struct EventObject *eventObj = &gEventObjects[eventObjId];
|
||||
struct Sprite *sprite;
|
||||
|
||||
if (linkPlayerMapObj->active)
|
||||
if (linkPlayerEventObj->active)
|
||||
{
|
||||
switch (gameVersion)
|
||||
{
|
||||
case VERSION_FIRE_RED:
|
||||
case VERSION_LEAF_GREEN:
|
||||
mapObj->spriteId = AddPseudoFieldObject(sub_808BD6C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
eventObj->spriteId = AddPseudoEventObject(sub_808BD6C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
break;
|
||||
case VERSION_RUBY:
|
||||
case VERSION_SAPPHIRE:
|
||||
mapObj->spriteId = AddPseudoFieldObject(sub_808BD7C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
eventObj->spriteId = AddPseudoEventObject(sub_808BD7C(eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
break;
|
||||
case VERSION_EMERALD:
|
||||
mapObj->spriteId = AddPseudoFieldObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
eventObj->spriteId = AddPseudoEventObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, eventObj->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
sprite = &gSprites[mapObj->spriteId];
|
||||
sprite = &gSprites[eventObj->spriteId];
|
||||
sprite->coordOffsetEnabled = TRUE;
|
||||
sprite->data[0] = linkPlayerId;
|
||||
mapObj->mapobj_bit_2 = 0;
|
||||
eventObj->triggerGroundEffectsOnMove = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_LinkPlayer(struct Sprite *sprite)
|
||||
{
|
||||
struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]];
|
||||
struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId];
|
||||
sprite->pos1.x = mapObj->coords1.x;
|
||||
sprite->pos1.y = mapObj->coords1.y;
|
||||
SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
|
||||
sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
|
||||
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[sprite->data[0]];
|
||||
struct EventObject *eventObj = &gEventObjects[linkPlayerEventObj->eventObjId];
|
||||
sprite->pos1.x = eventObj->initialCoords.x;
|
||||
sprite->pos1.y = eventObj->initialCoords.y;
|
||||
SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
|
||||
sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
|
||||
|
||||
if (!linkPlayerMapObj->mode)
|
||||
StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
|
||||
if (!linkPlayerEventObj->mode)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
|
||||
else
|
||||
StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
|
||||
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
|
||||
|
||||
sub_80979D4(sprite, 0);
|
||||
if (mapObj->mapobj_bit_2)
|
||||
UpdateEventObjectSpriteVisibility(sprite, 0);
|
||||
if (eventObj->triggerGroundEffectsOnMove)
|
||||
{
|
||||
sprite->invisible = ((sprite->data[7] & 4) >> 2);
|
||||
sprite->data[7]++;
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
#include "decoration.h"
|
||||
#include "event_scripts.h"
|
||||
#include "field_fadetransition.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_screen.h"
|
||||
#include "field_weather.h"
|
||||
#include "international_string_util.h"
|
||||
@@ -903,7 +903,7 @@ static void sub_816BEF0(s32 id)
|
||||
static void ItemStorage_StartScrollIndicator(void)
|
||||
{
|
||||
if(playerPCItemPageInfo.scrollIndicatorId == 0xFF)
|
||||
playerPCItemPageInfo.scrollIndicatorId = AddScrollIndicatorArrowPairParametrized(0x2, 0xB0, 0xC, 0x94, playerPCItemPageInfo.count - playerPCItemPageInfo.pageItems, 0x13F8, 0x13F8, &(playerPCItemPageInfo.itemsAbove));
|
||||
playerPCItemPageInfo.scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xB0, 0xC, 0x94, playerPCItemPageInfo.count - playerPCItemPageInfo.pageItems, 0x13F8, 0x13F8, &(playerPCItemPageInfo.itemsAbove));
|
||||
}
|
||||
|
||||
static void ItemStorage_RemoveScrollIndicator(void)
|
||||
@@ -1116,7 +1116,7 @@ static void ItemStorage_ItemSwapChoosePrompt(u8 taskId)
|
||||
s16 *data;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
sub_81AF15C(data[5], 16, 1);
|
||||
ListMenuSetUnkIndicatorsStructField(data[5], 16, 1);
|
||||
gUnknown_0203BCC4->unk666 = (playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos);
|
||||
sub_816BFB8(data[5], 0, 0);
|
||||
sub_816C690(gUnknown_0203BCC4->unk666);
|
||||
|
||||
+3
-3
@@ -665,7 +665,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
gTasks[taskId].tCryTaskState = wantedCry + 1;
|
||||
break;
|
||||
case 1:
|
||||
if (ShouldPlayNormalPokeCry(mon) == TRUE)
|
||||
if (ShouldPlayNormalMonCry(mon) == TRUE)
|
||||
PlayCry3(species, pan, 0);
|
||||
else
|
||||
PlayCry3(species, pan, 11);
|
||||
@@ -680,7 +680,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
case 20:
|
||||
if (gTasks[taskId].tCryTaskFrames == 0)
|
||||
{
|
||||
if (ShouldPlayNormalPokeCry(mon) == TRUE)
|
||||
if (ShouldPlayNormalMonCry(mon) == TRUE)
|
||||
PlayCry4(species, pan, 1);
|
||||
else
|
||||
PlayCry4(species, pan, 12);
|
||||
@@ -719,7 +719,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
gTasks[taskId].tCryTaskFrames--;
|
||||
break;
|
||||
}
|
||||
if (ShouldPlayNormalPokeCry(mon) == TRUE)
|
||||
if (ShouldPlayNormalMonCry(mon) == TRUE)
|
||||
PlayCry4(species, pan, 0);
|
||||
else
|
||||
PlayCry4(species, pan, 11);
|
||||
|
||||
+10
-11
@@ -3,6 +3,7 @@
|
||||
#include "bg.h"
|
||||
#include "strings.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "menu.h"
|
||||
#include "task.h"
|
||||
#include "menu_helpers.h"
|
||||
@@ -75,8 +76,6 @@ extern const u16 gUnknown_0860F074[];
|
||||
|
||||
extern void CB2_ReturnToField(void);
|
||||
extern bool8 sub_81221EC(void);
|
||||
extern void sub_809882C(u8, u16, u8);
|
||||
extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
|
||||
extern void sub_80AF168(void);
|
||||
|
||||
// this file's functions
|
||||
@@ -315,19 +314,19 @@ static const struct ListMenuTemplate sPokeblockListMenuTemplate =
|
||||
{
|
||||
.items = NULL,
|
||||
.moveCursorFunc = MovePokeblockMenuCursor,
|
||||
.unk_08 = NULL,
|
||||
.itemPrintFunc = NULL,
|
||||
.totalItems = 0,
|
||||
.maxShowed = 0,
|
||||
.windowId = 1,
|
||||
.unk_11 = 0,
|
||||
.unk_12 = 1,
|
||||
.header_X = 0,
|
||||
.item_X = 1,
|
||||
.cursor_X = 0,
|
||||
.upText_Y = 1,
|
||||
.cursorPal = 2,
|
||||
.fillValue = 0,
|
||||
.cursorShadowPal = 3,
|
||||
.lettersSpacing = 0,
|
||||
.unk_16_3 = 0,
|
||||
.itemVerticalPadding = 0,
|
||||
.scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
|
||||
.fontId = 1,
|
||||
.cursorKind = 1
|
||||
@@ -492,7 +491,7 @@ static bool8 InitPokeblockMenu(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 18:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -566,8 +565,8 @@ static void HandleInitWindows(void)
|
||||
|
||||
InitWindows(sWindowTemplatesForPokeblockMenu);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 1, 0xE0);
|
||||
copy_textbox_border_tile_patterns_to_vram(0, 0xA, 0xD0);
|
||||
LoadUserWindowBorderGfx(0, 1, 0xE0);
|
||||
LoadMessageBoxGfx(0, 0xA, 0xD0);
|
||||
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++)
|
||||
@@ -807,7 +806,7 @@ static void sub_81363BC(void)
|
||||
{
|
||||
if (sPokeblockMenu->unkTaskId == 0xFF)
|
||||
{
|
||||
sPokeblockMenu->unkTaskId = AddScrollIndicatorArrowPairParametrized(2, 0xB0, 8, 0x98, sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed,
|
||||
sPokeblockMenu->unkTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xB0, 8, 0x98, sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed,
|
||||
0x456, 0x456, &sSavedPokeblockData.lastItemPage);
|
||||
}
|
||||
}
|
||||
@@ -855,7 +854,7 @@ static void sub_8136470(struct Sprite *sprite)
|
||||
|
||||
static void FadePaletteAndSetTaskToClosePokeblockCase(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_FreeDataAndExitPokeblockCase;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "sound.h"
|
||||
#include "trig.h"
|
||||
#include "graphics.h"
|
||||
#include "text_window.h"
|
||||
#include "battle.h" // to get rid of once gMonSpritesGfxPtr is put elsewhere
|
||||
|
||||
struct PokeblockFeedStruct
|
||||
@@ -58,8 +59,6 @@ extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
extern const u16 gUnknown_0860F074[];
|
||||
|
||||
extern bool8 sub_81221EC(void);
|
||||
extern void sub_806A068(u16, u8);
|
||||
extern void sub_809882C(u8, u16, u8);
|
||||
|
||||
// this file's functions
|
||||
static void HandleInitBackgrounds(void);
|
||||
@@ -597,7 +596,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 13:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -661,7 +660,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
|
||||
palette = GetMonSpritePalStructFromOtIdPersonality(species, trainerId, personality);
|
||||
|
||||
LoadCompressedObjectPalette(palette);
|
||||
sub_806A068(palette->tag, 1);
|
||||
SetMultiuseSpriteTemplateToPokemon(palette->tag, 1);
|
||||
sPokeblockFeed->loadGfxState++;
|
||||
break;
|
||||
case 2:
|
||||
@@ -706,7 +705,7 @@ static void HandleInitWindows(void)
|
||||
{
|
||||
InitWindows(sWindowTemplates);
|
||||
DeactivateAllTextPrinters();
|
||||
sub_809882C(0, 1, 0xE0);
|
||||
LoadUserWindowBorderGfx(0, 1, 0xE0);
|
||||
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
|
||||
FillWindowPixelBuffer(0, 0);
|
||||
PutWindowTilemap(0);
|
||||
@@ -811,7 +810,7 @@ static void Task_ReturnAfterPaletteFade(u8 taskId)
|
||||
|
||||
static void Task_PaletteFadeToReturn(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_ReturnAfterPaletteFade;
|
||||
}
|
||||
|
||||
@@ -827,7 +826,7 @@ static void Task_PaletteFadeToReturn(u8 taskId)
|
||||
static u8 CreateMonSprite(struct Pokemon* mon)
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES2);
|
||||
u8 spriteId = CreateSprite(&gUnknown_0202499C, 48, 80, 2);
|
||||
u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 48, 80, 2);
|
||||
|
||||
sPokeblockFeed->species = species;
|
||||
sPokeblockFeed->monSpriteId_ = spriteId;
|
||||
|
||||
+66
-66
@@ -1630,14 +1630,14 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80BCE2C(u8 a, u8 b, const u8* str, u8 c, u8 d)
|
||||
void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
|
||||
{
|
||||
u8 sp14[3];
|
||||
u8 color[3];
|
||||
|
||||
sp14[0] = 0;
|
||||
sp14[1] = 15;
|
||||
sp14[2] = 3;
|
||||
AddTextPrinterParameterized2(a, b, c * 8, (d * 8) + 1, 0, 0, sp14, -1, str);
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
AddTextPrinterParameterized2(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
void sub_80BCE84(u8 a, u16 b, u16 c)
|
||||
@@ -1727,7 +1727,7 @@ void sub_80BCE84(u8 a, u16 b, u16 c)
|
||||
CopyWindowToVram(0, 2);
|
||||
}
|
||||
|
||||
void sub_80BD154(u16 a, u8 b, u8 c, u16 unused)
|
||||
void sub_80BD154(u16 a, u8 left, u8 top, u16 unused)
|
||||
{
|
||||
u8 text[6];
|
||||
u16 r6;
|
||||
@@ -1739,18 +1739,18 @@ void sub_80BD154(u16 a, u8 b, u8 c, u16 unused)
|
||||
text[2] = CHAR_0 + r6 / 100;
|
||||
text[3] = CHAR_0 + (r6 % 100) / 10;
|
||||
text[4] = CHAR_0 + (r6 % 100) % 10;
|
||||
sub_80BCE2C(0, 7, text, b, c);
|
||||
sub_80BCE2C(0, 7, text, left, top);
|
||||
}
|
||||
|
||||
void sub_80BD1F4(u16 a, u8 b, u8 c, u16 unused)
|
||||
void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
|
||||
{
|
||||
if (a)
|
||||
BlitBitmapToWindow(0, gUnknown_0855D2BE, b * 8, c * 8, 8, 16);
|
||||
BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16);
|
||||
else
|
||||
FillWindowPixelRect(0, 0, b * 8, c * 8, 8, 16);
|
||||
FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16);
|
||||
}
|
||||
|
||||
u8 sub_80BD23C(u16 num, u8 b, u8 c)
|
||||
u8 sub_80BD23C(u16 num, u8 left, u8 top)
|
||||
{
|
||||
const u8* str;
|
||||
|
||||
@@ -1759,13 +1759,13 @@ u8 sub_80BD23C(u16 num, u8 b, u8 c)
|
||||
str = gSpeciesNames[num];
|
||||
else
|
||||
str = sText_TenDashes;
|
||||
sub_80BCE2C(0, 7, str, b, c);
|
||||
sub_80BCE2C(0, 7, str, left, top);
|
||||
return StringLength(str);
|
||||
}
|
||||
|
||||
void sub_80BD28C(u8 a, u8 b, u16 unused)
|
||||
void sub_80BD28C(u8 x, u8 y, u16 unused)
|
||||
{
|
||||
FillWindowPixelRect(0, 0, a * 8, b * 8, 0x60, 16);
|
||||
FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16);
|
||||
}
|
||||
|
||||
void sub_80BD2B4(u16 a, u16 b)
|
||||
@@ -1803,7 +1803,7 @@ void sub_80BD2B4(u16 a, u16 b)
|
||||
gSprites[spriteId].callback = sub_80BE4E0;
|
||||
gSprites[spriteId].data[5] = 32;
|
||||
}
|
||||
|
||||
|
||||
sub_80BCE84(0, a, b);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
|
||||
|
||||
@@ -2047,7 +2047,7 @@ u16 sub_80BDA8C(u16 a1)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 sub_80BDACC(u16 a, s16 b, s16 c)
|
||||
u32 sub_80BDACC(u16 num, s16 x, s16 y)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
@@ -2055,13 +2055,13 @@ u32 sub_80BDACC(u16 a, s16 b, s16 c)
|
||||
{
|
||||
if (gUnknown_02039B4C->unk61E[i] == 0xFFFF)
|
||||
{
|
||||
u8 spriteId = sub_80C0E9C(a, b, c, i);
|
||||
u8 spriteId = sub_80C0E9C(num, x, y, i);
|
||||
|
||||
gSprites[spriteId].oam.affineMode = 1;
|
||||
gSprites[spriteId].oam.priority = 3;
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
gSprites[spriteId].data[1] = i;
|
||||
gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(a);
|
||||
gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num);
|
||||
gUnknown_02039B4C->unk61E[i] = spriteId;
|
||||
return spriteId;
|
||||
}
|
||||
@@ -2443,14 +2443,14 @@ void sub_80BE834(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80BE8DC(const u8* a, u8 b, u8 c)
|
||||
void sub_80BE8DC(const u8* str, u8 left, u8 top)
|
||||
{
|
||||
u8 sp14[3];
|
||||
sp14[0] = 0;
|
||||
sp14[1] = 15;
|
||||
sp14[2] = 3;
|
||||
u8 color[3];
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
|
||||
AddTextPrinterParameterized2(0, 1, b, c, 0, 0, sp14, -1, a);
|
||||
AddTextPrinterParameterized2(0, 1, left, top, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
u8 sub_80BE91C(struct PokedexListItem* item, u8 b)
|
||||
@@ -3464,7 +3464,7 @@ void sub_80C01CC(struct Sprite *sprite)
|
||||
sprite->pos1.y -= 1;
|
||||
}
|
||||
|
||||
void sub_80C020C(u32 num, u32 b, u32 c, u32 d)
|
||||
void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
|
||||
{
|
||||
u8 str[0x10];
|
||||
u8 str2[0x20];
|
||||
@@ -3475,11 +3475,11 @@ void sub_80C020C(u32 num, u32 b, u32 c, u32 d)
|
||||
|
||||
if (d)
|
||||
sub_80BE8DC(gText_PokedexRegistration, GetStringCenterAlignXOffset(1, gText_PokedexRegistration, 0xF0), 0);
|
||||
if (b == 0)
|
||||
b = NationalToHoennOrder(num);
|
||||
if (value == 0)
|
||||
value = NationalToHoennOrder(num);
|
||||
else
|
||||
b = num;
|
||||
ConvertIntToDecimalStringN(StringCopy(str, gText_UnkCtrlF908Clear01), b, 2, 3);
|
||||
value = num;
|
||||
ConvertIntToDecimalStringN(StringCopy(str, gText_UnkCtrlF908Clear01), value, 2, 3);
|
||||
sub_80BE8DC(str, 0x60, 0x19);
|
||||
natNum = NationalPokedexNumToSpecies(num);
|
||||
if (natNum)
|
||||
@@ -4058,17 +4058,17 @@ void sub_80C09B0(u16 a)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80C0A88(u8 a, const u8 *b, u8 c, u8 d)
|
||||
void sub_80C0A88(u8 windowId, const u8 *str, u8 left, u8 top)
|
||||
{
|
||||
u8 sp14[3];
|
||||
sp14[0] = 0;
|
||||
sp14[1] = 15;
|
||||
sp14[2] = 3;
|
||||
u8 color[3];
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 3;
|
||||
|
||||
AddTextPrinterParameterized2(a, 1, c, d, 0, 0, sp14, -1, b);
|
||||
AddTextPrinterParameterized2(windowId, 1, left, top, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
void sub_80C0AC4(u8 a, u16 order, u8 b, u8 c)
|
||||
void sub_80C0AC4(u8 windowId, u16 order, u8 left, u8 top)
|
||||
{
|
||||
u8 str[4];
|
||||
|
||||
@@ -4076,10 +4076,10 @@ void sub_80C0AC4(u8 a, u16 order, u8 b, u8 c)
|
||||
str[1] = CHAR_0 + (order % 100) / 10;
|
||||
str[2] = CHAR_0 + (order % 100) % 10;
|
||||
str[3] = EOS;
|
||||
sub_80C0A88(a, str, b, c);
|
||||
sub_80C0A88(windowId, str, left, top);
|
||||
}
|
||||
|
||||
u8 sub_80C0B44(u8 a, u16 num, u8 b, u8 c)
|
||||
u8 sub_80C0B44(u8 windowId, u16 num, u8 left, u8 top)
|
||||
{
|
||||
u8 str[11];
|
||||
u8 i;
|
||||
@@ -4098,11 +4098,11 @@ u8 sub_80C0B44(u8 a, u16 num, u8 b, u8 c)
|
||||
str[i] = CHAR_HYPHEN;
|
||||
break;
|
||||
}
|
||||
sub_80C0A88(a, str, b, c);
|
||||
sub_80C0A88(windowId, str, left, top);
|
||||
return i;
|
||||
}
|
||||
|
||||
void sub_80C0BF0(u8 a, const u8* str, u8 b, u8 c)
|
||||
void sub_80C0BF0(u8 windowId, const u8* str, u8 left, u8 top)
|
||||
{
|
||||
u8 str2[11];
|
||||
u8 i;
|
||||
@@ -4115,10 +4115,10 @@ void sub_80C0BF0(u8 a, const u8* str, u8 b, u8 c)
|
||||
for (i = 0; i < count; i++)
|
||||
str2[11 - count + i] = str[i];
|
||||
str2[11] = EOS;
|
||||
sub_80C0A88(a, str2, b, c);
|
||||
sub_80C0A88(windowId, str2, left, top);
|
||||
}
|
||||
|
||||
void sub_80C0C6C(u8 a, u16 b, u8 left, u8 top)
|
||||
void sub_80C0C6C(u8 windowId, u16 b, u8 left, u8 top)
|
||||
{
|
||||
u8 str[6];
|
||||
bool8 outputted = FALSE;
|
||||
@@ -4152,10 +4152,10 @@ void sub_80C0C6C(u8 a, u16 b, u8 left, u8 top)
|
||||
str[3] = CHAR_PERIOD;
|
||||
str[4] = CHAR_0 + ((b % 1000) % 100) % 10;
|
||||
str[5] = EOS;
|
||||
sub_80C0A88(a, str, left, top);
|
||||
sub_80C0A88(windowId, str, left, top);
|
||||
}
|
||||
|
||||
void sub_80C0D30(u8 a0, u16 a1)
|
||||
void sub_80C0D30(u8 windowId, u16 a1)
|
||||
{
|
||||
u8 image[32 * 4];
|
||||
const u8 * r12 = gMonFootprintTable[NationalPokedexNumToSpecies(a1)];
|
||||
@@ -4175,7 +4175,7 @@ void sub_80C0D30(u8 a0, u16 a1)
|
||||
r5++;
|
||||
}
|
||||
}
|
||||
CopyToWindowPixelBuffer(a0, image, sizeof(image), 0);
|
||||
CopyToWindowPixelBuffer(windowId, image, sizeof(image), 0);
|
||||
}
|
||||
|
||||
void sub_80C0DC0(u16 a, u16 b)
|
||||
@@ -4229,25 +4229,25 @@ u32 sub_80C0E68(u16 a)
|
||||
}
|
||||
}
|
||||
|
||||
u16 sub_80C0E9C(u16 num, s16 a, s16 b, u16 c)
|
||||
u16 sub_80C0E9C(u16 num, s16 x, s16 y, u16 paletteSlot)
|
||||
{
|
||||
num = NationalPokedexNumToSpecies(num);
|
||||
return sub_818D7D8(num, 8, sub_80C0E68(num), 1, a, b, c, -1);
|
||||
return sub_818D7D8(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
}
|
||||
|
||||
u16 sub_80C0EF8(u16 a, s16 b, s16 c, s8 d)
|
||||
u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot)
|
||||
{
|
||||
return sub_818D8AC(a, 1, b, c, d, -1);
|
||||
return sub_818D8AC(species, TRUE, x, y, paletteSlot, 0xFFFF);
|
||||
}
|
||||
|
||||
int sub_80C0F30(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
|
||||
int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
|
||||
{
|
||||
u16 species;
|
||||
u16 i;
|
||||
u16 resultsCount;
|
||||
u8 types[2];
|
||||
|
||||
sub_80BC8D4(a, b);
|
||||
sub_80BC8D4(dexMode, sortMode);
|
||||
|
||||
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
|
||||
{
|
||||
@@ -4361,19 +4361,19 @@ u8 sub_80C1258(void)
|
||||
return CreateTask(sub_80C12E0, 0);
|
||||
}
|
||||
|
||||
void sub_80C1270(const u8 *str, u32 a, u32 b)
|
||||
void sub_80C1270(const u8 *str, u32 left, u32 top)
|
||||
{
|
||||
u8 sp14[3];
|
||||
u8 color[3];
|
||||
|
||||
sp14[0] = 0;
|
||||
sp14[1] = 15;
|
||||
sp14[2] = 2;
|
||||
AddTextPrinterParameterized2(0, 1, a, b, 0, 0, sp14, -1, str);
|
||||
color[0] = 0;
|
||||
color[1] = 15;
|
||||
color[2] = 2;
|
||||
AddTextPrinterParameterized2(0, 1, left, top, 0, 0, color, -1, str);
|
||||
}
|
||||
|
||||
void sub_80C12B0(u32 a, u32 b, u32 c, u32 d)
|
||||
void sub_80C12B0(u32 x, u32 y, u32 width, u32 height)
|
||||
{
|
||||
FillWindowPixelRect(0, 0, a, b, c, d);
|
||||
FillWindowPixelRect(0, 0, x, y, width, height);
|
||||
}
|
||||
|
||||
void sub_80C12E0(u8 taskId)
|
||||
@@ -5211,19 +5211,19 @@ void sub_80C2618(const u8* str)
|
||||
sub_80C1270(str, 8, 0x79);
|
||||
}
|
||||
|
||||
void sub_80C2638(u32 a)
|
||||
void sub_80C2638(u32 y)
|
||||
{
|
||||
sub_80C12B0(0x90, a * 16 + 8, 8, 16);
|
||||
sub_80C12B0(0x90, y * 16 + 8, 8, 16);
|
||||
}
|
||||
|
||||
void sub_80C2650(u32 a)
|
||||
void sub_80C2650(u32 left)
|
||||
{
|
||||
sub_80C1270(gText_SelectorArrow, 0x90, a * 16 + 9);
|
||||
sub_80C1270(gText_SelectorArrow, 0x90, left * 16 + 9);
|
||||
}
|
||||
|
||||
void sub_80C2668(u32 a, const u8* str)
|
||||
void sub_80C2668(u32 left, const u8* str)
|
||||
{
|
||||
sub_80C1270(str, 0x98, a * 16 + 9);
|
||||
sub_80C1270(str, 0x98, left * 16 + 9);
|
||||
}
|
||||
|
||||
void sub_80C267C(void)
|
||||
|
||||
+79
-76
@@ -63,7 +63,7 @@ extern const struct SpriteFrameImage gUnknown_082FF4F8[];
|
||||
extern const struct SpriteFrameImage gUnknown_082FF518[];
|
||||
extern const union AffineAnimCmd *const gUnknown_082FF618[];
|
||||
extern const union AffineAnimCmd *const gUnknown_082FF694[];
|
||||
extern const union AnimCmd *gUnknown_082FF70C[];
|
||||
extern const union AnimCmd *gPlayerMonSpriteAnimsTable[];
|
||||
extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[];
|
||||
extern const union AnimCmd *const *const gUnknown_08305D0C[];
|
||||
extern const union AnimCmd *const *const gUnknown_0830536C[];
|
||||
@@ -105,7 +105,7 @@ EWRAM_DATA u8 gPlayerPartyCount = 0;
|
||||
EWRAM_DATA u8 gEnemyPartyCount = 0;
|
||||
EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA struct SpriteTemplate gUnknown_0202499C = {0};
|
||||
EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0};
|
||||
EWRAM_DATA struct Unknown_806F160_Struct *gUnknown_020249B4[2] = {NULL};
|
||||
|
||||
// const rom data
|
||||
@@ -1575,8 +1575,8 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv
|
||||
u8 language;
|
||||
u8 value;
|
||||
|
||||
if (gSaveBlock2Ptr->frontierChosenLvl != 0)
|
||||
level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontierChosenLvl);
|
||||
if (gSaveBlock2Ptr->frontier.chosenLvl != 0)
|
||||
level = BattleFrontierGetOpponentLvl(gSaveBlock2Ptr->frontier.chosenLvl);
|
||||
else if (lvl50)
|
||||
level = 50;
|
||||
else
|
||||
@@ -1964,11 +1964,11 @@ void CalculateMonStats(struct Pokemon *mon)
|
||||
|
||||
SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP);
|
||||
|
||||
CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK)
|
||||
CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF)
|
||||
CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED)
|
||||
CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK)
|
||||
CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF)
|
||||
CALC_STAT(baseAttack, attackIV, attackEV, STAT_ATK, MON_DATA_ATK)
|
||||
CALC_STAT(baseDefense, defenseIV, defenseEV, STAT_DEF, MON_DATA_DEF)
|
||||
CALC_STAT(baseSpeed, speedIV, speedEV, STAT_SPEED, MON_DATA_SPEED)
|
||||
CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, STAT_SPATK, MON_DATA_SPATK)
|
||||
CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, STAT_SPDEF, MON_DATA_SPDEF)
|
||||
|
||||
if (species == SPECIES_SHEDINJA)
|
||||
{
|
||||
@@ -2265,7 +2265,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (attackerHoldEffect == sHoldEffectToType[i][0]
|
||||
&& type == sHoldEffectToType[i][1])
|
||||
{
|
||||
if (type <= 8)
|
||||
if (IS_TYPE_PHYSICAL(type))
|
||||
attack = (attack * (attackerHoldEffectParam + 100)) / 100;
|
||||
else
|
||||
spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100;
|
||||
@@ -2293,9 +2293,9 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
spAttack /= 2;
|
||||
if (attacker->ability == ABILITY_HUSTLE)
|
||||
attack = (150 * attack) / 100;
|
||||
if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MINUS, 0, 0))
|
||||
if (attacker->ability == ABILITY_PLUS && ABILITY_ON_FIELD2(ABILITY_MINUS))
|
||||
spAttack = (150 * spAttack) / 100;
|
||||
if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_PLUS, 0, 0))
|
||||
if (attacker->ability == ABILITY_MINUS && ABILITY_ON_FIELD2(ABILITY_PLUS))
|
||||
spAttack = (150 * spAttack) / 100;
|
||||
if (attacker->ability == ABILITY_GUTS && attacker->status1)
|
||||
attack = (150 * attack) / 100;
|
||||
@@ -2316,7 +2316,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
|
||||
defense /= 2;
|
||||
|
||||
if (type < TYPE_MYSTERY) // is physical
|
||||
if (IS_TYPE_PHYSICAL(type))
|
||||
{
|
||||
if (gCritMultiplier == 2)
|
||||
{
|
||||
@@ -2366,7 +2366,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (type == TYPE_MYSTERY)
|
||||
damage = 0; // is ??? type. does 0 damage.
|
||||
|
||||
if (type > TYPE_MYSTERY) // is special?
|
||||
if (IS_TYPE_SPECIAL(type))
|
||||
{
|
||||
if (gCritMultiplier == 2)
|
||||
{
|
||||
@@ -2406,8 +2406,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
damage /= 2;
|
||||
|
||||
// are effects of weather negated with cloud nine or air lock
|
||||
if (!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0)
|
||||
&& !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))
|
||||
if (WEATHER_HAS_EFFECT2)
|
||||
{
|
||||
if (gBattleWeather & WEATHER_RAIN_TEMPORARY)
|
||||
{
|
||||
@@ -2486,13 +2485,14 @@ static bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId)
|
||||
{
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
|
||||
return FALSE;
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
return FALSE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
|
||||
return FALSE;
|
||||
if (FlagGet(badgeFlag))
|
||||
else if (FlagGet(badgeFlag))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 GetDefaultMoveTarget(u8 battlerId)
|
||||
@@ -2561,53 +2561,53 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
|
||||
return MON_MALE;
|
||||
}
|
||||
|
||||
void sub_806A068(u16 species, u8 battlerPosition)
|
||||
void SetMultiuseSpriteTemplateToPokemon(u16 species, u8 battlerPosition)
|
||||
{
|
||||
if (gMonSpritesGfxPtr != NULL)
|
||||
gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
else if (gUnknown_020249B4[0])
|
||||
gUnknown_0202499C = gUnknown_020249B4[0]->templates[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gUnknown_020249B4[0]->templates[battlerPosition];
|
||||
else if (gUnknown_020249B4[1])
|
||||
gUnknown_0202499C = gUnknown_020249B4[1]->templates[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gUnknown_020249B4[1]->templates[battlerPosition];
|
||||
else
|
||||
gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gUnknown_08329D98[battlerPosition];
|
||||
|
||||
gUnknown_0202499C.paletteTag = species;
|
||||
if (battlerPosition == 0 || battlerPosition == 2)
|
||||
gUnknown_0202499C.anims = gUnknown_082FF70C;
|
||||
gMultiuseSpriteTemplate.paletteTag = species;
|
||||
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
|
||||
gMultiuseSpriteTemplate.anims = gPlayerMonSpriteAnimsTable;
|
||||
else if (species > 500)
|
||||
gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
|
||||
gMultiuseSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
|
||||
else
|
||||
gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species];
|
||||
gMultiuseSpriteTemplate.anims = gMonAnimationsSpriteAnimsPtrTable[species];
|
||||
}
|
||||
|
||||
void sub_806A12C(u16 trainerSpriteId, u8 battlerPosition)
|
||||
void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition)
|
||||
{
|
||||
gUnknown_0202499C.paletteTag = trainerSpriteId;
|
||||
gMultiuseSpriteTemplate.paletteTag = trainerSpriteId;
|
||||
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
|
||||
{
|
||||
gUnknown_0202499C = gUnknown_08329DF8[trainerSpriteId];
|
||||
gUnknown_0202499C.anims = gUnknown_08305D0C[trainerSpriteId];
|
||||
gMultiuseSpriteTemplate = gUnknown_08329DF8[trainerSpriteId];
|
||||
gMultiuseSpriteTemplate.anims = gUnknown_08305D0C[trainerSpriteId];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gMonSpritesGfxPtr != NULL)
|
||||
gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
else
|
||||
gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
|
||||
gUnknown_0202499C.anims = gUnknown_0830536C[trainerSpriteId];
|
||||
gMultiuseSpriteTemplate = gUnknown_08329D98[battlerPosition];
|
||||
gMultiuseSpriteTemplate.anims = gUnknown_0830536C[trainerSpriteId];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A1C0(u16 arg0, u8 battlerPosition)
|
||||
void SetMultiuseSpriteTemplateToTrainerFront(u16 arg0, u8 battlerPosition)
|
||||
{
|
||||
if (gMonSpritesGfxPtr != NULL)
|
||||
gUnknown_0202499C = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition];
|
||||
else
|
||||
gUnknown_0202499C = gUnknown_08329D98[battlerPosition];
|
||||
gMultiuseSpriteTemplate = gUnknown_08329D98[battlerPosition];
|
||||
|
||||
gUnknown_0202499C.paletteTag = arg0;
|
||||
gUnknown_0202499C.anims = gUnknown_0830536C[arg0];
|
||||
gMultiuseSpriteTemplate.paletteTag = arg0;
|
||||
gMultiuseSpriteTemplate.anims = gUnknown_0830536C[arg0];
|
||||
}
|
||||
|
||||
static void EncryptBoxMon(struct BoxPokemon *boxMon)
|
||||
@@ -3136,7 +3136,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
|
||||
|
||||
void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg)
|
||||
{
|
||||
const u8* data = dataArg;
|
||||
const u8 *data = dataArg;
|
||||
|
||||
switch (field)
|
||||
{
|
||||
case MON_DATA_STATUS:
|
||||
@@ -3179,7 +3180,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg)
|
||||
|
||||
void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
|
||||
{
|
||||
const u8* data = dataArg;
|
||||
const u8 *data = dataArg;
|
||||
|
||||
struct PokemonSubstruct0 *substruct0 = NULL;
|
||||
struct PokemonSubstruct1 *substruct1 = NULL;
|
||||
@@ -4511,8 +4512,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
else
|
||||
holdEffect = ItemId_GetHoldEffect(heldItem);
|
||||
|
||||
if (holdEffect == 38 && type != 3)
|
||||
return 0;
|
||||
if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && type != 3)
|
||||
return SPECIES_NONE;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
@@ -4520,7 +4521,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
level = GetMonData(mon, MON_DATA_LEVEL, 0);
|
||||
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
for (i = 0; i < EVOS_PER_MON; i++)
|
||||
{
|
||||
switch (gEvolutionTable[species][i].method)
|
||||
{
|
||||
@@ -4577,7 +4578,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < 5; i++)
|
||||
for (i = 0; i < EVOS_PER_MON; i++)
|
||||
{
|
||||
switch (gEvolutionTable[species][i].method)
|
||||
{
|
||||
@@ -4597,7 +4598,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
for (i = 0; i < 5; i++)
|
||||
for (i = 0; i < EVOS_PER_MON; i++)
|
||||
{
|
||||
if (gEvolutionTable[species][i].method == EVO_ITEM
|
||||
&& gEvolutionTable[species][i].param == evolutionItem)
|
||||
@@ -4819,21 +4820,21 @@ bool8 sub_806D7EC(void)
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool16 sub_806D82C(u8 id)
|
||||
u16 GetLinkTrainerFlankId(u8 linkPlayerId)
|
||||
{
|
||||
bool16 retVal = FALSE;
|
||||
switch (gLinkPlayers[id].id)
|
||||
u16 flankId = 0;
|
||||
switch (gLinkPlayers[linkPlayerId].id)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
retVal = FALSE;
|
||||
flankId = 0;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
retVal = TRUE;
|
||||
flankId = 1;
|
||||
break;
|
||||
}
|
||||
return retVal;
|
||||
return flankId;
|
||||
}
|
||||
|
||||
s32 GetBattlerMultiplayerId(u16 a1)
|
||||
@@ -4849,16 +4850,17 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
|
||||
{
|
||||
if (InBattlePyramid())
|
||||
return GetTrainerEncounterMusicIdInBattlePyramind(trainerOpponentId);
|
||||
if (sub_81D5C18())
|
||||
else if (sub_81D5C18())
|
||||
return sub_81D63C8(trainerOpponentId);
|
||||
return TRAINER_ENCOUNTER_MUSIC(trainerOpponentId);
|
||||
else
|
||||
return TRAINER_ENCOUNTER_MUSIC(trainerOpponentId);
|
||||
}
|
||||
|
||||
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
|
||||
{
|
||||
if (statIndex < 1 || statIndex > 5)
|
||||
{
|
||||
// should just be "return n", but it wouldn't match without this
|
||||
// Should just be "return n", but it wouldn't match without this.
|
||||
u16 retVal = n;
|
||||
retVal++;
|
||||
retVal--;
|
||||
@@ -5165,7 +5167,7 @@ void PartySpreadPokerus(struct Pokemon *party)
|
||||
{
|
||||
if (pokerus & 0xF)
|
||||
{
|
||||
// spread to adjacent party members
|
||||
// Spread to adjacent party members.
|
||||
if (i != 0 && !(GetMonData(&party[i - 1], MON_DATA_POKERUS, 0) & 0xF0))
|
||||
SetMonData(&party[i - 1], MON_DATA_POKERUS, &curPokerus);
|
||||
if (i != (PARTY_SIZE - 1) && !(GetMonData(&party[i + 1], MON_DATA_POKERUS, 0) & 0xF0))
|
||||
@@ -5365,11 +5367,11 @@ u16 GetBattleBGM(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
|
||||
return MUS_BATTLE34;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_REGI)
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_REGI)
|
||||
return MUS_BATTLE36;
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
|
||||
else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
|
||||
return MUS_BATTLE20;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
u8 trainerClass;
|
||||
|
||||
@@ -5414,7 +5416,8 @@ u16 GetBattleBGM(void)
|
||||
return MUS_BATTLE20;
|
||||
}
|
||||
}
|
||||
return MUS_BATTLE27;
|
||||
else
|
||||
return MUS_BATTLE27;
|
||||
}
|
||||
|
||||
void PlayBattleBGM(void)
|
||||
@@ -5578,19 +5581,19 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806E994(void)
|
||||
void SetMonPreventsSwitchingString(void)
|
||||
{
|
||||
gLastUsedAbility = gBattleStruct->field_B0;
|
||||
gLastUsedAbility = gBattleStruct->abilityPreventingSwitchout;
|
||||
|
||||
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
|
||||
gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX;
|
||||
gBattleTextBuff1[2] = gBattleStruct->field_49;
|
||||
gBattleTextBuff1[2] = gBattleStruct->battlerPreventingSwitchout;
|
||||
gBattleTextBuff1[4] = B_BUFF_EOS;
|
||||
|
||||
if (!GetBattlerSide(gBattleStruct->field_49))
|
||||
gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->field_49]);
|
||||
if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER)
|
||||
gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
|
||||
else
|
||||
gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->field_49];
|
||||
gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout];
|
||||
|
||||
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]))
|
||||
|
||||
@@ -5620,7 +5623,7 @@ void SetWildMonHeldItem(void)
|
||||
var1 = 20;
|
||||
var2 = 80;
|
||||
}
|
||||
if (gMapHeader.mapDataId == 0x1A4)
|
||||
if (gMapHeader.mapLayoutId == 0x1A4)
|
||||
{
|
||||
s32 alteringCaveId = GetWildMonTableIdInAlteringCave(species);
|
||||
if (alteringCaveId != 0)
|
||||
@@ -5678,7 +5681,7 @@ const u8 *GetTrainerPartnerName(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||||
{
|
||||
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
|
||||
if (gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
|
||||
{
|
||||
return gTrainers[TRAINER_STEVEN].trainerName;
|
||||
}
|
||||
@@ -5891,15 +5894,15 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
|
||||
|
||||
const u8 *GetTrainerClassNameFromId(u16 trainerId)
|
||||
{
|
||||
if (trainerId > NO_OF_TRAINERS)
|
||||
trainerId = 0;
|
||||
if (trainerId >= TRAINERS_COUNT)
|
||||
trainerId = TRAINER_NONE;
|
||||
return gTrainerClassNames[gTrainers[trainerId].trainerClass];
|
||||
}
|
||||
|
||||
const u8 *GetTrainerNameFromId(u16 trainerId)
|
||||
{
|
||||
if (trainerId > NO_OF_TRAINERS)
|
||||
trainerId = 0;
|
||||
if (trainerId >= TRAINERS_COUNT)
|
||||
trainerId = TRAINER_NONE;
|
||||
return gTrainers[trainerId].trainerName;
|
||||
}
|
||||
|
||||
@@ -5948,7 +5951,7 @@ static void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
|
||||
structPtr->frameImages[i * structPtr->field_0_0 + j].data = &structPtr->byteArrays[i][j * 0x800];
|
||||
}
|
||||
structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->field_0_0];
|
||||
structPtr->templates[i].anims = gUnknown_082FF70C;
|
||||
structPtr->templates[i].anims = gPlayerMonSpriteAnimsTable;
|
||||
structPtr->templates[i].paletteTag = i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -541,7 +541,7 @@ bool8 sub_81BFB10(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 24:
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gPaletteFade.bufferTransferDisabled = 0;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -761,7 +761,7 @@ void sub_81C0434()
|
||||
|
||||
void sub_81C044C(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
gTasks[taskId].func = sub_81C0484;
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -1563,7 +1563,7 @@ static void Task_DuoFightAnim(u8 taskId)
|
||||
}
|
||||
|
||||
BlendPalettes(-1, 0x10, 0);
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
SetVBlankCallback(VBlankCB_DuoFight);
|
||||
PlaySE(SE_T_OOAME);
|
||||
}
|
||||
@@ -1715,7 +1715,7 @@ static void sub_81D752C(u8 taskId)
|
||||
static void DuoFightEnd(u8 taskId, s8 palDelay)
|
||||
{
|
||||
PlaySE(SE_T_OOAME_E);
|
||||
BeginNormalPaletteFade(-1, palDelay, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, palDelay, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_DuoFightEnd;
|
||||
}
|
||||
|
||||
@@ -1971,7 +1971,7 @@ static void Task_HandleRayTakesFlight(u8 taskId)
|
||||
case 0:
|
||||
if (data[1] == 8)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
data[2] = 0;
|
||||
data[3] = 30;
|
||||
data[4] = 0;
|
||||
@@ -2012,7 +2012,7 @@ static void Task_HandleRayTakesFlight(u8 taskId)
|
||||
if (data[1] > 295)
|
||||
{
|
||||
data[0]++;
|
||||
BeginNormalPaletteFade(-1, 6, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 0x10, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2174,7 +2174,7 @@ static void Task_HandleRayDescends(u8 taskId)
|
||||
case 0:
|
||||
if (data[1] == 8)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
data[1] = 0;
|
||||
data[0]++;
|
||||
}
|
||||
@@ -2219,7 +2219,7 @@ static void Task_HandleRayDescends(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_RayDescendsEnd;
|
||||
break;
|
||||
}
|
||||
@@ -2366,7 +2366,7 @@ static void Task_HandleRayCharges(u8 taskId)
|
||||
case 0:
|
||||
if (data[1] == 8)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
data[1] = 0;
|
||||
data[0]++;
|
||||
}
|
||||
@@ -2399,7 +2399,7 @@ static void Task_HandleRayCharges(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_RayChargesEnd;
|
||||
break;
|
||||
}
|
||||
@@ -2532,7 +2532,7 @@ static void Task_HandleRayChasesAway(u8 taskId)
|
||||
if (data[1] == 8)
|
||||
{
|
||||
sub_81D90A8(taskId);
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
|
||||
data[1] = 0;
|
||||
data[0]++;
|
||||
}
|
||||
@@ -2574,7 +2574,7 @@ static void Task_HandleRayChasesAway(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0);
|
||||
gTasks[taskId].func = Task_RayChasesAwayEnd;
|
||||
break;
|
||||
}
|
||||
|
||||
+14
-14
@@ -197,10 +197,10 @@ static void SetSrcLookupPointers(void)
|
||||
sOldManSave = &gSaveBlock1Ptr->oldMan;
|
||||
sEasyChatPairsSave = gSaveBlock1Ptr->easyChatPairs;
|
||||
gUnknown_03001148 = &gUnknown_02039F9C;
|
||||
sBattleTowerSave = &gSaveBlock2Ptr->battleTower;
|
||||
sBattleTowerSave = &gSaveBlock2Ptr->frontier.battleTower;
|
||||
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
|
||||
gUnknown_03001154 = gSaveBlock2Ptr->field_DC;
|
||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->battleTower;
|
||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.battleTower;
|
||||
}
|
||||
|
||||
static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
|
||||
@@ -1625,24 +1625,24 @@ void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
|
||||
{
|
||||
dst->field_120[j].language = GAME_LANGUAGE;
|
||||
CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId);
|
||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->field_EF1[j]);
|
||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||
StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->field_EE1[j]);
|
||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->field_D14[i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->field_DD0[i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->field_E08[i];
|
||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->field_E1E[i];
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
|
||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i];
|
||||
|
||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->field_CFC[i];
|
||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+63
-63
@@ -58,8 +58,8 @@ struct RecordedBattleSave
|
||||
u8 field_4FC;
|
||||
u8 field_4FD;
|
||||
u8 field_4FE;
|
||||
u8 battleStyle : 1;
|
||||
u8 textSpeed : 3;
|
||||
u8 battleStyle:1;
|
||||
u8 textSpeed:3;
|
||||
u32 AI_scripts;
|
||||
u8 field_504[8];
|
||||
u8 field_50C;
|
||||
@@ -79,19 +79,19 @@ EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0};
|
||||
EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0};
|
||||
EWRAM_DATA static u8 sUnknown_0203C7AC = 0;
|
||||
EWRAM_DATA static u8 sUnknown_0203C7AD = 0;
|
||||
EWRAM_DATA static u8 sUnknown_0203C7AE = 0;
|
||||
EWRAM_DATA static u8 sFrontierFacility = 0;
|
||||
EWRAM_DATA static u8 sUnknown_0203C7AF = 0;
|
||||
EWRAM_DATA static MainCallback sCallback2_AfterRecordedBattle = NULL;
|
||||
EWRAM_DATA u8 gUnknown_0203C7B4 = 0;
|
||||
EWRAM_DATA static u8 sUnknown_0203C7B5 = 0;
|
||||
EWRAM_DATA static u8 sRecordedBattle_BattleStyle = 0;
|
||||
EWRAM_DATA static u8 sRecordedBattle_TextSpeed = 0;
|
||||
EWRAM_DATA static u32 sRecordedBattle_BattleFlags = 0;
|
||||
EWRAM_DATA static u32 sRecordedBattle_AI_Scripts = 0;
|
||||
EWRAM_DATA static u8 sBattleStyle = 0;
|
||||
EWRAM_DATA static u8 sTextSpeed = 0;
|
||||
EWRAM_DATA static u32 sBattleFlags = 0;
|
||||
EWRAM_DATA static u32 sAI_Scripts = 0;
|
||||
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static u16 sRecordedBattle_PlayerMonMoves[2][4] = {0};
|
||||
EWRAM_DATA static struct PlayerInfo sRecordedBattle_Players[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA static u16 sPlayerMonMoves[2][4] = {0};
|
||||
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
|
||||
EWRAM_DATA static u8 sUnknown_0203CCD1[8] = {0};
|
||||
EWRAM_DATA static u8 sUnknown_0203CCD9 = 0;
|
||||
@@ -126,8 +126,8 @@ void sub_8184DA4(u8 arg0)
|
||||
{
|
||||
sBattleRecords[i][j] |= 0xFF;
|
||||
}
|
||||
sRecordedBattle_BattleFlags = gBattleTypeFlags;
|
||||
sRecordedBattle_AI_Scripts = gBattleResources->ai->aiFlags;
|
||||
sBattleFlags = gBattleTypeFlags;
|
||||
sAI_Scripts = gBattleResources->ai->aiFlags;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -139,7 +139,7 @@ void sub_8184E58(void)
|
||||
if (sUnknown_0203C7AC == 1)
|
||||
{
|
||||
gRecordedBattleRngSeed = gRngValue;
|
||||
sUnknown_0203C7AE = VarGet(VAR_FRONTIER_FACILITY);
|
||||
sFrontierFacility = VarGet(VAR_FRONTIER_FACILITY);
|
||||
sUnknown_0203C7AF = sub_81A513C();
|
||||
}
|
||||
else if (sUnknown_0203C7AC == 2)
|
||||
@@ -157,37 +157,37 @@ void sub_8184E58(void)
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
sRecordedBattle_Players[i].trainerId = gLinkPlayers[i].trainerId;
|
||||
sRecordedBattle_Players[i].gender = gLinkPlayers[i].gender;
|
||||
sRecordedBattle_Players[i].battlerId = gLinkPlayers[i].id;
|
||||
sRecordedBattle_Players[i].language = gLinkPlayers[i].language;
|
||||
sPlayers[i].trainerId = gLinkPlayers[i].trainerId;
|
||||
sPlayers[i].gender = gLinkPlayers[i].gender;
|
||||
sPlayers[i].battlerId = gLinkPlayers[i].id;
|
||||
sPlayers[i].language = gLinkPlayers[i].language;
|
||||
|
||||
if (i < linkPlayersCount)
|
||||
{
|
||||
StringCopy(text, gLinkPlayers[i].name);
|
||||
StripExtCtrlCodes(text);
|
||||
StringCopy(sRecordedBattle_Players[i].name, text);
|
||||
StringCopy(sPlayers[i].name, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; j < PLAYER_NAME_LENGTH; j++)
|
||||
sRecordedBattle_Players[i].name[j] = gLinkPlayers[i].name[j];
|
||||
sPlayers[i].name[j] = gLinkPlayers[i].name[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sRecordedBattle_Players[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0])
|
||||
sPlayers[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0])
|
||||
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||
|
||||
sRecordedBattle_Players[0].gender = gSaveBlock2Ptr->playerGender;
|
||||
sRecordedBattle_Players[0].battlerId = 0;
|
||||
sRecordedBattle_Players[0].language = gGameLanguage;
|
||||
sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
|
||||
sPlayers[0].battlerId = 0;
|
||||
sPlayers[0].language = gGameLanguage;
|
||||
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
|
||||
sRecordedBattle_Players[0].name[i] = gSaveBlock2Ptr->playerName[i];
|
||||
sPlayers[0].name[i] = gSaveBlock2Ptr->playerName[i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,12 +214,12 @@ void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
|
||||
|
||||
u8 RecordedBattle_GetBattlerAction(u8 battlerId)
|
||||
{
|
||||
// trying to read past array or invalid action byte, battle is over
|
||||
// Trying to read past array or invalid action byte, battle is over.
|
||||
if (sRecordedBytesNo[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == 0xFF)
|
||||
{
|
||||
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
|
||||
ResetPaletteFadeControl();
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
|
||||
SetMainCallback2(CB2_QuitRecordedBattle);
|
||||
return -1;
|
||||
}
|
||||
@@ -345,37 +345,37 @@ u32 MoveRecordedBattleToSaveData(void)
|
||||
{
|
||||
for (j = 0; j < PLAYER_NAME_LENGTH; j++)
|
||||
{
|
||||
battleSave->playersName[i][j] = sRecordedBattle_Players[i].name[j];
|
||||
battleSave->playersName[i][j] = sPlayers[i].name[j];
|
||||
}
|
||||
battleSave->playersGender[i] = sRecordedBattle_Players[i].gender;
|
||||
battleSave->playersLanguage[i] = sRecordedBattle_Players[i].language;
|
||||
battleSave->playersBattlers[i] = sRecordedBattle_Players[i].battlerId;
|
||||
battleSave->playersTrainerId[i] = sRecordedBattle_Players[i].trainerId;
|
||||
battleSave->playersGender[i] = sPlayers[i].gender;
|
||||
battleSave->playersLanguage[i] = sPlayers[i].language;
|
||||
battleSave->playersBattlers[i] = sPlayers[i].battlerId;
|
||||
battleSave->playersTrainerId[i] = sPlayers[i].trainerId;
|
||||
}
|
||||
|
||||
battleSave->rngSeed = gRecordedBattleRngSeed;
|
||||
|
||||
if (sRecordedBattle_BattleFlags & BATTLE_TYPE_LINK)
|
||||
if (sBattleFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
battleSave->battleFlags = (sRecordedBattle_BattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20));
|
||||
battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20));
|
||||
battleSave->battleFlags |= BATTLE_TYPE_x2000000;
|
||||
|
||||
if (sRecordedBattle_BattleFlags & BATTLE_TYPE_WILD)
|
||||
if (sBattleFlags & BATTLE_TYPE_WILD)
|
||||
{
|
||||
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
|
||||
}
|
||||
else if (sRecordedBattle_BattleFlags & BATTLE_TYPE_MULTI)
|
||||
else if (sBattleFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
switch (sRecordedBattle_Players[0].battlerId)
|
||||
switch (sPlayers[0].battlerId)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
if (!(sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
|
||||
if (!(sPlayers[gUnknown_0203C7B4].battlerId & 1))
|
||||
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
if ((sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
|
||||
if ((sPlayers[gUnknown_0203C7B4].battlerId & 1))
|
||||
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
|
||||
break;
|
||||
}
|
||||
@@ -383,7 +383,7 @@ u32 MoveRecordedBattleToSaveData(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
battleSave->battleFlags = sRecordedBattle_BattleFlags;
|
||||
battleSave->battleFlags = sBattleFlags;
|
||||
}
|
||||
|
||||
battleSave->opponentA = gTrainerBattleOpponent_A;
|
||||
@@ -391,11 +391,11 @@ u32 MoveRecordedBattleToSaveData(void)
|
||||
battleSave->partnerId = gPartnerTrainerId;
|
||||
battleSave->field_4FA = gUnknown_0203C7B4;
|
||||
battleSave->field_4FC = gSaveBlock2Ptr->field_CA9_b;
|
||||
battleSave->field_4FD = sUnknown_0203C7AE;
|
||||
battleSave->field_4FD = sFrontierFacility;
|
||||
battleSave->field_4FE = sUnknown_0203C7AF;
|
||||
battleSave->battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
|
||||
battleSave->textSpeed = gSaveBlock2Ptr->optionsTextSpeed;
|
||||
battleSave->AI_scripts = sRecordedBattle_AI_Scripts;
|
||||
battleSave->AI_scripts = sAI_Scripts;
|
||||
|
||||
/* Can't match it without proper knowledge of the Saveblock 2.
|
||||
if (gTrainerBattleOpponent_A >= 300 && gTrainerBattleOpponent_A <= 399)
|
||||
@@ -525,7 +525,7 @@ _0818535E:\n\
|
||||
lsls r3, 3\n\
|
||||
adds r3, r7, r3\n\
|
||||
str r3, [sp, 0x8]\n\
|
||||
ldr r5, =sRecordedBattle_Players\n\
|
||||
ldr r5, =sPlayers\n\
|
||||
mov r8, r6\n\
|
||||
mov r12, r6\n\
|
||||
movs r4, 0x96\n\
|
||||
@@ -536,7 +536,7 @@ _0818535E:\n\
|
||||
adds r4, r7, r0\n\
|
||||
_081853AC:\n\
|
||||
lsls r1, r6, 3\n\
|
||||
ldr r0, =sRecordedBattle_Players\n\
|
||||
ldr r0, =sPlayers\n\
|
||||
adds r0, 0x4\n\
|
||||
mov r3, r8\n\
|
||||
adds r2, r3, r0\n\
|
||||
@@ -578,7 +578,7 @@ _081853BA:\n\
|
||||
ldr r5, =gRecordedBattleRngSeed\n\
|
||||
ldr r0, [r5]\n\
|
||||
str r0, [r1]\n\
|
||||
ldr r0, =sRecordedBattle_BattleFlags\n\
|
||||
ldr r0, =sBattleFlags\n\
|
||||
ldr r2, [r0]\n\
|
||||
movs r0, 0x2\n\
|
||||
ands r0, r2\n\
|
||||
@@ -608,7 +608,7 @@ _08185454:\n\
|
||||
ands r2, r0\n\
|
||||
cmp r2, 0\n\
|
||||
beq _081854E2\n\
|
||||
ldr r2, =sRecordedBattle_Players\n\
|
||||
ldr r2, =sPlayers\n\
|
||||
ldrh r0, [r2, 0xE]\n\
|
||||
cmp r0, 0x1\n\
|
||||
beq _081854A8\n\
|
||||
@@ -630,7 +630,7 @@ _0818547E:\n\
|
||||
lsls r0, r1, 2\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r4, =sRecordedBattle_Players\n\
|
||||
ldr r4, =sPlayers\n\
|
||||
adds r0, r4\n\
|
||||
ldrh r1, [r0, 0xE]\n\
|
||||
movs r0, 0x1\n\
|
||||
@@ -647,7 +647,7 @@ _081854A8:\n\
|
||||
lsls r0, r1, 2\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =sRecordedBattle_Players\n\
|
||||
ldr r1, =sPlayers\n\
|
||||
adds r0, r1\n\
|
||||
ldrh r1, [r0, 0xE]\n\
|
||||
movs r0, 0x1\n\
|
||||
@@ -700,7 +700,7 @@ _081854E2:\n\
|
||||
ldr r5, =0x000004fc\n\
|
||||
adds r1, r7, r5\n\
|
||||
strb r0, [r1]\n\
|
||||
ldr r0, =sUnknown_0203C7AE\n\
|
||||
ldr r0, =sFrontierFacility\n\
|
||||
ldrb r1, [r0]\n\
|
||||
adds r2, 0x3\n\
|
||||
adds r0, r7, r2\n\
|
||||
@@ -735,7 +735,7 @@ _081854E2:\n\
|
||||
movs r2, 0xA0\n\
|
||||
lsls r2, 3\n\
|
||||
adds r1, r7, r2\n\
|
||||
ldr r3, =sRecordedBattle_AI_Scripts\n\
|
||||
ldr r3, =sAI_Scripts\n\
|
||||
ldr r0, [r3]\n\
|
||||
str r0, [r1]\n\
|
||||
ldr r4, =0xfffffed4\n\
|
||||
@@ -1293,7 +1293,7 @@ static bool32 AllocTryCopyRecordedBattleSaveData(struct RecordedBattleSave *dst)
|
||||
|
||||
static void CB2_RecordedBattleEnd(void)
|
||||
{
|
||||
gSaveBlock2Ptr->frontierChosenLvl = sUnknown_0203C7AD;
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = sUnknown_0203C7AD;
|
||||
gBattleOutcome = 0;
|
||||
gBattleTypeFlags = 0;
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
@@ -1353,12 +1353,12 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
gTrainerBattleOpponent_B = src->opponentB;
|
||||
gPartnerTrainerId = src->partnerId;
|
||||
gUnknown_0203C7B4 = src->field_4FA;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontierChosenLvl;
|
||||
sUnknown_0203C7AE = src->field_4FD;
|
||||
sUnknown_0203C7AD = gSaveBlock2Ptr->frontier.chosenLvl;
|
||||
sFrontierFacility = src->field_4FD;
|
||||
sUnknown_0203C7AF = src->field_4FE;
|
||||
sRecordedBattle_BattleStyle = src->battleStyle;
|
||||
sRecordedBattle_TextSpeed = src->textSpeed;
|
||||
sRecordedBattle_AI_Scripts = src->AI_scripts;
|
||||
sBattleStyle = src->battleStyle;
|
||||
sTextSpeed = src->textSpeed;
|
||||
sAI_Scripts = src->AI_scripts;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
@@ -1375,7 +1375,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
|
||||
sUnknown_0203CCDC[i] = src->field_50E[i];
|
||||
}
|
||||
|
||||
gSaveBlock2Ptr->frontierChosenLvl = src->field_4FC;
|
||||
gSaveBlock2Ptr->frontier.chosenLvl = src->field_4FC;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
@@ -1415,9 +1415,9 @@ static void CB2_RecordedBattle(void)
|
||||
RunTasks();
|
||||
}
|
||||
|
||||
u8 sub_8185EA0(void)
|
||||
u8 GetRecordedBattleFrontierFacility(void)
|
||||
{
|
||||
return sUnknown_0203C7AE;
|
||||
return sFrontierFacility;
|
||||
}
|
||||
|
||||
u8 sub_8185EAC(void)
|
||||
@@ -1480,12 +1480,12 @@ u8 sub_8185FAC(void)
|
||||
|
||||
u8 GetBattleStyleInRecordedBattle(void)
|
||||
{
|
||||
return sRecordedBattle_BattleStyle;
|
||||
return sBattleStyle;
|
||||
}
|
||||
|
||||
u8 GetTextSpeedInRecordedBattle(void)
|
||||
{
|
||||
return sRecordedBattle_TextSpeed;
|
||||
return sTextSpeed;
|
||||
}
|
||||
|
||||
void RecordedBattle_CopyBattlerMoves(void)
|
||||
@@ -1501,7 +1501,7 @@ void RecordedBattle_CopyBattlerMoves(void)
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
sRecordedBattle_PlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
|
||||
sPlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1522,7 +1522,7 @@ void sub_818603C(u8 arg0)
|
||||
{
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
if (gBattleMons[battlerId].moves[j] != sRecordedBattle_PlayerMonMoves[battlerId / 2][j])
|
||||
if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
|
||||
break;
|
||||
}
|
||||
if (j != 4) // player's mon's move has been changed
|
||||
@@ -1532,7 +1532,7 @@ void sub_818603C(u8 arg0)
|
||||
{
|
||||
for (k = 0; k < 4; k++)
|
||||
{
|
||||
if (gBattleMons[battlerId].moves[j] == sRecordedBattle_PlayerMonMoves[battlerId / 2][k])
|
||||
if (gBattleMons[battlerId].moves[j] == sPlayerMonMoves[battlerId / 2][k])
|
||||
{
|
||||
RecordedBattle_SetBattlerAction(battlerId, k);
|
||||
break;
|
||||
@@ -1612,7 +1612,7 @@ void sub_818603C(u8 arg0)
|
||||
|
||||
u32 GetAiScriptsInRecordedBattle(void)
|
||||
{
|
||||
return sRecordedBattle_AI_Scripts;
|
||||
return sAI_Scripts;
|
||||
}
|
||||
|
||||
void sub_8186444(void)
|
||||
|
||||
+13
-13
@@ -891,8 +891,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
case 6:
|
||||
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = FALSE;
|
||||
mapWidth = gMapHeader.mapData->width;
|
||||
mapHeight = gMapHeader.mapData->height;
|
||||
mapWidth = gMapHeader.mapLayout->width;
|
||||
mapHeight = gMapHeader.mapLayout->height;
|
||||
x = gSaveBlock1Ptr->pos.x;
|
||||
y = gSaveBlock1Ptr->pos.y;
|
||||
if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
|
||||
@@ -907,8 +907,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp4.x;
|
||||
y = gSaveBlock1Ptr->warp4.y;
|
||||
}
|
||||
@@ -926,8 +926,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
gRegionMap->playerIsInCave = TRUE;
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = gSaveBlock1Ptr->warp2.x;
|
||||
y = gSaveBlock1Ptr->warp2.y;
|
||||
break;
|
||||
@@ -953,8 +953,8 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
||||
{
|
||||
gRegionMap->playerIsInCave = FALSE;
|
||||
}
|
||||
mapWidth = mapHeader->mapData->width;
|
||||
mapHeight = mapHeader->mapData->height;
|
||||
mapWidth = mapHeader->mapLayout->width;
|
||||
mapHeight = mapHeader->mapLayout->height;
|
||||
x = storedWarp->x;
|
||||
y = storedWarp->y;
|
||||
break;
|
||||
@@ -1068,14 +1068,14 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
|
||||
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
|
||||
|
||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||
dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
||||
dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
||||
if (dimensionScale == 0)
|
||||
dimensionScale = 1;
|
||||
x = xOnMap / dimensionScale;
|
||||
if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
|
||||
x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
|
||||
|
||||
dimensionScale = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height;
|
||||
dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height;
|
||||
if (dimensionScale == 0)
|
||||
dimensionScale = 1;
|
||||
y = yOnMap / dimensionScale;
|
||||
@@ -1603,7 +1603,7 @@ void MCB2_FlyMap(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
sub_809882C(0, 0x65, 0xd0);
|
||||
LoadUserWindowBorderGfx(0, 0x65, 0xd0);
|
||||
clear_scheduled_bg_copies_to_vram();
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -1849,7 +1849,7 @@ static void sub_8124D14(void)
|
||||
switch (gUnknown_0203A148->unk_004)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
|
||||
gUnknown_0203A148->unk_004++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -1896,7 +1896,7 @@ static void sub_8124E0C(void)
|
||||
switch (gUnknown_0203A148->unk_004)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
|
||||
gUnknown_0203A148->unk_004++;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
@@ -552,7 +552,7 @@ static void Task_ResetRtcScreen(u8 taskId)
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 1, 0x10, 0, 0xFFFF);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF);
|
||||
data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
@@ -621,7 +621,7 @@ static void Task_ResetRtcScreen(u8 taskId)
|
||||
case 5:
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
BeginNormalPaletteFade(-1, 1, 0, 0x10, 0xFFFF);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF);
|
||||
data[0] = 6;
|
||||
}
|
||||
else
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user