Show forms when browsing by weight
This commit is contained in:
parent
f84a1edc48
commit
5dc27ed441
4 changed files with 1103 additions and 1091 deletions
|
@ -1077,7 +1077,8 @@
|
||||||
#define SPECIES_SILVALLY_DRAGON 1023
|
#define SPECIES_SILVALLY_DRAGON 1023
|
||||||
#define SPECIES_SILVALLY_DARK 1024
|
#define SPECIES_SILVALLY_DARK 1024
|
||||||
#define SPECIES_SILVALLY_FAIRY 1025
|
#define SPECIES_SILVALLY_FAIRY 1025
|
||||||
#define SPECIES_MINIOR SPECIES_MINIOR_METEOR_RED
|
#define SPECIES_MINIOR SPECIES_MINIOR_METEOR
|
||||||
|
#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED
|
||||||
#define SPECIES_MINIOR_METEOR_RED 1026
|
#define SPECIES_MINIOR_METEOR_RED 1026
|
||||||
#define SPECIES_MINIOR_METEOR_ORANGE 1027
|
#define SPECIES_MINIOR_METEOR_ORANGE 1027
|
||||||
#define SPECIES_MINIOR_METEOR_YELLOW 1028
|
#define SPECIES_MINIOR_METEOR_YELLOW 1028
|
||||||
|
@ -1085,6 +1086,7 @@
|
||||||
#define SPECIES_MINIOR_METEOR_BLUE 1030
|
#define SPECIES_MINIOR_METEOR_BLUE 1030
|
||||||
#define SPECIES_MINIOR_METEOR_INDIGO 1031
|
#define SPECIES_MINIOR_METEOR_INDIGO 1031
|
||||||
#define SPECIES_MINIOR_METEOR_VIOLET 1032
|
#define SPECIES_MINIOR_METEOR_VIOLET 1032
|
||||||
|
#define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED
|
||||||
#define SPECIES_MINIOR_CORE_RED 1033
|
#define SPECIES_MINIOR_CORE_RED 1033
|
||||||
#define SPECIES_MINIOR_CORE_ORANGE 1034
|
#define SPECIES_MINIOR_CORE_ORANGE 1034
|
||||||
#define SPECIES_MINIOR_CORE_YELLOW 1035
|
#define SPECIES_MINIOR_CORE_YELLOW 1035
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -159,7 +159,7 @@ struct PokedexListItem
|
||||||
|
|
||||||
struct PokedexView
|
struct PokedexView
|
||||||
{
|
{
|
||||||
struct PokedexListItem pokedexList[NATIONAL_DEX_COUNT + 1];
|
struct PokedexListItem pokedexList[NUM_SPECIES + 1];
|
||||||
u16 pokemonListCount;
|
u16 pokemonListCount;
|
||||||
u16 selectedPokemon;
|
u16 selectedPokemon;
|
||||||
u16 selectedPokemonBackup;
|
u16 selectedPokemonBackup;
|
||||||
|
@ -217,7 +217,7 @@ static void Task_ClosePokedexFromSearchResultsStartMenu(u8);
|
||||||
static bool8 LoadPokedexListPage(u8);
|
static bool8 LoadPokedexListPage(u8);
|
||||||
static void LoadPokedexBgPalette(bool8);
|
static void LoadPokedexBgPalette(bool8);
|
||||||
static void FreeWindowAndBgBuffers(void);
|
static void FreeWindowAndBgBuffers(void);
|
||||||
static void CreatePokedexList(u8, u8);
|
static void CreatePokedexList(u8, u8, bool8);
|
||||||
static void CreateMonDexNum(u16, u8, u8, u16);
|
static void CreateMonDexNum(u16, u8, u8, u16);
|
||||||
static void CreateCaughtBall(u16, u8, u8, u16);
|
static void CreateCaughtBall(u16, u8, u8, u16);
|
||||||
static u8 CreateMonName(u16, u8, u8);
|
static u8 CreateMonName(u16, u8, u8);
|
||||||
|
@ -1537,15 +1537,15 @@ static void ResetPokedexView(struct PokedexView *pokedexView)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
|
for (i = 0; i < NUM_SPECIES; i++)
|
||||||
{
|
{
|
||||||
pokedexView->pokedexList[i].dexNum = 0xFFFF;
|
pokedexView->pokedexList[i].dexNum = 0xFFFF;
|
||||||
pokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
pokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
||||||
pokedexView->pokedexList[i].owned = FALSE;
|
pokedexView->pokedexList[i].owned = FALSE;
|
||||||
}
|
}
|
||||||
pokedexView->pokedexList[NATIONAL_DEX_COUNT].dexNum = 0;
|
pokedexView->pokedexList[NUM_SPECIES].dexNum = 0;
|
||||||
pokedexView->pokedexList[NATIONAL_DEX_COUNT].seenSpecies = SPECIES_NONE;
|
pokedexView->pokedexList[NUM_SPECIES].seenSpecies = SPECIES_NONE;
|
||||||
pokedexView->pokedexList[NATIONAL_DEX_COUNT].owned = FALSE;
|
pokedexView->pokedexList[NUM_SPECIES].owned = FALSE;
|
||||||
pokedexView->pokemonListCount = 0;
|
pokedexView->pokemonListCount = 0;
|
||||||
pokedexView->selectedPokemon = 0;
|
pokedexView->selectedPokemon = 0;
|
||||||
pokedexView->selectedPokemonBackup = 0;
|
pokedexView->selectedPokemonBackup = 0;
|
||||||
|
@ -1635,7 +1635,7 @@ void CB2_OpenPokedex(void)
|
||||||
EnableInterrupts(1);
|
EnableInterrupts(1);
|
||||||
SetVBlankCallback(VBlankCB_Pokedex);
|
SetVBlankCallback(VBlankCB_Pokedex);
|
||||||
SetMainCallback2(CB2_Pokedex);
|
SetMainCallback2(CB2_Pokedex);
|
||||||
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder);
|
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder, FALSE);
|
||||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x80);
|
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x80);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2097,7 +2097,7 @@ static bool8 LoadPokedexListPage(u8 page)
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (page == PAGE_MAIN)
|
if (page == PAGE_MAIN)
|
||||||
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder);
|
CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder, FALSE);
|
||||||
CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE);
|
CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE);
|
||||||
sPokedexView->menuIsOpen = FALSE;
|
sPokedexView->menuIsOpen = FALSE;
|
||||||
sPokedexView->menuY = 0;
|
sPokedexView->menuY = 0;
|
||||||
|
@ -2170,7 +2170,7 @@ static void FreeWindowAndBgBuffers(void)
|
||||||
Free(tilemapBuffer);
|
Free(tilemapBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreatePokedexList(u8 dexMode, u8 order)
|
static void CreatePokedexList(u8 dexMode, u8 order, bool8 showForms)
|
||||||
{
|
{
|
||||||
u32 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
|
u32 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
|
||||||
#define temp_dexCount vars[0]
|
#define temp_dexCount vars[0]
|
||||||
|
@ -2255,14 +2255,16 @@ static void CreatePokedexList(u8 dexMode, u8 order)
|
||||||
case ORDER_HEAVIEST:
|
case ORDER_HEAVIEST:
|
||||||
for (i = ARRAY_COUNT(gPokedexOrder_Weight) - 1; i >= 0; i--)
|
for (i = ARRAY_COUNT(gPokedexOrder_Weight) - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
u16 seenSpecies;
|
u16 species = gPokedexOrder_Weight[i];
|
||||||
temp_dexNum = gPokedexOrder_Weight[i];
|
bool8 speciesFlag = GetSetPokedexSeenFlag(species, FLAG_GET_SEEN);
|
||||||
seenSpecies = GetPokedexFlagFirstSeen(temp_dexNum);
|
temp_dexNum = SpeciesToNationalPokedexNum(species);
|
||||||
|
|
||||||
if (temp_dexNum <= NATIONAL_DEX_COUNT && (!temp_isHoennDex || NationalToHoennOrder(temp_dexNum) != 0) && GetSetPokedexCaughtFlag(temp_dexNum, FLAG_GET_CAUGHT))
|
if ((!temp_isHoennDex || NationalToHoennOrder(temp_dexNum) != 0)
|
||||||
|
&& GetSetPokedexCaughtFlag(temp_dexNum, FLAG_GET_CAUGHT)
|
||||||
|
&& GetSetPokedexSeenFlag(species, FLAG_GET_SEEN))
|
||||||
{
|
{
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].seenSpecies = seenSpecies;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].seenSpecies = species;
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
|
||||||
sPokedexView->pokemonListCount++;
|
sPokedexView->pokemonListCount++;
|
||||||
}
|
}
|
||||||
|
@ -2271,14 +2273,16 @@ static void CreatePokedexList(u8 dexMode, u8 order)
|
||||||
case ORDER_LIGHTEST:
|
case ORDER_LIGHTEST:
|
||||||
for (i = 0; i < ARRAY_COUNT(gPokedexOrder_Weight); i++)
|
for (i = 0; i < ARRAY_COUNT(gPokedexOrder_Weight); i++)
|
||||||
{
|
{
|
||||||
u16 seenSpecies;
|
u16 species = gPokedexOrder_Weight[i];
|
||||||
temp_dexNum = gPokedexOrder_Weight[i];
|
bool8 speciesFlag = GetSetPokedexSeenFlag(species, FLAG_GET_SEEN);
|
||||||
seenSpecies = GetPokedexFlagFirstSeen(temp_dexNum);
|
temp_dexNum = SpeciesToNationalPokedexNum(species);
|
||||||
|
|
||||||
if (temp_dexNum <= NATIONAL_DEX_COUNT && (!temp_isHoennDex || NationalToHoennOrder(temp_dexNum) != 0) && GetSetPokedexCaughtFlag(temp_dexNum, FLAG_GET_CAUGHT))
|
if ((!temp_isHoennDex || NationalToHoennOrder(temp_dexNum) != 0)
|
||||||
|
&& GetSetPokedexCaughtFlag(temp_dexNum, FLAG_GET_CAUGHT)
|
||||||
|
&& GetSetPokedexSeenFlag(species, FLAG_GET_SEEN))
|
||||||
{
|
{
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum;
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].seenSpecies = seenSpecies;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].seenSpecies = species;
|
||||||
sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
|
sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE;
|
||||||
sPokedexView->pokemonListCount++;
|
sPokedexView->pokemonListCount++;
|
||||||
}
|
}
|
||||||
|
@ -2318,7 +2322,7 @@ static void CreatePokedexList(u8 dexMode, u8 order)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
|
for (i = sPokedexView->pokemonListCount; i < NUM_SPECIES; i++)
|
||||||
{
|
{
|
||||||
sPokedexView->pokedexList[i].dexNum = 0xFFFF;
|
sPokedexView->pokedexList[i].dexNum = 0xFFFF;
|
||||||
sPokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
sPokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
||||||
|
@ -2350,7 +2354,7 @@ static void CreateMonListEntry(u8 position, u16 b, u16 ignored)
|
||||||
entryNum = b - 5;
|
entryNum = b - 5;
|
||||||
for (i = 0; i <= 10; i++)
|
for (i = 0; i <= 10; i++)
|
||||||
{
|
{
|
||||||
if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
if (entryNum < 0 || entryNum >= NUM_SPECIES || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
||||||
{
|
{
|
||||||
ClearMonListEntry(17, i * 2, ignored);
|
ClearMonListEntry(17, i * 2, ignored);
|
||||||
}
|
}
|
||||||
|
@ -2375,7 +2379,7 @@ static void CreateMonListEntry(u8 position, u16 b, u16 ignored)
|
||||||
break;
|
break;
|
||||||
case 1: // Up
|
case 1: // Up
|
||||||
entryNum = b - 5;
|
entryNum = b - 5;
|
||||||
if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
if (entryNum < 0 || entryNum >= NUM_SPECIES || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
||||||
{
|
{
|
||||||
ClearMonListEntry(17, sPokedexView->listVOffset * 2, ignored);
|
ClearMonListEntry(17, sPokedexView->listVOffset * 2, ignored);
|
||||||
}
|
}
|
||||||
|
@ -2401,7 +2405,7 @@ static void CreateMonListEntry(u8 position, u16 b, u16 ignored)
|
||||||
vOffset = sPokedexView->listVOffset + 10;
|
vOffset = sPokedexView->listVOffset + 10;
|
||||||
if (vOffset >= LIST_SCROLL_STEP)
|
if (vOffset >= LIST_SCROLL_STEP)
|
||||||
vOffset -= LIST_SCROLL_STEP;
|
vOffset -= LIST_SCROLL_STEP;
|
||||||
if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
if (entryNum < 0 || entryNum >= NUM_SPECIES || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
|
||||||
ClearMonListEntry(17, vOffset * 2, ignored);
|
ClearMonListEntry(17, vOffset * 2, ignored);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2742,8 +2746,7 @@ static u8 ClearMonSprites(void)
|
||||||
|
|
||||||
static u16 GetPokemonSpriteToDisplay(u16 species)
|
static u16 GetPokemonSpriteToDisplay(u16 species)
|
||||||
{
|
{
|
||||||
MgbaPrintf(MGBA_LOG_INFO, "aaaaa:%d", sPokedexView->pokedexList[species].seenSpecies);
|
if (species >= NUM_SPECIES || sPokedexView->pokedexList[species].dexNum == 0xFFFF)
|
||||||
if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF)
|
|
||||||
return 0xFFFF;
|
return 0xFFFF;
|
||||||
else if (sPokedexView->pokedexList[species].seenSpecies != SPECIES_NONE)
|
else if (sPokedexView->pokedexList[species].seenSpecies != SPECIES_NONE)
|
||||||
return sPokedexView->pokedexList[species].seenSpecies;
|
return sPokedexView->pokedexList[species].seenSpecies;
|
||||||
|
@ -4320,9 +4323,9 @@ u16 GetPokedexFlagFirstSeen(u16 nationalDexNo)
|
||||||
return formTable[formId];
|
return formTable[formId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (GetSetPokedexSeenFlag(gBaseFormSpeciesIdTable[nationalDexNo], FLAG_GET_SEEN))
|
else if (GetSetPokedexSeenFlag(NationalPokedexNumToSpecies(nationalDexNo), FLAG_GET_SEEN))
|
||||||
{
|
{
|
||||||
return gBaseFormSpeciesIdTable[nationalDexNo];
|
return NationalPokedexNumToSpecies(nationalDexNo);
|
||||||
}
|
}
|
||||||
return SPECIES_NONE;
|
return SPECIES_NONE;
|
||||||
}
|
}
|
||||||
|
@ -4697,9 +4700,9 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
u16 resultsCount;
|
u16 resultsCount;
|
||||||
u8 types[2];
|
u8 types[2];
|
||||||
|
|
||||||
CreatePokedexList(dexMode, order);
|
CreatePokedexList(dexMode, order, TRUE);
|
||||||
|
|
||||||
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
|
for (i = 0, resultsCount = 0; i < NUM_SPECIES; i++)
|
||||||
{
|
{
|
||||||
if (sPokedexView->pokedexList[i].seenSpecies != SPECIES_NONE)
|
if (sPokedexView->pokedexList[i].seenSpecies != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
|
@ -4716,7 +4719,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
{
|
{
|
||||||
u8 firstLetter;
|
u8 firstLetter;
|
||||||
|
|
||||||
species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
|
species = sPokedexView->pokedexList[i].seenSpecies;
|
||||||
firstLetter = gSpeciesNames[species][0];
|
firstLetter = gSpeciesNames[species][0];
|
||||||
if (LETTER_IN_RANGE_UPPER(firstLetter, abcGroup) || LETTER_IN_RANGE_LOWER(firstLetter, abcGroup))
|
if (LETTER_IN_RANGE_UPPER(firstLetter, abcGroup) || LETTER_IN_RANGE_LOWER(firstLetter, abcGroup))
|
||||||
{
|
{
|
||||||
|
@ -4732,7 +4735,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
{
|
{
|
||||||
for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
|
for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
|
||||||
{
|
{
|
||||||
species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
|
species = sPokedexView->pokedexList[i].seenSpecies;
|
||||||
|
|
||||||
if (bodyColor == gBaseStats[species].bodyColor)
|
if (bodyColor == gBaseStats[species].bodyColor)
|
||||||
{
|
{
|
||||||
|
@ -4758,7 +4761,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
{
|
{
|
||||||
if (sPokedexView->pokedexList[i].owned)
|
if (sPokedexView->pokedexList[i].owned)
|
||||||
{
|
{
|
||||||
species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
|
species = sPokedexView->pokedexList[i].seenSpecies;
|
||||||
|
|
||||||
types[0] = gBaseStats[species].type1;
|
types[0] = gBaseStats[species].type1;
|
||||||
types[1] = gBaseStats[species].type2;
|
types[1] = gBaseStats[species].type2;
|
||||||
|
@ -4776,7 +4779,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
{
|
{
|
||||||
if (sPokedexView->pokedexList[i].owned)
|
if (sPokedexView->pokedexList[i].owned)
|
||||||
{
|
{
|
||||||
species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
|
species = sPokedexView->pokedexList[i].seenSpecies;
|
||||||
|
|
||||||
types[0] = gBaseStats[species].type1;
|
types[0] = gBaseStats[species].type1;
|
||||||
types[1] = gBaseStats[species].type2;
|
types[1] = gBaseStats[species].type2;
|
||||||
|
@ -4793,7 +4796,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t
|
||||||
|
|
||||||
if (sPokedexView->pokemonListCount != 0)
|
if (sPokedexView->pokemonListCount != 0)
|
||||||
{
|
{
|
||||||
for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
|
for (i = sPokedexView->pokemonListCount; i < NUM_SPECIES; i++)
|
||||||
{
|
{
|
||||||
sPokedexView->pokedexList[i].dexNum = 0xFFFF;
|
sPokedexView->pokedexList[i].dexNum = 0xFFFF;
|
||||||
sPokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
sPokedexView->pokedexList[i].seenSpecies = SPECIES_NONE;
|
||||||
|
|
|
@ -6850,18 +6850,10 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum)
|
||||||
{
|
{
|
||||||
u16 species;
|
u16 species;
|
||||||
|
|
||||||
if (!nationalNum)
|
if (!nationalNum || nationalNum > ARRAY_COUNT(gBaseFormSpeciesIdTable))
|
||||||
return 0;
|
return SPECIES_NONE;
|
||||||
|
|
||||||
species = 0;
|
return gBaseFormSpeciesIdTable[nationalNum];
|
||||||
|
|
||||||
while (species < (NUM_SPECIES - 1) && sSpeciesToNationalPokedexNum[species] != nationalNum)
|
|
||||||
species++;
|
|
||||||
|
|
||||||
if (species == NUM_SPECIES - 1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return species + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 NationalToHoennOrder(u16 nationalNum)
|
u16 NationalToHoennOrder(u16 nationalNum)
|
||||||
|
|
Loading…
Reference in a new issue