Sync field_tasks
This commit is contained in:
+5
-5
@@ -6,11 +6,11 @@
|
||||
// Player speeds
|
||||
enum
|
||||
{
|
||||
SPEED_STANDING,
|
||||
SPEED_NORMAL,
|
||||
SPEED_FAST,
|
||||
SPEED_FASTER,
|
||||
SPEED_FASTEST,
|
||||
PLAYER_SPEED_STANDING,
|
||||
PLAYER_SPEED_NORMAL,
|
||||
PLAYER_SPEED_FAST,
|
||||
PLAYER_SPEED_FASTER,
|
||||
PLAYER_SPEED_FASTEST,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
// gTileset_DepartmentStore
|
||||
#define METATILE_DepartmentStore_ElevatorDoor 0x28D
|
||||
|
||||
// gTileset_Fallarbor
|
||||
#define METATILE_Fallarbor_AshGrass 0x20A
|
||||
#define METATILE_Fallarbor_NormalGrass 0x212
|
||||
|
||||
// gTileset_FuchsiaCity
|
||||
#define METATILE_FuchsiaCity_Door 0x2BF
|
||||
#define METATILE_FuchsiaCity_SafariZoneDoor 0x2D2
|
||||
@@ -74,6 +78,9 @@
|
||||
#define METATILE_GenericBuilding1_PlayersPCOff 0x28F
|
||||
#define METATILE_GenericBuilding1_PlayersPCOn 0x28A
|
||||
|
||||
// gTileset_Lavaridge
|
||||
#define METATILE_Lavaridge_NormalGrass 0x206
|
||||
|
||||
// gTileset_LavenderTown
|
||||
#define METATILE_LavenderTown_Door 0x2A2
|
||||
|
||||
@@ -84,6 +91,9 @@
|
||||
// gTileset_MtEmber
|
||||
#define METATILE_MtEmber_CaveEntrance 0x346
|
||||
|
||||
// gTileset_Pacifidlog
|
||||
#define METATILE_Pacifidlog_SkyPillar_CrackedFloor_Hole 0x237
|
||||
|
||||
// gTileset_PalletTown
|
||||
#define METATILE_PalletTown_Door 0x2A3
|
||||
#define METATILE_PalletTown_OaksLabDoor 0x2AC
|
||||
@@ -165,6 +175,10 @@
|
||||
#define METATILE_PokemonMansion_Wall_EndPost_Bottom 0x2AD
|
||||
#define METATILE_PokemonMansion_Wall_EndPost_Mid 0x2A5
|
||||
|
||||
// gTileset_RSCave
|
||||
#define METATILE_RSCave_CrackedFloor 0x22F
|
||||
#define METATILE_RSCave_CrackedFloor_Hole 0x206
|
||||
|
||||
// gTileset_SSAnne
|
||||
#define METATILE_SSAnne_Door 0x281
|
||||
|
||||
|
||||
+6
-6
@@ -338,7 +338,7 @@ void BikeClearState(u32 directionHistory, u32 abStartSelectHistory)
|
||||
gPlayerAvatar.acroBikeState = BIKE_STATE_NORMAL;
|
||||
gPlayerAvatar.newDirBackup = 0;
|
||||
gPlayerAvatar.bikeFrameCounter = 0;
|
||||
gPlayerAvatar.bikeSpeed = SPEED_STANDING;
|
||||
gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING;
|
||||
gPlayerAvatar.directionHistory = directionHistory;
|
||||
gPlayerAvatar.abStartSelectHistory = abStartSelectHistory;
|
||||
gPlayerAvatar.lastSpinTile = 0;
|
||||
@@ -355,21 +355,21 @@ void Bike_UpdateBikeCounterSpeed(u8 counter)
|
||||
static void Bike_SetBikeStill(void)
|
||||
{
|
||||
gPlayerAvatar.bikeFrameCounter = 0;
|
||||
gPlayerAvatar.bikeSpeed = SPEED_STANDING;
|
||||
gPlayerAvatar.bikeSpeed = PLAYER_SPEED_STANDING;
|
||||
}
|
||||
|
||||
s16 GetPlayerSpeed(void)
|
||||
{
|
||||
s16 machBikeSpeeds[] = { SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST };
|
||||
s16 machBikeSpeeds[] = { PLAYER_SPEED_NORMAL, PLAYER_SPEED_FAST, PLAYER_SPEED_FASTEST };
|
||||
|
||||
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
|
||||
return machBikeSpeeds[gPlayerAvatar.bikeFrameCounter];
|
||||
else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
|
||||
return SPEED_FASTER;
|
||||
return PLAYER_SPEED_FASTER;
|
||||
else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
|
||||
return SPEED_FAST;
|
||||
return PLAYER_SPEED_FAST;
|
||||
else
|
||||
return SPEED_NORMAL;
|
||||
return PLAYER_SPEED_NORMAL;
|
||||
}
|
||||
|
||||
void Bike_HandleBumpySlopeJump(void)
|
||||
|
||||
@@ -103,7 +103,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
|
||||
}
|
||||
if ((tileTransitionState == T_TILE_CENTER && forcedMove == FALSE) || tileTransitionState == T_NOT_MOVING)
|
||||
{
|
||||
if (GetPlayerSpeed() != 4)
|
||||
if (GetPlayerSpeed() != PLAYER_SPEED_FASTEST)
|
||||
{
|
||||
if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED))
|
||||
input->pressedStartButton = TRUE;
|
||||
|
||||
+166
-111
@@ -15,7 +15,20 @@
|
||||
#include "constants/metatile_labels.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
// TODO: Metatile IDs in this file
|
||||
/* This file handles some persistent tasks that run in the overworld.
|
||||
* - Task_RunTimeBasedEvents: Triggers ambient cries. In RSE, this also periodically updates local time and RTC events.
|
||||
* - Task_RunPerStepCallback: Calls one of the functions in sPerStepCallbacks, listed below...
|
||||
* . DummyPerStepCallback: Default, does nothing. Includes functionality from RS that was removed.
|
||||
* . AshGrassPerStepCallback: Leftover from RS. Removes the ash from ash-covered grass that the player steps on.
|
||||
* . IcefallCaveIcePerStepCallback: Cracks/breaks ice in Icefall Cave that the player steps on.
|
||||
* . CrackedFloorPerStepCallback: Leftover from RS. Breaks cracked floors that the player steps on.
|
||||
*
|
||||
* NOTE: "PerStep" is perhaps misleading. One function in sPerStepCallbacks is called
|
||||
* every frame while in the overworld by Task_RunPerStepCallback regardless of
|
||||
* whether or not steps are being taken. However, nearly all of the functions in
|
||||
* the table check if the player has moved from their previous position before
|
||||
* doing anything else.
|
||||
*/
|
||||
|
||||
static void DummyPerStepCallback(u8 taskId);
|
||||
static void AshGrassPerStepCallback(u8 taskId);
|
||||
@@ -34,7 +47,8 @@ static const TaskFunc sPerStepCallbacks[] =
|
||||
[STEP_CB_CRACKED_FLOOR] = CrackedFloorPerStepCallback
|
||||
};
|
||||
|
||||
static const u8 sIcefallCaveIceTileCoords[][2] =
|
||||
// The positions of each map space with crackable ice in Icefall Cave.
|
||||
static const u8 sIcefallCaveIceCoords[][2] =
|
||||
{
|
||||
{ 8, 3 },
|
||||
{ 10, 5 },
|
||||
@@ -47,56 +61,53 @@ static const u8 sIcefallCaveIceTileCoords[][2] =
|
||||
{ 8, 14 }
|
||||
};
|
||||
|
||||
#define tCallbackId data[0]
|
||||
|
||||
static void Task_RunPerStepCallback(u8 taskId)
|
||||
{
|
||||
int idx = gTasks[taskId].data[0];
|
||||
int idx = gTasks[taskId].tCallbackId;
|
||||
sPerStepCallbacks[idx](taskId);
|
||||
}
|
||||
|
||||
#define tAmbientCryState data[1]
|
||||
#define tAmbientCryDelay data[2]
|
||||
|
||||
// RTC functionality from RS was removed here.
|
||||
static void Task_RunTimeBasedEvents(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (!ArePlayerFieldControlsLocked())
|
||||
{
|
||||
if (!QL_IS_PLAYBACK_STATE)
|
||||
{
|
||||
UpdateAmbientCry(&data[1], &data[2]);
|
||||
}
|
||||
}
|
||||
if (!ArePlayerFieldControlsLocked() && !QL_IS_PLAYBACK_STATE)
|
||||
UpdateAmbientCry(&tAmbientCryState, &tAmbientCryDelay);
|
||||
}
|
||||
|
||||
void SetUpFieldTasks(void)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_RunPerStepCallback))
|
||||
{
|
||||
u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
u8 taskId = CreateTask(Task_RunPerStepCallback, 80);
|
||||
gTasks[taskId].tCallbackId = STEP_CB_DUMMY;
|
||||
}
|
||||
|
||||
if (!FuncIsActiveTask(Task_RunTimeBasedEvents))
|
||||
CreateTask(Task_RunTimeBasedEvents, 0x50);
|
||||
CreateTask(Task_RunTimeBasedEvents, 80);
|
||||
}
|
||||
|
||||
void ActivatePerStepCallback(u8 callbackId)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
|
||||
if (taskId != 0xff)
|
||||
if (taskId != TASK_NONE)
|
||||
{
|
||||
s32 i;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
for (i = 0; i < NUM_TASK_DATA; i++)
|
||||
data[i] = 0;
|
||||
|
||||
if (callbackId >= NELEMS(sPerStepCallbacks))
|
||||
{
|
||||
data[0] = 0;
|
||||
}
|
||||
if (callbackId >= ARRAY_COUNT(sPerStepCallbacks))
|
||||
tCallbackId = STEP_CB_DUMMY;
|
||||
else
|
||||
{
|
||||
data[0] = callbackId;
|
||||
}
|
||||
tCallbackId = callbackId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,29 +117,31 @@ void ResetFieldTasksArgs(void)
|
||||
s16 *data;
|
||||
|
||||
taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
|
||||
if (taskId != 0xff)
|
||||
{
|
||||
if (taskId != TASK_NONE)
|
||||
data = gTasks[taskId].data;
|
||||
}
|
||||
|
||||
taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents);
|
||||
if (taskId != 0xff)
|
||||
if (taskId != TASK_NONE)
|
||||
{
|
||||
data = gTasks[taskId].data;
|
||||
data[1] = 0;
|
||||
data[2] = 0;
|
||||
tAmbientCryState = 0;
|
||||
tAmbientCryDelay = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#undef tAmbientCryState
|
||||
#undef tAmbientCryDelay
|
||||
|
||||
static void DummyPerStepCallback(u8 taskId)
|
||||
{
|
||||
}
|
||||
|
||||
static void MarkIcefallCaveCoordVisited(s16 x, s16 y)
|
||||
static void MarkIcePuzzleCoordVisited(s16 x, s16 y)
|
||||
{
|
||||
u8 i = 0;
|
||||
for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i)
|
||||
u8 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sIcefallCaveIceCoords); i++)
|
||||
{
|
||||
if (sIcefallCaveIceTileCoords[i][0] + 7 == x && sIcefallCaveIceTileCoords[i][1] + 7 == y)
|
||||
if (sIcefallCaveIceCoords[i][0] + MAP_OFFSET == x && sIcefallCaveIceCoords[i][1] + MAP_OFFSET == y)
|
||||
{
|
||||
FlagSet(i + 1);
|
||||
break;
|
||||
@@ -138,118 +151,156 @@ static void MarkIcefallCaveCoordVisited(s16 x, s16 y)
|
||||
|
||||
void SetIcefallCaveCrackedIceMetatiles(void)
|
||||
{
|
||||
u8 i = 0;
|
||||
for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i)
|
||||
u8 i;
|
||||
for (i = 0; i < ARRAY_COUNT(sIcefallCaveIceCoords); i++)
|
||||
{
|
||||
if (FlagGet(i + 1) == TRUE)
|
||||
{
|
||||
int x = sIcefallCaveIceTileCoords[i][0] + 7;
|
||||
int y = sIcefallCaveIceTileCoords[i][1] + 7;
|
||||
int x = sIcefallCaveIceCoords[i][0] + MAP_OFFSET;
|
||||
int y = sIcefallCaveIceCoords[i][1] + MAP_OFFSET;
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_CrackedIce);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define tState data[1]
|
||||
#define tPrevX data[2]
|
||||
#define tPrevY data[3]
|
||||
#define tIceX data[4]
|
||||
#define tIceY data[5]
|
||||
#define tDelay data[6]
|
||||
|
||||
static void IcefallCaveIcePerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 tileBehavior;
|
||||
u16 *iceStepCount;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[1])
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
data[1] = 1;
|
||||
tPrevX = x;
|
||||
tPrevY = y;
|
||||
tState = 1;
|
||||
break;
|
||||
case 1:
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != data[2] || y != data[3])
|
||||
// End if player hasn't moved
|
||||
if (x == tPrevX && y == tPrevY)
|
||||
return;
|
||||
|
||||
tPrevX = x;
|
||||
tPrevY = y;
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE)
|
||||
{
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE)
|
||||
{
|
||||
MarkIcefallCaveCoordVisited(x, y);
|
||||
data[6] = 4;
|
||||
data[1] = 2;
|
||||
data[4] = x;
|
||||
data[5] = y;
|
||||
}
|
||||
else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE)
|
||||
{
|
||||
data[6] = 4;
|
||||
data[1] = 3;
|
||||
data[4] = x;
|
||||
data[5] = y;
|
||||
}
|
||||
// Thin ice, set it to cracked ice
|
||||
MarkIcePuzzleCoordVisited(x, y);
|
||||
tDelay = 4;
|
||||
tState = 2;
|
||||
tIceX = x;
|
||||
tIceY = y;
|
||||
}
|
||||
else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE)
|
||||
{
|
||||
// Cracked ice, set it to broken ice
|
||||
tDelay = 4;
|
||||
tState = 3;
|
||||
tIceX = x;
|
||||
tIceY = y;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (data[6] != 0)
|
||||
if (tDelay != 0)
|
||||
{
|
||||
data[6]--;
|
||||
tDelay--;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
// Crack ice
|
||||
x = tIceX;
|
||||
y = tIceY;
|
||||
PlaySE(SE_ICE_CRACK);
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_CrackedIce);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
data[1] = 1;
|
||||
tState = 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (data[6] != 0)
|
||||
if (tDelay != 0)
|
||||
{
|
||||
data[6]--;
|
||||
tDelay--;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
// Break ice
|
||||
x = tIceX;
|
||||
y = tIceY;
|
||||
PlaySE(SE_ICE_BREAK);
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_IceHole);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
VarSet(VAR_TEMP_1, 1);
|
||||
data[1] = 1;
|
||||
tState = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// This is leftover from pokeruby and effectively a no-op.
|
||||
#undef tState
|
||||
#undef tPrevX
|
||||
#undef tPrevY
|
||||
#undef tIceX
|
||||
#undef tIceY
|
||||
#undef tDelay
|
||||
|
||||
#define tPrevX data[1]
|
||||
#define tPrevY data[2]
|
||||
|
||||
// Unused. For some reason this was not dummied out like the other RSE-exclusive step callbacks.
|
||||
static void AshGrassPerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 *ashGatherCount;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != data[1] || y != data[2])
|
||||
|
||||
// End if player hasn't moved
|
||||
if (x == tPrevX && y == tPrevY)
|
||||
return;
|
||||
|
||||
tPrevX = x;
|
||||
tPrevY = y;
|
||||
if (MetatileBehavior_IsAshGrass((u8)MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
data[1] = x;
|
||||
data[2] = y;
|
||||
if (MetatileBehavior_IsAshGrass((u8)MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == 0x20a)
|
||||
StartAshFieldEffect(x, y, 0x212, 4);
|
||||
else
|
||||
StartAshFieldEffect(x, y, 0x206, 4);
|
||||
}
|
||||
// Remove ash from grass
|
||||
if (MapGridGetMetatileIdAt(x, y) == METATILE_Fallarbor_AshGrass)
|
||||
StartAshFieldEffect(x, y, METATILE_Fallarbor_NormalGrass, 4);
|
||||
else
|
||||
StartAshFieldEffect(x, y, METATILE_Lavaridge_NormalGrass, 4);
|
||||
}
|
||||
}
|
||||
|
||||
#undef tPrevX
|
||||
#undef tPrevY
|
||||
|
||||
// Unused. For some reason these were not dummied out like the other RSE-exclusive step callbacks.
|
||||
static void SetCrackedFloorHoleMetatile(s16 x, s16 y)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);
|
||||
MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == METATILE_RSCave_CrackedFloor ? METATILE_RSCave_CrackedFloor_Hole : METATILE_Pacifidlog_SkyPillar_CrackedFloor_Hole);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
|
||||
// This is leftover from pokeruby and effectively a no-op.
|
||||
#define tPrevX data[2]
|
||||
#define tPrevY data[3]
|
||||
#define tFloor1Delay data[4]
|
||||
#define tFloor1X data[5]
|
||||
#define tFloor1Y data[6]
|
||||
#define tFloor2Delay data[7]
|
||||
#define tFloor2X data[8]
|
||||
#define tFloor2Y data[9]
|
||||
|
||||
// Unused. See above.
|
||||
static void CrackedFloorPerStepCallback(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
@@ -257,40 +308,44 @@ static void CrackedFloorPerStepCallback(u8 taskId)
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (data[4] != 0 && (--data[4]) == 0)
|
||||
SetCrackedFloorHoleMetatile(data[5], data[6]);
|
||||
|
||||
if (data[7] != 0 && (--data[7]) == 0)
|
||||
SetCrackedFloorHoleMetatile(data[8], data[9]);
|
||||
// Update up to 2 previous cracked floor spaces
|
||||
if (tFloor1Delay != 0 && (--tFloor1Delay) == 0)
|
||||
SetCrackedFloorHoleMetatile(tFloor1X, tFloor1Y);
|
||||
if (tFloor2Delay != 0 && (--tFloor2Delay) == 0)
|
||||
SetCrackedFloorHoleMetatile(tFloor2X, tFloor2Y);
|
||||
|
||||
if ((x != data[2] || y != data[3]))
|
||||
// End if player hasn't moved
|
||||
if (x == tPrevX && y == tPrevY)
|
||||
return;
|
||||
|
||||
tPrevX = x;
|
||||
tPrevY = y;
|
||||
if (MetatileBehavior_IsCrackedFloor(behavior))
|
||||
{
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsCrackedFloor(behavior))
|
||||
{
|
||||
if (GetPlayerSpeed() != 4)
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0);
|
||||
if (GetPlayerSpeed() != PLAYER_SPEED_FASTEST)
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
|
||||
|
||||
if (data[4] == 0)
|
||||
{
|
||||
data[4] = 3;
|
||||
data[5] = x;
|
||||
data[6] = y;
|
||||
}
|
||||
else if (data[7] == 0)
|
||||
{
|
||||
data[7] = 3;
|
||||
data[8] = x;
|
||||
data[9] = y;
|
||||
}
|
||||
if (tFloor1Delay == 0)
|
||||
{
|
||||
tFloor1Delay = 3;
|
||||
tFloor1X = x;
|
||||
tFloor1Y = y;
|
||||
}
|
||||
else if (tFloor2Delay == 0)
|
||||
{
|
||||
tFloor2Delay = 3;
|
||||
tFloor2X = x;
|
||||
tFloor2Y = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Unused
|
||||
static void SetHasPokedexAndPokemon(void)
|
||||
{
|
||||
FlagSet(FLAG_SYS_POKEDEX_GET);
|
||||
FlagSet(FLAG_SYS_POKEMON_GET);
|
||||
}
|
||||
#undef tPrevX
|
||||
#undef tPrevY
|
||||
#undef tFloor1Delay
|
||||
#undef tFloor1X
|
||||
#undef tFloor1Y
|
||||
#undef tFloor2Delay
|
||||
#undef tFloor2X
|
||||
#undef tFloor2Y
|
||||
|
||||
@@ -184,6 +184,13 @@ static ALIGNED(2) const u8 sTextColor_StatName[] = { 1, 2, 3 };
|
||||
static ALIGNED(2) const u8 sTextColor_StatValue[] = { 1, 4, 5 };
|
||||
static ALIGNED(2) const u8 sTextColor_LocationHeader[] = { 1, 6, 7 };
|
||||
|
||||
// Unused
|
||||
static void SetHasPokedexAndPokemon(void)
|
||||
{
|
||||
FlagSet(FLAG_SYS_POKEDEX_GET);
|
||||
FlagSet(FLAG_SYS_POKEMON_GET);
|
||||
}
|
||||
|
||||
static void SetUpStartMenu(void)
|
||||
{
|
||||
sNumStartMenuItems = 0;
|
||||
|
||||
Reference in New Issue
Block a user