Get species name from National Dex number

This commit is contained in:
Eduardo Quezada 2022-11-24 14:07:06 -03:00
parent a4c2a325f0
commit df49fbedac
8 changed files with 918 additions and 1287 deletions

View file

@ -119,6 +119,7 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const struct Trainer gTrainers[]; extern const struct Trainer gTrainers[];
extern const u8 gTrainerClassNames[][13]; extern const u8 gTrainerClassNames[][13];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1];
extern const u8 *const gZMoveNames[]; extern const u8 *const gZMoveNames[];

View file

@ -296,7 +296,6 @@ struct BattlePokemon
struct BaseStats struct BaseStats
{ {
/* 0x?? */ u8 speciesName[POKEMON_NAME_LENGTH + 1];
/* 0x?? */ u8 baseHP; /* 0x?? */ u8 baseHP;
/* 0x?? */ u8 baseAttack; /* 0x?? */ u8 baseAttack;
/* 0x?? */ u8 baseDefense; /* 0x?? */ u8 baseDefense;

View file

@ -4365,11 +4365,11 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
{ {
textPrinter.currentY = sSpeciesNameTextYCoords[i]; textPrinter.currentY = sSpeciesNameTextYCoords[i];
if (trainerId == TRAINER_PLAYER) if (trainerId == TRAINER_PLAYER)
textPrinter.currentChar = gBaseStats[DOME_MONS[trainerTourneyId][i]].speciesName; textPrinter.currentChar = GetSpeciesName(DOME_MONS[trainerTourneyId][i]);
else if (trainerId == TRAINER_FRONTIER_BRAIN) else if (trainerId == TRAINER_FRONTIER_BRAIN)
textPrinter.currentChar = gBaseStats[DOME_MONS[trainerTourneyId][i]].speciesName; textPrinter.currentChar = GetSpeciesName(DOME_MONS[trainerTourneyId][i]);
else else
textPrinter.currentChar = gBaseStats[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species].speciesName; textPrinter.currentChar = GetSpeciesName(gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].species);
textPrinter.windowId = 1 + i + windowId; textPrinter.windowId = 1 + i + windowId;
if (i == 1) if (i == 1)

View file

@ -1916,8 +1916,8 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{ {
const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves;
for (j = 0; gBaseStats[partyData[i].species].speciesName[j] != EOS; j++) for (j = 0; gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j] != EOS; j++)
nameHash += gBaseStats[partyData[i].species].speciesName[j]; nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8; personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
@ -1928,8 +1928,8 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{ {
const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves;
for (j = 0; gBaseStats[partyData[i].species].speciesName[j] != EOS; j++) for (j = 0; gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j] != EOS; j++)
nameHash += gBaseStats[partyData[i].species].speciesName[j]; nameHash += gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j];
personalityValue += nameHash << 8; personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
@ -1946,8 +1946,8 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{ {
const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves;
for (j = 0; gBaseStats[partyData[i].species].speciesName[j] != EOS; j++) for (j = 0; gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j] != EOS; j++)
nameHash += gBaseStats[partyData[i].species].speciesName[j]; nameHash += gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j];
personalityValue += nameHash << 8; personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
@ -1960,8 +1960,8 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{ {
const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves;
for (j = 0; gBaseStats[partyData[i].species].speciesName[j] != EOS; j++) for (j = 0; gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j] != EOS; j++)
nameHash += gBaseStats[partyData[i].species].speciesName[j]; nameHash += gSpeciesNames[gBaseStats[partyData[i].species].natDexNum][j];
personalityValue += nameHash << 8; personalityValue += nameHash << 8;
fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;

View file

@ -55,7 +55,6 @@ const struct BaseStats gBaseStats[] =
{ {
[SPECIES_NONE] = [SPECIES_NONE] =
{ {
.speciesName = _("??????????"),
.natDexNum = NATIONAL_DEX_NONE, .natDexNum = NATIONAL_DEX_NONE,
DEX_TEXT(Dummy, "Unknown"), DEX_TEXT(Dummy, "Unknown"),
DEX_SCALE(256, 0, 256, 0), DEX_SCALE(256, 0, 256, 0),
@ -90,7 +89,6 @@ const struct BaseStats gBaseStats[] =
.abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL},
.bodyColor = BODY_COLOR_GREEN, .bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE, .noFlip = FALSE,
.speciesName = _("Bulbasaur"),
.natDexNum = NATIONAL_DEX_BULBASAUR, .natDexNum = NATIONAL_DEX_BULBASAUR,
DEX_TEXT(Bulbasaur, "Seed"), DEX_TEXT(Bulbasaur, "Seed"),
DEX_SCALE(356, 17, 256, 0), DEX_SCALE(356, 17, 256, 0),
@ -127,7 +125,6 @@ const struct BaseStats gBaseStats[] =
.abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL},
.bodyColor = BODY_COLOR_GREEN, .bodyColor = BODY_COLOR_GREEN,
.noFlip = FALSE, .noFlip = FALSE,
.speciesName = _("Ivysaur"),
.natDexNum = NATIONAL_DEX_IVYSAUR, .natDexNum = NATIONAL_DEX_IVYSAUR,
DEX_TEXT(Ivysaur, "Seed"), DEX_TEXT(Ivysaur, "Seed"),
DEX_SCALE(335, 13, 256, 0), DEX_SCALE(335, 13, 256, 0),
@ -155,7 +152,6 @@ const struct BaseStats gBaseStats[] =
.eggGroup2 = EGG_GROUP_GRASS, \ .eggGroup2 = EGG_GROUP_GRASS, \
.bodyColor = BODY_COLOR_GREEN, \ .bodyColor = BODY_COLOR_GREEN, \
.noFlip = FALSE, \ .noFlip = FALSE, \
.speciesName = _("Venusaur"), \
.natDexNum = NATIONAL_DEX_VENUSAUR, \ .natDexNum = NATIONAL_DEX_VENUSAUR, \
LEARNSETS(Venusaur), \ LEARNSETS(Venusaur), \
FOOTPRINT(Venusaur) FOOTPRINT(Venusaur)
@ -224,7 +220,6 @@ const struct BaseStats gBaseStats[] =
.abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER},
.bodyColor = BODY_COLOR_RED, .bodyColor = BODY_COLOR_RED,
.noFlip = FALSE, .noFlip = FALSE,
.speciesName = _("Charmander"),
.natDexNum = NATIONAL_DEX_CHARMANDER, .natDexNum = NATIONAL_DEX_CHARMANDER,
DEX_TEXT(Charmander, "Lizard"), DEX_TEXT(Charmander, "Lizard"),
DEX_SCALE(444, 18, 256, 0), DEX_SCALE(444, 18, 256, 0),
@ -8533,7 +8528,6 @@ const struct BaseStats gBaseStats[] =
[SPECIES_TREECKO] = [SPECIES_TREECKO] =
{ {
.speciesName = _("Treecko"),
.baseHP = 40, .baseHP = 40,
.baseAttack = 45, .baseAttack = 45,
.baseDefense = 35, .baseDefense = 35,
@ -8638,7 +8632,6 @@ const struct BaseStats gBaseStats[] =
[SPECIES_TORCHIC] = [SPECIES_TORCHIC] =
{ {
.speciesName = _("Torchic"),
.baseHP = 45, .baseHP = 45,
.baseAttack = 60, .baseAttack = 60,
.baseDefense = 40, .baseDefense = 40,
@ -8741,7 +8734,6 @@ const struct BaseStats gBaseStats[] =
[SPECIES_MUDKIP] = [SPECIES_MUDKIP] =
{ {
.speciesName = _("Mudkip"),
.baseHP = 50, .baseHP = 50,
.baseAttack = 70, .baseAttack = 70,
.baseDefense = 50, .baseDefense = 50,

File diff suppressed because it is too large Load diff

View file

@ -2542,7 +2542,7 @@ static u8 CreateMonName(u16 species, u8 left, u8 top)
{ {
const u8 *str; const u8 *str;
if (species >= NUM_SPECIES) if (species)
str = GetSpeciesName(species); str = GetSpeciesName(species);
else else
str = sText_TenDashes; str = sText_TenDashes;

View file

@ -3101,8 +3101,8 @@ bool8 IsPokemonStorageFull(void)
const u8 *GetSpeciesName(u16 species) const u8 *GetSpeciesName(u16 species)
{ {
if (species > NUM_SPECIES) if (species > NUM_SPECIES)
return gBaseStats[SPECIES_NONE].speciesName; return gSpeciesNames[NATIONAL_DEX_NONE];
return gBaseStats[species].speciesName; return gSpeciesNames[gBaseStats[species].natDexNum];
} }
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex) u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)