Merge branch 'master' into fix-eventobj

This commit is contained in:
GriffinR
2019-12-15 11:47:27 -05:00
committed by GitHub
30 changed files with 2053 additions and 1955 deletions

View File

@@ -1582,7 +1582,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
s32 i;
bool32 ret = FALSE;
for (i = 0; i <= REMATCH_WALLY_3; i++)
for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++)
{
if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i))
{
@@ -1641,7 +1641,7 @@ static bool8 IsFirstTrainerIdReadyForRematch(const struct RematchTrainer *table,
if (tableId == -1)
return FALSE;
if (tableId >= 100)
if (tableId >= MAX_REMATCH_ENTRIES)
return FALSE;
if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
return FALSE;
@@ -1655,7 +1655,7 @@ static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 t
if (tableId == -1)
return FALSE;
if (tableId >= 100)
if (tableId >= MAX_REMATCH_ENTRIES)
return FALSE;
if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
return FALSE;

View File

@@ -1,399 +1,394 @@
#define MCFLAVOR(name) {gMatchCallFlavorText_##name##_Strategy, \
gMatchCallFlavorText_##name##_Pokemon, \
gMatchCallFlavorText_##name##_Intro1, \
gMatchCallFlavorText_##name##_Intro2}
const u8 gMatchCallFlavorText_AromaLady_Rose_Strategy[] = _("Becalm fighting emotions.");
const u8 gMatchCallFlavorText_AromaLady_Rose_Pokemon[] = _("Fragrant GRASS POKéMON.");
const u8 gMatchCallFlavorText_AromaLady_Rose_Intro1[] = _("Soothing aromas make the");
const u8 gMatchCallFlavorText_AromaLady_Rose_Intro2[] = _("body and mind healthy.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Strategy[] = _("I'm not very good at this.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Pokemon[] = _("Ruin-exploration partners.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro1[] = _("I am searching for undersea");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro2[] = _("ruins and relics.");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Strategy[] = _("Overwhelm with power!");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Pokemon[] = _("Craggy ROCK POKéMON.");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro1[] = _("In search of ancient lore,");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro2[] = _("I travel the world.");
const u8 gMatchCallFlavorText_Tuber_Lola_Strategy[] = _("I'm going to try hard!");
const u8 gMatchCallFlavorText_Tuber_Lola_Pokemon[] = _("Good swimmer POKéMON.");
const u8 gMatchCallFlavorText_Tuber_Lola_Intro1[] = _("I wish I could swim without");
const u8 gMatchCallFlavorText_Tuber_Lola_Intro2[] = _("using an inner tube.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Strategy[] = _("I don't know. I'll try hard.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Pokemon[] = _("WATER POKéMON are buddies.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Intro1[] = _("It's not like I can't swim.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Intro2[] = _("I just like my inner tube.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Strategy[] = _("We split our duties.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Pokemon[] = _("We like friendly POKéMON.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro1[] = _("We enjoy POKéMON together");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro2[] = _("as sister and brother.");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Strategy[] = _("I finish with power moves!");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Pokemon[] = _("A mix of different types.");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro1[] = _("I aim to become the ultimate");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro2[] = _("TRAINER!");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Strategy[] = _("Exploit the foe's weakness.");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Pokemon[] = _("Balance is crucial.");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro1[] = _("My goal is to become the");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro2[] = _("POKéMON CHAMPION.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Strategy[] = _("Upset the opponent.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Pokemon[] = _("Type doesn't matter.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro1[] = _("I'm a top student at the");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro2[] = _("TRAINER'S SCHOOL.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Strategy[] = _("Slow, steady suffering.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Pokemon[] = _("Scary to meet at night.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro1[] = _("I see things that others");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro2[] = _("can't see...");
const u8 gMatchCallFlavorText_Lady_Cindy_Strategy[] = _("Anything to win.");
const u8 gMatchCallFlavorText_Lady_Cindy_Pokemon[] = _("Gorgeous type!");
const u8 gMatchCallFlavorText_Lady_Cindy_Intro1[] = _("I have a pool specially for");
const u8 gMatchCallFlavorText_Lady_Cindy_Intro2[] = _("my POKéMON at home.");
const u8 gMatchCallFlavorText_Beauty_Thalia_Strategy[] = _("You'll fall under my spell!");
const u8 gMatchCallFlavorText_Beauty_Thalia_Pokemon[] = _("Mature WATER type.");
const u8 gMatchCallFlavorText_Beauty_Thalia_Intro1[] = _("I dream of cruising around");
const u8 gMatchCallFlavorText_Beauty_Thalia_Intro2[] = _("the world on a luxury liner.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Strategy[] = _("I'll lead you astray.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Pokemon[] = _("Cute, of course.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Intro1[] = _("I love the SAFARI ZONE.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Intro2[] = _("I seem to end up there.");
const u8 gMatchCallFlavorText_RichBoy_Winston_Strategy[] = _("Strategy? Who needs it?");
const u8 gMatchCallFlavorText_RichBoy_Winston_Pokemon[] = _("I spent big money on it!");
const u8 gMatchCallFlavorText_RichBoy_Winston_Intro1[] = _("I, being rich, sleep in a");
const u8 gMatchCallFlavorText_RichBoy_Winston_Intro2[] = _("custom POKéMON bed.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Strategy[] = _("Wrestle down with power.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Pokemon[] = _("Took all night to catch.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro1[] = _("Big, burly, and buff");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro2[] = _("POKéMON are the best...");
const u8 gMatchCallFlavorText_Swimmer_Tony_Strategy[] = _("Ram at full speed!");
const u8 gMatchCallFlavorText_Swimmer_Tony_Pokemon[] = _("Funky WATER type!");
const u8 gMatchCallFlavorText_Swimmer_Tony_Intro1[] = _("If I can't be out swimming,");
const u8 gMatchCallFlavorText_Swimmer_Tony_Intro2[] = _("I'll be pumping weights.");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Strategy[] = _("Grand slam pummeling!");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Pokemon[] = _("FIGHTING type.");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro1[] = _("Not to brag, but I can bust");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro2[] = _("ten roof tiles!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Strategy[] = _("Witness karate power!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Pokemon[] = _("My partners in training!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro1[] = _("Let us discuss matters of");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro2[] = _("the world with bare fists!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Strategy[] = _("Rock to stunning sounds!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Pokemon[] = _("Electric-and-sound combo!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro1[] = _("My compositions will shock");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro2[] = _("you and stun you!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Strategy[] = _("I'll electrify you!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Pokemon[] = _("They're ELECTRIC!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro1[] = _("I want to make people cry");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro2[] = _("with songs from my heart.");
const u8 gMatchCallFlavorText_Kindler_Bernie_Strategy[] = _("Burn it all down!");
const u8 gMatchCallFlavorText_Kindler_Bernie_Pokemon[] = _("Burn-inducing POKéMON.");
const u8 gMatchCallFlavorText_Kindler_Bernie_Intro1[] = _("When you light a campfire,");
const u8 gMatchCallFlavorText_Kindler_Bernie_Intro2[] = _("be sure there's some water.");
const u8 gMatchCallFlavorText_Camper_Ethan_Strategy[] = _("Hang in and be tenacious!");
const u8 gMatchCallFlavorText_Camper_Ethan_Pokemon[] = _("I'll raise any POKéMON.");
const u8 gMatchCallFlavorText_Camper_Ethan_Intro1[] = _("POKéMON raised in the wild");
const u8 gMatchCallFlavorText_Camper_Ethan_Intro2[] = _("grow strong!");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Strategy[] = _("Our love lets us prevail.");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Pokemon[] = _("We've had them for years.");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro1[] = _("Married 50 years, we've");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro2[] = _("devotedly raised POKéMON.");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Strategy[] = _("Attack in waves!");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Pokemon[] = _("BUG POKéMON are cool.");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro1[] = _("I go into the forest every");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro2[] = _("day to catch BUG POKéMON.");
const u8 gMatchCallFlavorText_Psychic_Cameron_Strategy[] = _("Daze and confuse!");
const u8 gMatchCallFlavorText_Psychic_Cameron_Pokemon[] = _("Ones with weird powers.");
const u8 gMatchCallFlavorText_Psychic_Cameron_Intro1[] = _("I can see through exactly");
const u8 gMatchCallFlavorText_Psychic_Cameron_Intro2[] = _("what you're thinking!");
const u8 gMatchCallFlavorText_Psychic_Jacki_Strategy[] = _("Battle at full power.");
const u8 gMatchCallFlavorText_Psychic_Jacki_Pokemon[] = _("POKéMON of many mysteries.");
const u8 gMatchCallFlavorText_Psychic_Jacki_Intro1[] = _("When we spoke, I was really");
const u8 gMatchCallFlavorText_Psychic_Jacki_Intro2[] = _("using telepathy.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Strategy[] = _("Calm and collected.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Pokemon[] = _("POKéMON of distinction.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Intro1[] = _("We enjoy a spot of tea");
const u8 gMatchCallFlavorText_Gentleman_Walter_Intro2[] = _("every day. It's imported.");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Strategy[] = _("I use my head to battle.");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Pokemon[] = _("I love any kind of POKéMON!");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro1[] = _("My daddy gives me spending");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro2[] = _("money if I ace a test.");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Strategy[] = _("My knowledge rules!");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Pokemon[] = _("Any smart POKéMON!");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro1[] = _("I want to be a POKéMON");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro2[] = _("researcher in the future.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Strategy[] = _("We talk it over first.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Pokemon[] = _("POKéMON that we both like.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro1[] = _("We're senior and junior");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro2[] = _("students into POKéMON!");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Strategy[] = _("Go for it, my dears!");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Pokemon[] = _("I have no likes or dislikes.");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro1[] = _("While out shopping for");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro2[] = _("supper, I battle too.");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Strategy[] = _("I battle with love!");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Pokemon[] = _("A POKéMON raised with love!");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro1[] = _("It's important to build");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro2[] = _("trust with your POKéMON.");
const u8 gMatchCallFlavorText_Expert_Timothy_Strategy[] = _("I see through your moves!");
const u8 gMatchCallFlavorText_Expert_Timothy_Pokemon[] = _("The essence of FIGHTING.");
const u8 gMatchCallFlavorText_Expert_Timothy_Intro1[] = _("I'm not ready to give way");
const u8 gMatchCallFlavorText_Expert_Timothy_Intro2[] = _("to the young yet!");
const u8 gMatchCallFlavorText_Expert_Shelby_Strategy[] = _("Attack while defending.");
const u8 gMatchCallFlavorText_Expert_Shelby_Pokemon[] = _("The FIGHTING type.");
const u8 gMatchCallFlavorText_Expert_Shelby_Intro1[] = _("Being old, I have my own");
const u8 gMatchCallFlavorText_Expert_Shelby_Intro2[] = _("style of battling.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Strategy[] = _("I do what I can.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Pokemon[] = _("I use different types.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Intro1[] = _("I'm going to keep working");
const u8 gMatchCallFlavorText_Youngster_Calvin_Intro2[] = _("until I beat a GYM LEADER.");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Strategy[] = _("I battle patiently.");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Pokemon[] = _("WATER POKéMON to battle!");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro1[] = _("I'm the world's only guy to");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro2[] = _("catch a huge POKéMON!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Strategy[] = _("Exploit the environment!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Pokemon[] = _("All hail the WATER type!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro1[] = _("I won't be beaten by some");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro2[] = _("beach bum SWIMMER!");
const u8 gMatchCallFlavorText_Triathlete_Maria_Strategy[] = _("Speed above all!");
const u8 gMatchCallFlavorText_Triathlete_Maria_Pokemon[] = _("I use a speedy POKéMON.");
const u8 gMatchCallFlavorText_Triathlete_Maria_Intro1[] = _("A marathon is a challenge");
const u8 gMatchCallFlavorText_Triathlete_Maria_Intro2[] = _("against your own self.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Strategy[] = _("Defense is crucial.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Pokemon[] = _("My POKéMON is solid.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro1[] = _("I started this for dieting,");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro2[] = _("but I got right into it.");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Strategy[] = _("Strike before stricken!");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Pokemon[] = _("A fast-running POKéMON!");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro1[] = _("If you ran and ran, you'd");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro2[] = _("become one with the wind.");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Strategy[] = _("All-out offensive!");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Pokemon[] = _("WATER POKéMON rule!");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro1[] = _("I must swim over 6 miles");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro2[] = _("every day.");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Strategy[] = _("Push and push again!");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Pokemon[] = _("The strength of STEEL.");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro1[] = _("If you're sweating, get");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro2[] = _("fluids into you regularly.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Strategy[] = _("Draw the power of WATER.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Pokemon[] = _("Toughened WATER POKéMON.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro1[] = _("Training POKéMON is good,");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro2[] = _("but don't neglect yourself.");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Strategy[] = _("It's about POKéMON power!");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Pokemon[] = _("See the power of DRAGONS!");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro1[] = _("I'll become legendary as the");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro2[] = _("strongest one day!");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Strategy[] = _("I'll show you my technique!");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Pokemon[] = _("Elegantly wheeling BIRDS.");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro1[] = _("My BIRD POKéMON, deliver my");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro2[] = _("love to that girl!");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Strategy[] = _("You'll suffer from poison!");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Pokemon[] = _("Poisonous POKéMON.");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro1[] = _("I undertake training so");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro2[] = _("that I may become a ninja.");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Strategy[] = _("The first strike wins!");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Pokemon[] = _("Speedy FIGHTING type.");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro1[] = _("If my POKéMON lose,");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro2[] = _("I'll carry on the fight!");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Strategy[] = _("Go, go, my POKéMON!");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Pokemon[] = _("I'll raise anything.");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro1[] = _("UV rays are your skin's");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro2[] = _("enemy. Get protected.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Strategy[] = _("No mercy!");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Pokemon[] = _("Cute WATER POKéMON.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro1[] = _("I have too many fans.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro2[] = _("I was interviewed on TV.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Strategy[] = _("I think about this & that.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Pokemon[] = _("I like all POKéMON.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Intro1[] = _("What lies beyond that");
const u8 gMatchCallFlavorText_Picnicker_Diana_Intro2[] = _("yonder hill?");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Strategy[] = _("We battle together!");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Pokemon[] = _("We train together!");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro1[] = _("We like the same POKéMON,");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro2[] = _("but different desserts.");
const u8 gMatchCallFlavorText_Sailor_Ernest_Strategy[] = _("I force things with power!");
const u8 gMatchCallFlavorText_Sailor_Ernest_Pokemon[] = _("WATER and FIGHTING types.");
const u8 gMatchCallFlavorText_Sailor_Ernest_Intro1[] = _("Seamen are rough spirits!");
const u8 gMatchCallFlavorText_Sailor_Ernest_Intro2[] = _("Any complaints?");
const u8 gMatchCallFlavorText_Sailor_Cory_Strategy[] = _("Up for a fight anytime!");
const u8 gMatchCallFlavorText_Sailor_Cory_Pokemon[] = _("WATER POKéMON are my faves!");
const u8 gMatchCallFlavorText_Sailor_Cory_Intro1[] = _("If you want to shout loud,");
const u8 gMatchCallFlavorText_Sailor_Cory_Intro2[] = _("suck in air with your belly!");
const u8 gMatchCallFlavorText_Collector_Edwin_Strategy[] = _("Protect POKéMON from harm.");
const u8 gMatchCallFlavorText_Collector_Edwin_Pokemon[] = _("I love rare POKéMON.");
const u8 gMatchCallFlavorText_Collector_Edwin_Intro1[] = _("I want to collect all the");
const u8 gMatchCallFlavorText_Collector_Edwin_Intro2[] = _("world's rare POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Strategy[] = _("I count on power.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Pokemon[] = _("POKéMON are my children.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro1[] = _("It takes knowledge and");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro2[] = _("love to raise POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Strategy[] = _("Full-on attack!");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Pokemon[] = _("Anything. I'll raise it.");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro1[] = _("I give them {POKEBLOCK}S for");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro2[] = _("going after CONTEST titles.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Strategy[] = _("I raise POKéMON with care.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Pokemon[] = _("Fun-to-raise POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro1[] = _("Treat every POKéMON you");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro2[] = _("meet with respect.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Strategy[] = _("I believe in my POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Pokemon[] = _("I like strong POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro1[] = _("I'm training for rescue");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro2[] = _("work with my POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Strategy[] = _("Attack in waves!");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Pokemon[] = _("I use different types.");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro1[] = _("Those who destroy nature");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro2[] = _("must never be forgiven!");
const u8 gMatchCallFlavorText_Lass_Haley_Strategy[] = _("I'll show you some guts!");
const u8 gMatchCallFlavorText_Lass_Haley_Pokemon[] = _("Cute POKéMON are my faves!");
const u8 gMatchCallFlavorText_Lass_Haley_Intro1[] = _("After a battle, I always");
const u8 gMatchCallFlavorText_Lass_Haley_Intro2[] = _("bathe with my POKéMON.");
const u8 gMatchCallFlavorText_BugCatcher_James_Strategy[] = _("Lightning-fast attack!");
const u8 gMatchCallFlavorText_BugCatcher_James_Pokemon[] = _("BUG POKéMON are number 1!");
const u8 gMatchCallFlavorText_BugCatcher_James_Intro1[] = _("If you want to catch BUG");
const u8 gMatchCallFlavorText_BugCatcher_James_Intro2[] = _("POKéMON, wake up early.");
const u8 gMatchCallFlavorText_Hiker_Trent_Strategy[] = _("I battle with power.");
const u8 gMatchCallFlavorText_Hiker_Trent_Pokemon[] = _("Hard-bodied POKéMON.");
const u8 gMatchCallFlavorText_Hiker_Trent_Intro1[] = _("I've been planning a month");
const u8 gMatchCallFlavorText_Hiker_Trent_Intro2[] = _("for today's hike.");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Strategy[] = _("I like it hot!");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Pokemon[] = _("Hot POKéMON!");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro1[] = _("As much as I love POKéMON,");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro2[] = _("I surely like hiking!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Strategy[] = _("Lovey-dovey strategy!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Pokemon[] = _("Lovey-dovey POKéMON!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro1[] = _("We're lovey-dovey!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro2[] = _("Forever lovey-dovey!");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Strategy[] = _("We let it all hang out.");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Pokemon[] = _("The 1st POKéMON I caught.");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro1[] = _("POKéMON and I have grown");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro2[] = _("stronger together.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Strategy[] = _("ROCK-type power attack.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Pokemon[] = _("I prefer rock-hard POKéMON.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro1[] = _("A LEADER of a big GYM bears");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro2[] = _("a lot of responsibility.");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Strategy[] = _("Direct physical action!");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Pokemon[] = _("FIGHTING POKéMON rule!");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro1[] = _("The world awaits me as the");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro2[] = _("next big wave!");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Strategy[] = _("I choose to electrify.");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Pokemon[] = _("Get shocked by electricity!");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro1[] = _("One must never throw a");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro2[] = _("match. Even I must not.");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Strategy[] = _("Battle aggressively.");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Pokemon[] = _("Burn with passion!");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro1[] = _("Completely wash away daily");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro2[] = _("fatigue in hot springs!");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Strategy[] = _("I flexibly adapt my style.");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Pokemon[] = _("Grown in a balanced manner.");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro1[] = _("I walk the 30 minutes from");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro2[] = _("home to here every day.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Strategy[] = _("I take advantage of speed.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Pokemon[] = _("Graceful sky dancers.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro1[] = _("The ultimate would be to");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro2[] = _("live as one with nature.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Strategy[] = _("We battle in cooperation.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Pokemon[] = _("Always friendly POKéMON.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro1[] = _("Papa has trouble telling");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro2[] = _("the two of us apart!");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Strategy[] = _("I use splendid waterpower.");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Pokemon[] = _("POKéMON of elegance!");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro1[] = _("The adulation of beautiful");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro2[] = _("ladies fills me with energy!");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Strategy[] = _("Offense over defense!");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Pokemon[] = _("The DARK side's beauties.");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro1[] = _("They said I was a punk, but");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro2[] = _("I'm one of the ELITE FOUR!");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Strategy[] = _("Confuse and confound.");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Pokemon[] = _("There's nothing definite.");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro1[] = _("I wonder how my grandma at");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro2[] = _("MT. PYRE is doing?");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Strategy[] = _("I use items for help.");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Pokemon[] = _("Flaming passion in icy cold!");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro1[] = _("The ICE type can be better");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro2[] = _("trained in this hot land.");
const u8 gMatchCallFlavorText_EliteFour_Drake_Strategy[] = _("Harness strong abilities.");
const u8 gMatchCallFlavorText_EliteFour_Drake_Pokemon[] = _("The raw power of DRAGONS!");
const u8 gMatchCallFlavorText_EliteFour_Drake_Intro1[] = _("I dedicate myself to the");
const u8 gMatchCallFlavorText_EliteFour_Drake_Intro2[] = _("POKéMON that saved me.");
const u8 gMatchCallFlavorText_Champion_Wallace_Strategy[] = _("Dignity and respect.");
const u8 gMatchCallFlavorText_Champion_Wallace_Pokemon[] = _("I prefer POKéMON of grace.");
const u8 gMatchCallFlavorText_Champion_Wallace_Intro1[] = _("I represent beauty as");
const u8 gMatchCallFlavorText_Champion_Wallace_Intro2[] = _("well as intelligence.");
const u8 *const gMatchCallMessages[][4] =
const u8 gText_MatchCallAromaLady_Rose_Strategy[] = _("Becalm fighting emotions.");
const u8 gText_MatchCallAromaLady_Rose_Pokemon[] = _("Fragrant GRASS POKéMON.");
const u8 gText_MatchCallAromaLady_Rose_Intro1[] = _("Soothing aromas make the");
const u8 gText_MatchCallAromaLady_Rose_Intro2[] = _("body and mind healthy.");
const u8 gText_MatchCallRuinManiac_Andres_Strategy[] = _("I'm not very good at this.");
const u8 gText_MatchCallRuinManiac_Andres_Pokemon[] = _("Ruin-exploration partners.");
const u8 gText_MatchCallRuinManiac_Andres_Intro1[] = _("I am searching for undersea");
const u8 gText_MatchCallRuinManiac_Andres_Intro2[] = _("ruins and relics.");
const u8 gText_MatchCallRuinManiac_Dusty_Strategy[] = _("Overwhelm with power!");
const u8 gText_MatchCallRuinManiac_Dusty_Pokemon[] = _("Craggy ROCK POKéMON.");
const u8 gText_MatchCallRuinManiac_Dusty_Intro1[] = _("In search of ancient lore,");
const u8 gText_MatchCallRuinManiac_Dusty_Intro2[] = _("I travel the world.");
const u8 gText_MatchCallTuber_Lola_Strategy[] = _("I'm going to try hard!");
const u8 gText_MatchCallTuber_Lola_Pokemon[] = _("Good swimmer POKéMON.");
const u8 gText_MatchCallTuber_Lola_Intro1[] = _("I wish I could swim without");
const u8 gText_MatchCallTuber_Lola_Intro2[] = _("using an inner tube.");
const u8 gText_MatchCallTuber_Ricky_Strategy[] = _("I don't know. I'll try hard.");
const u8 gText_MatchCallTuber_Ricky_Pokemon[] = _("WATER POKéMON are buddies.");
const u8 gText_MatchCallTuber_Ricky_Intro1[] = _("It's not like I can't swim.");
const u8 gText_MatchCallTuber_Ricky_Intro2[] = _("I just like my inner tube.");
const u8 gText_MatchCallSisAndBro_LilaAndRoy_Strategy[] = _("We split our duties.");
const u8 gText_MatchCallSisAndBro_LilaAndRoy_Pokemon[] = _("We like friendly POKéMON.");
const u8 gText_MatchCallSisAndBro_LilaAndRoy_Intro1[] = _("We enjoy POKéMON together");
const u8 gText_MatchCallSisAndBro_LilaAndRoy_Intro2[] = _("as sister and brother.");
const u8 gText_MatchCallCooltrainer_Cristin_Strategy[] = _("I finish with power moves!");
const u8 gText_MatchCallCooltrainer_Cristin_Pokemon[] = _("A mix of different types.");
const u8 gText_MatchCallCooltrainer_Cristin_Intro1[] = _("I aim to become the ultimate");
const u8 gText_MatchCallCooltrainer_Cristin_Intro2[] = _("TRAINER!");
const u8 gText_MatchCallCooltrainer_Brooke_Strategy[] = _("Exploit the foe's weakness.");
const u8 gText_MatchCallCooltrainer_Brooke_Pokemon[] = _("Balance is crucial.");
const u8 gText_MatchCallCooltrainer_Brooke_Intro1[] = _("My goal is to become the");
const u8 gText_MatchCallCooltrainer_Brooke_Intro2[] = _("POKéMON CHAMPION.");
const u8 gText_MatchCallCooltrainer_Wilton_Strategy[] = _("Upset the opponent.");
const u8 gText_MatchCallCooltrainer_Wilton_Pokemon[] = _("Type doesn't matter.");
const u8 gText_MatchCallCooltrainer_Wilton_Intro1[] = _("I'm a top student at the");
const u8 gText_MatchCallCooltrainer_Wilton_Intro2[] = _("TRAINER'S SCHOOL.");
const u8 gText_MatchCallHexManiac_Valerie_Strategy[] = _("Slow, steady suffering.");
const u8 gText_MatchCallHexManiac_Valerie_Pokemon[] = _("Scary to meet at night.");
const u8 gText_MatchCallHexManiac_Valerie_Intro1[] = _("I see things that others");
const u8 gText_MatchCallHexManiac_Valerie_Intro2[] = _("can't see...");
const u8 gText_MatchCallLady_Cindy_Strategy[] = _("Anything to win.");
const u8 gText_MatchCallLady_Cindy_Pokemon[] = _("Gorgeous type!");
const u8 gText_MatchCallLady_Cindy_Intro1[] = _("I have a pool specially for");
const u8 gText_MatchCallLady_Cindy_Intro2[] = _("my POKéMON at home.");
const u8 gText_MatchCallBeauty_Thalia_Strategy[] = _("You'll fall under my spell!");
const u8 gText_MatchCallBeauty_Thalia_Pokemon[] = _("Mature WATER type.");
const u8 gText_MatchCallBeauty_Thalia_Intro1[] = _("I dream of cruising around");
const u8 gText_MatchCallBeauty_Thalia_Intro2[] = _("the world on a luxury liner.");
const u8 gText_MatchCallBeauty_Jessica_Strategy[] = _("I'll lead you astray.");
const u8 gText_MatchCallBeauty_Jessica_Pokemon[] = _("Cute, of course.");
const u8 gText_MatchCallBeauty_Jessica_Intro1[] = _("I love the SAFARI ZONE.");
const u8 gText_MatchCallBeauty_Jessica_Intro2[] = _("I seem to end up there.");
const u8 gText_MatchCallRichBoy_Winston_Strategy[] = _("Strategy? Who needs it?");
const u8 gText_MatchCallRichBoy_Winston_Pokemon[] = _("I spent big money on it!");
const u8 gText_MatchCallRichBoy_Winston_Intro1[] = _("I, being rich, sleep in a");
const u8 gText_MatchCallRichBoy_Winston_Intro2[] = _("custom POKéMON bed.");
const u8 gText_MatchCallPokeManiac_Steve_Strategy[] = _("Wrestle down with power.");
const u8 gText_MatchCallPokeManiac_Steve_Pokemon[] = _("Took all night to catch.");
const u8 gText_MatchCallPokeManiac_Steve_Intro1[] = _("Big, burly, and buff");
const u8 gText_MatchCallPokeManiac_Steve_Intro2[] = _("POKéMON are the best...");
const u8 gText_MatchCallSwimmer_Tony_Strategy[] = _("Ram at full speed!");
const u8 gText_MatchCallSwimmer_Tony_Pokemon[] = _("Funky WATER type!");
const u8 gText_MatchCallSwimmer_Tony_Intro1[] = _("If I can't be out swimming,");
const u8 gText_MatchCallSwimmer_Tony_Intro2[] = _("I'll be pumping weights.");
const u8 gText_MatchCallBlackBelt_Nob_Strategy[] = _("Grand slam pummeling!");
const u8 gText_MatchCallBlackBelt_Nob_Pokemon[] = _("FIGHTING type.");
const u8 gText_MatchCallBlackBelt_Nob_Intro1[] = _("Not to brag, but I can bust");
const u8 gText_MatchCallBlackBelt_Nob_Intro2[] = _("ten roof tiles!");
const u8 gText_MatchCallBlackBelt_Koji_Strategy[] = _("Witness karate power!");
const u8 gText_MatchCallBlackBelt_Koji_Pokemon[] = _("My partners in training!");
const u8 gText_MatchCallBlackBelt_Koji_Intro1[] = _("Let us discuss matters of");
const u8 gText_MatchCallBlackBelt_Koji_Intro2[] = _("the world with bare fists!");
const u8 gText_MatchCallGuitarist_Fernando_Strategy[] = _("Rock to stunning sounds!");
const u8 gText_MatchCallGuitarist_Fernando_Pokemon[] = _("Electric-and-sound combo!");
const u8 gText_MatchCallGuitarist_Fernando_Intro1[] = _("My compositions will shock");
const u8 gText_MatchCallGuitarist_Fernando_Intro2[] = _("you and stun you!");
const u8 gText_MatchCallGuitarist_Dalton_Strategy[] = _("I'll electrify you!");
const u8 gText_MatchCallGuitarist_Dalton_Pokemon[] = _("They're ELECTRIC!");
const u8 gText_MatchCallGuitarist_Dalton_Intro1[] = _("I want to make people cry");
const u8 gText_MatchCallGuitarist_Dalton_Intro2[] = _("with songs from my heart.");
const u8 gText_MatchCallKindler_Bernie_Strategy[] = _("Burn it all down!");
const u8 gText_MatchCallKindler_Bernie_Pokemon[] = _("Burn-inducing POKéMON.");
const u8 gText_MatchCallKindler_Bernie_Intro1[] = _("When you light a campfire,");
const u8 gText_MatchCallKindler_Bernie_Intro2[] = _("be sure there's some water.");
const u8 gText_MatchCallCamper_Ethan_Strategy[] = _("Hang in and be tenacious!");
const u8 gText_MatchCallCamper_Ethan_Pokemon[] = _("I'll raise any POKéMON.");
const u8 gText_MatchCallCamper_Ethan_Intro1[] = _("POKéMON raised in the wild");
const u8 gText_MatchCallCamper_Ethan_Intro2[] = _("grow strong!");
const u8 gText_MatchCallOldCouple_JohnAndJay_Strategy[] = _("Our love lets us prevail.");
const u8 gText_MatchCallOldCouple_JohnAndJay_Pokemon[] = _("We've had them for years.");
const u8 gText_MatchCallOldCouple_JohnAndJay_Intro1[] = _("Married 50 years, we've");
const u8 gText_MatchCallOldCouple_JohnAndJay_Intro2[] = _("devotedly raised POKéMON.");
const u8 gText_MatchCallBugManiac_Jeffrey_Strategy[] = _("Attack in waves!");
const u8 gText_MatchCallBugManiac_Jeffrey_Pokemon[] = _("BUG POKéMON are cool.");
const u8 gText_MatchCallBugManiac_Jeffrey_Intro1[] = _("I go into the forest every");
const u8 gText_MatchCallBugManiac_Jeffrey_Intro2[] = _("day to catch BUG POKéMON.");
const u8 gText_MatchCallPsychic_Cameron_Strategy[] = _("Daze and confuse!");
const u8 gText_MatchCallPsychic_Cameron_Pokemon[] = _("Ones with weird powers.");
const u8 gText_MatchCallPsychic_Cameron_Intro1[] = _("I can see through exactly");
const u8 gText_MatchCallPsychic_Cameron_Intro2[] = _("what you're thinking!");
const u8 gText_MatchCallPsychic_Jacki_Strategy[] = _("Battle at full power.");
const u8 gText_MatchCallPsychic_Jacki_Pokemon[] = _("POKéMON of many mysteries.");
const u8 gText_MatchCallPsychic_Jacki_Intro1[] = _("When we spoke, I was really");
const u8 gText_MatchCallPsychic_Jacki_Intro2[] = _("using telepathy.");
const u8 gText_MatchCallGentleman_Walter_Strategy[] = _("Calm and collected.");
const u8 gText_MatchCallGentleman_Walter_Pokemon[] = _("POKéMON of distinction.");
const u8 gText_MatchCallGentleman_Walter_Intro1[] = _("We enjoy a spot of tea");
const u8 gText_MatchCallGentleman_Walter_Intro2[] = _("every day. It's imported.");
const u8 gText_MatchCallSchoolKid_Karen_Strategy[] = _("I use my head to battle.");
const u8 gText_MatchCallSchoolKid_Karen_Pokemon[] = _("I love any kind of POKéMON!");
const u8 gText_MatchCallSchoolKid_Karen_Intro1[] = _("My daddy gives me spending");
const u8 gText_MatchCallSchoolKid_Karen_Intro2[] = _("money if I ace a test.");
const u8 gText_MatchCallSchoolKid_Jerry_Strategy[] = _("My knowledge rules!");
const u8 gText_MatchCallSchoolKid_Jerry_Pokemon[] = _("Any smart POKéMON!");
const u8 gText_MatchCallSchoolKid_Jerry_Intro1[] = _("I want to be a POKéMON");
const u8 gText_MatchCallSchoolKid_Jerry_Intro2[] = _("researcher in the future.");
const u8 gText_MatchCallSrAndJr_AnnaAndMeg_Strategy[] = _("We talk it over first.");
const u8 gText_MatchCallSrAndJr_AnnaAndMeg_Pokemon[] = _("POKéMON that we both like.");
const u8 gText_MatchCallSrAndJr_AnnaAndMeg_Intro1[] = _("We're senior and junior");
const u8 gText_MatchCallSrAndJr_AnnaAndMeg_Intro2[] = _("students into POKéMON!");
const u8 gText_MatchCallPokefan_Isabel_Strategy[] = _("Go for it, my dears!");
const u8 gText_MatchCallPokefan_Isabel_Pokemon[] = _("I have no likes or dislikes.");
const u8 gText_MatchCallPokefan_Isabel_Intro1[] = _("While out shopping for");
const u8 gText_MatchCallPokefan_Isabel_Intro2[] = _("supper, I battle too.");
const u8 gText_MatchCallPokefan_Miguel_Strategy[] = _("I battle with love!");
const u8 gText_MatchCallPokefan_Miguel_Pokemon[] = _("A POKéMON raised with love!");
const u8 gText_MatchCallPokefan_Miguel_Intro1[] = _("It's important to build");
const u8 gText_MatchCallPokefan_Miguel_Intro2[] = _("trust with your POKéMON.");
const u8 gText_MatchCallExpert_Timothy_Strategy[] = _("I see through your moves!");
const u8 gText_MatchCallExpert_Timothy_Pokemon[] = _("The essence of FIGHTING.");
const u8 gText_MatchCallExpert_Timothy_Intro1[] = _("I'm not ready to give way");
const u8 gText_MatchCallExpert_Timothy_Intro2[] = _("to the young yet!");
const u8 gText_MatchCallExpert_Shelby_Strategy[] = _("Attack while defending.");
const u8 gText_MatchCallExpert_Shelby_Pokemon[] = _("The FIGHTING type.");
const u8 gText_MatchCallExpert_Shelby_Intro1[] = _("Being old, I have my own");
const u8 gText_MatchCallExpert_Shelby_Intro2[] = _("style of battling.");
const u8 gText_MatchCallYoungster_Calvin_Strategy[] = _("I do what I can.");
const u8 gText_MatchCallYoungster_Calvin_Pokemon[] = _("I use different types.");
const u8 gText_MatchCallYoungster_Calvin_Intro1[] = _("I'm going to keep working");
const u8 gText_MatchCallYoungster_Calvin_Intro2[] = _("until I beat a GYM LEADER.");
const u8 gText_MatchCallFisherman_Elliot_Strategy[] = _("I battle patiently.");
const u8 gText_MatchCallFisherman_Elliot_Pokemon[] = _("WATER POKéMON to battle!");
const u8 gText_MatchCallFisherman_Elliot_Intro1[] = _("I'm the world's only guy to");
const u8 gText_MatchCallFisherman_Elliot_Intro2[] = _("catch a huge POKéMON!");
const u8 gText_MatchCallTriathlete_Isaiah_Strategy[] = _("Exploit the environment!");
const u8 gText_MatchCallTriathlete_Isaiah_Pokemon[] = _("All hail the WATER type!");
const u8 gText_MatchCallTriathlete_Isaiah_Intro1[] = _("I won't be beaten by some");
const u8 gText_MatchCallTriathlete_Isaiah_Intro2[] = _("beach bum SWIMMER!");
const u8 gText_MatchCallTriathlete_Maria_Strategy[] = _("Speed above all!");
const u8 gText_MatchCallTriathlete_Maria_Pokemon[] = _("I use a speedy POKéMON.");
const u8 gText_MatchCallTriathlete_Maria_Intro1[] = _("A marathon is a challenge");
const u8 gText_MatchCallTriathlete_Maria_Intro2[] = _("against your own self.");
const u8 gText_MatchCallTriathlete_Abigail_Strategy[] = _("Defense is crucial.");
const u8 gText_MatchCallTriathlete_Abigail_Pokemon[] = _("My POKéMON is solid.");
const u8 gText_MatchCallTriathlete_Abigail_Intro1[] = _("I started this for dieting,");
const u8 gText_MatchCallTriathlete_Abigail_Intro2[] = _("but I got right into it.");
const u8 gText_MatchCallTriathlete_Dylan_Strategy[] = _("Strike before stricken!");
const u8 gText_MatchCallTriathlete_Dylan_Pokemon[] = _("A fast-running POKéMON!");
const u8 gText_MatchCallTriathlete_Dylan_Intro1[] = _("If you ran and ran, you'd");
const u8 gText_MatchCallTriathlete_Dylan_Intro2[] = _("become one with the wind.");
const u8 gText_MatchCallTriathlete_Katelyn_Strategy[] = _("All-out offensive!");
const u8 gText_MatchCallTriathlete_Katelyn_Pokemon[] = _("WATER POKéMON rule!");
const u8 gText_MatchCallTriathlete_Katelyn_Intro1[] = _("I must swim over 6 miles");
const u8 gText_MatchCallTriathlete_Katelyn_Intro2[] = _("every day.");
const u8 gText_MatchCallTriathlete_Benjamin_Strategy[] = _("Push and push again!");
const u8 gText_MatchCallTriathlete_Benjamin_Pokemon[] = _("The strength of STEEL.");
const u8 gText_MatchCallTriathlete_Benjamin_Intro1[] = _("If you're sweating, get");
const u8 gText_MatchCallTriathlete_Benjamin_Intro2[] = _("fluids into you regularly.");
const u8 gText_MatchCallTriathlete_Pablo_Strategy[] = _("Draw the power of WATER.");
const u8 gText_MatchCallTriathlete_Pablo_Pokemon[] = _("Toughened WATER POKéMON.");
const u8 gText_MatchCallTriathlete_Pablo_Intro1[] = _("Training POKéMON is good,");
const u8 gText_MatchCallTriathlete_Pablo_Intro2[] = _("but don't neglect yourself.");
const u8 gText_MatchCallDragonTamer_Nicolas_Strategy[] = _("It's about POKéMON power!");
const u8 gText_MatchCallDragonTamer_Nicolas_Pokemon[] = _("See the power of DRAGONS!");
const u8 gText_MatchCallDragonTamer_Nicolas_Intro1[] = _("I'll become legendary as the");
const u8 gText_MatchCallDragonTamer_Nicolas_Intro2[] = _("strongest one day!");
const u8 gText_MatchCallBirdKeeper_Robert_Strategy[] = _("I'll show you my technique!");
const u8 gText_MatchCallBirdKeeper_Robert_Pokemon[] = _("Elegantly wheeling BIRDS.");
const u8 gText_MatchCallBirdKeeper_Robert_Intro1[] = _("My BIRD POKéMON, deliver my");
const u8 gText_MatchCallBirdKeeper_Robert_Intro2[] = _("love to that girl!");
const u8 gText_MatchCallNinjaBoy_Lao_Strategy[] = _("You'll suffer from poison!");
const u8 gText_MatchCallNinjaBoy_Lao_Pokemon[] = _("Poisonous POKéMON.");
const u8 gText_MatchCallNinjaBoy_Lao_Intro1[] = _("I undertake training so");
const u8 gText_MatchCallNinjaBoy_Lao_Intro2[] = _("that I may become a ninja.");
const u8 gText_MatchCallBattleGirl_Cyndy_Strategy[] = _("The first strike wins!");
const u8 gText_MatchCallBattleGirl_Cyndy_Pokemon[] = _("Speedy FIGHTING type.");
const u8 gText_MatchCallBattleGirl_Cyndy_Intro1[] = _("If my POKéMON lose,");
const u8 gText_MatchCallBattleGirl_Cyndy_Intro2[] = _("I'll carry on the fight!");
const u8 gText_MatchCallParasolLady_Madeline_Strategy[] = _("Go, go, my POKéMON!");
const u8 gText_MatchCallParasolLady_Madeline_Pokemon[] = _("I'll raise anything.");
const u8 gText_MatchCallParasolLady_Madeline_Intro1[] = _("UV rays are your skin's");
const u8 gText_MatchCallParasolLady_Madeline_Intro2[] = _("enemy. Get protected.");
const u8 gText_MatchCallSwimmer_Jenny_Strategy[] = _("No mercy!");
const u8 gText_MatchCallSwimmer_Jenny_Pokemon[] = _("Cute WATER POKéMON.");
const u8 gText_MatchCallSwimmer_Jenny_Intro1[] = _("I have too many fans.");
const u8 gText_MatchCallSwimmer_Jenny_Intro2[] = _("I was interviewed on TV.");
const u8 gText_MatchCallPicnicker_Diana_Strategy[] = _("I think about this & that.");
const u8 gText_MatchCallPicnicker_Diana_Pokemon[] = _("I like all POKéMON.");
const u8 gText_MatchCallPicnicker_Diana_Intro1[] = _("What lies beyond that");
const u8 gText_MatchCallPicnicker_Diana_Intro2[] = _("yonder hill?");
const u8 gText_MatchCallTwins_AmyAndLiv_Strategy[] = _("We battle together!");
const u8 gText_MatchCallTwins_AmyAndLiv_Pokemon[] = _("We train together!");
const u8 gText_MatchCallTwins_AmyAndLiv_Intro1[] = _("We like the same POKéMON,");
const u8 gText_MatchCallTwins_AmyAndLiv_Intro2[] = _("but different desserts.");
const u8 gText_MatchCallSailor_Ernest_Strategy[] = _("I force things with power!");
const u8 gText_MatchCallSailor_Ernest_Pokemon[] = _("WATER and FIGHTING types.");
const u8 gText_MatchCallSailor_Ernest_Intro1[] = _("Seamen are rough spirits!");
const u8 gText_MatchCallSailor_Ernest_Intro2[] = _("Any complaints?");
const u8 gText_MatchCallSailor_Cory_Strategy[] = _("Up for a fight anytime!");
const u8 gText_MatchCallSailor_Cory_Pokemon[] = _("WATER POKéMON are my faves!");
const u8 gText_MatchCallSailor_Cory_Intro1[] = _("If you want to shout loud,");
const u8 gText_MatchCallSailor_Cory_Intro2[] = _("suck in air with your belly!");
const u8 gText_MatchCallCollector_Edwin_Strategy[] = _("Protect POKéMON from harm.");
const u8 gText_MatchCallCollector_Edwin_Pokemon[] = _("I love rare POKéMON.");
const u8 gText_MatchCallCollector_Edwin_Intro1[] = _("I want to collect all the");
const u8 gText_MatchCallCollector_Edwin_Intro2[] = _("world's rare POKéMON.");
const u8 gText_MatchCallPkmnBreeder_Lydia_Strategy[] = _("I count on power.");
const u8 gText_MatchCallPkmnBreeder_Lydia_Pokemon[] = _("POKéMON are my children.");
const u8 gText_MatchCallPkmnBreeder_Lydia_Intro1[] = _("It takes knowledge and");
const u8 gText_MatchCallPkmnBreeder_Lydia_Intro2[] = _("love to raise POKéMON.");
const u8 gText_MatchCallPkmnBreeder_Isaac_Strategy[] = _("Full-on attack!");
const u8 gText_MatchCallPkmnBreeder_Isaac_Pokemon[] = _("Anything. I'll raise it.");
const u8 gText_MatchCallPkmnBreeder_Isaac_Intro1[] = _("I give them {POKEBLOCK}S for");
const u8 gText_MatchCallPkmnBreeder_Isaac_Intro2[] = _("going after CONTEST titles.");
const u8 gText_MatchCallPkmnBreeder_Gabrielle_Strategy[] = _("I raise POKéMON with care.");
const u8 gText_MatchCallPkmnBreeder_Gabrielle_Pokemon[] = _("Fun-to-raise POKéMON.");
const u8 gText_MatchCallPkmnBreeder_Gabrielle_Intro1[] = _("Treat every POKéMON you");
const u8 gText_MatchCallPkmnBreeder_Gabrielle_Intro2[] = _("meet with respect.");
const u8 gText_MatchCallPkmnRanger_Catherine_Strategy[] = _("I believe in my POKéMON.");
const u8 gText_MatchCallPkmnRanger_Catherine_Pokemon[] = _("I like strong POKéMON.");
const u8 gText_MatchCallPkmnRanger_Catherine_Intro1[] = _("I'm training for rescue");
const u8 gText_MatchCallPkmnRanger_Catherine_Intro2[] = _("work with my POKéMON.");
const u8 gText_MatchCallPkmnRanger_Jackson_Strategy[] = _("Attack in waves!");
const u8 gText_MatchCallPkmnRanger_Jackson_Pokemon[] = _("I use different types.");
const u8 gText_MatchCallPkmnRanger_Jackson_Intro1[] = _("Those who destroy nature");
const u8 gText_MatchCallPkmnRanger_Jackson_Intro2[] = _("must never be forgiven!");
const u8 gText_MatchCallLass_Haley_Strategy[] = _("I'll show you some guts!");
const u8 gText_MatchCallLass_Haley_Pokemon[] = _("Cute POKéMON are my faves!");
const u8 gText_MatchCallLass_Haley_Intro1[] = _("After a battle, I always");
const u8 gText_MatchCallLass_Haley_Intro2[] = _("bathe with my POKéMON.");
const u8 gText_MatchCallBugCatcher_James_Strategy[] = _("Lightning-fast attack!");
const u8 gText_MatchCallBugCatcher_James_Pokemon[] = _("BUG POKéMON are number 1!");
const u8 gText_MatchCallBugCatcher_James_Intro1[] = _("If you want to catch BUG");
const u8 gText_MatchCallBugCatcher_James_Intro2[] = _("POKéMON, wake up early.");
const u8 gText_MatchCallHiker_Trent_Strategy[] = _("I battle with power.");
const u8 gText_MatchCallHiker_Trent_Pokemon[] = _("Hard-bodied POKéMON.");
const u8 gText_MatchCallHiker_Trent_Intro1[] = _("I've been planning a month");
const u8 gText_MatchCallHiker_Trent_Intro2[] = _("for today's hike.");
const u8 gText_MatchCallHiker_Sawyer_Strategy[] = _("I like it hot!");
const u8 gText_MatchCallHiker_Sawyer_Pokemon[] = _("Hot POKéMON!");
const u8 gText_MatchCallHiker_Sawyer_Intro1[] = _("As much as I love POKéMON,");
const u8 gText_MatchCallHiker_Sawyer_Intro2[] = _("I surely like hiking!");
const u8 gText_MatchCallYoungCouple_LoisAndHal_Strategy[] = _("Lovey-dovey strategy!");
const u8 gText_MatchCallYoungCouple_LoisAndHal_Pokemon[] = _("Lovey-dovey POKéMON!");
const u8 gText_MatchCallYoungCouple_LoisAndHal_Intro1[] = _("We're lovey-dovey!");
const u8 gText_MatchCallYoungCouple_LoisAndHal_Intro2[] = _("Forever lovey-dovey!");
const u8 gText_MatchCallPkmnTrainer_Wally_Strategy[] = _("We let it all hang out.");
const u8 gText_MatchCallPkmnTrainer_Wally_Pokemon[] = _("The 1st POKéMON I caught.");
const u8 gText_MatchCallPkmnTrainer_Wally_Intro1[] = _("POKéMON and I have grown");
const u8 gText_MatchCallPkmnTrainer_Wally_Intro2[] = _("stronger together.");
const u8 gText_MatchCallRockinWhiz_Roxanne_Strategy[] = _("ROCK-type power attack.");
const u8 gText_MatchCallRockinWhiz_Roxanne_Pokemon[] = _("I prefer rock-hard POKéMON.");
const u8 gText_MatchCallRockinWhiz_Roxanne_Intro1[] = _("A LEADER of a big GYM bears");
const u8 gText_MatchCallRockinWhiz_Roxanne_Intro2[] = _("a lot of responsibility.");
const u8 gText_MatchCallTheBigHit_Brawly_Strategy[] = _("Direct physical action!");
const u8 gText_MatchCallTheBigHit_Brawly_Pokemon[] = _("FIGHTING POKéMON rule!");
const u8 gText_MatchCallTheBigHit_Brawly_Intro1[] = _("The world awaits me as the");
const u8 gText_MatchCallTheBigHit_Brawly_Intro2[] = _("next big wave!");
const u8 gText_MatchCallSwellShock_Wattson_Strategy[] = _("I choose to electrify.");
const u8 gText_MatchCallSwellShock_Wattson_Pokemon[] = _("Get shocked by electricity!");
const u8 gText_MatchCallSwellShock_Wattson_Intro1[] = _("One must never throw a");
const u8 gText_MatchCallSwellShock_Wattson_Intro2[] = _("match. Even I must not.");
const u8 gText_MatchCallPassionBurn_Flannery_Strategy[] = _("Battle aggressively.");
const u8 gText_MatchCallPassionBurn_Flannery_Pokemon[] = _("Burn with passion!");
const u8 gText_MatchCallPassionBurn_Flannery_Intro1[] = _("Completely wash away daily");
const u8 gText_MatchCallPassionBurn_Flannery_Intro2[] = _("fatigue in hot springs!");
const u8 gText_MatchCallReliableOne_Dad_Strategy[] = _("I flexibly adapt my style.");
const u8 gText_MatchCallReliableOne_Dad_Pokemon[] = _("Grown in a balanced manner.");
const u8 gText_MatchCallReliableOne_Dad_Intro1[] = _("I walk the 30 minutes from");
const u8 gText_MatchCallReliableOne_Dad_Intro2[] = _("home to here every day.");
const u8 gText_MatchCallSkyTamer_Winona_Strategy[] = _("I take advantage of speed.");
const u8 gText_MatchCallSkyTamer_Winona_Pokemon[] = _("Graceful sky dancers.");
const u8 gText_MatchCallSkyTamer_Winona_Intro1[] = _("The ultimate would be to");
const u8 gText_MatchCallSkyTamer_Winona_Intro2[] = _("live as one with nature.");
const u8 gText_MatchCallMysticDuo_TateAndLiza_Strategy[] = _("We battle in cooperation.");
const u8 gText_MatchCallMysticDuo_TateAndLiza_Pokemon[] = _("Always friendly POKéMON.");
const u8 gText_MatchCallMysticDuo_TateAndLiza_Intro1[] = _("Papa has trouble telling");
const u8 gText_MatchCallMysticDuo_TateAndLiza_Intro2[] = _("the two of us apart!");
const u8 gText_MatchCallDandyCharm_Juan_Strategy[] = _("I use splendid waterpower.");
const u8 gText_MatchCallDandyCharm_Juan_Pokemon[] = _("POKéMON of elegance!");
const u8 gText_MatchCallDandyCharm_Juan_Intro1[] = _("The adulation of beautiful");
const u8 gText_MatchCallDandyCharm_Juan_Intro2[] = _("ladies fills me with energy!");
const u8 gText_MatchCallEliteFour_Sidney_Strategy[] = _("Offense over defense!");
const u8 gText_MatchCallEliteFour_Sidney_Pokemon[] = _("The DARK side's beauties.");
const u8 gText_MatchCallEliteFour_Sidney_Intro1[] = _("They said I was a punk, but");
const u8 gText_MatchCallEliteFour_Sidney_Intro2[] = _("I'm one of the ELITE FOUR!");
const u8 gText_MatchCallEliteFour_Phoebe_Strategy[] = _("Confuse and confound.");
const u8 gText_MatchCallEliteFour_Phoebe_Pokemon[] = _("There's nothing definite.");
const u8 gText_MatchCallEliteFour_Phoebe_Intro1[] = _("I wonder how my grandma at");
const u8 gText_MatchCallEliteFour_Phoebe_Intro2[] = _("MT. PYRE is doing?");
const u8 gText_MatchCallEliteFour_Glacia_Strategy[] = _("I use items for help.");
const u8 gText_MatchCallEliteFour_Glacia_Pokemon[] = _("Flaming passion in icy cold!");
const u8 gText_MatchCallEliteFour_Glacia_Intro1[] = _("The ICE type can be better");
const u8 gText_MatchCallEliteFour_Glacia_Intro2[] = _("trained in this hot land.");
const u8 gText_MatchCallEliteFour_Drake_Strategy[] = _("Harness strong abilities.");
const u8 gText_MatchCallEliteFour_Drake_Pokemon[] = _("The raw power of DRAGONS!");
const u8 gText_MatchCallEliteFour_Drake_Intro1[] = _("I dedicate myself to the");
const u8 gText_MatchCallEliteFour_Drake_Intro2[] = _("POKéMON that saved me.");
const u8 gText_MatchCallChampion_Wallace_Strategy[] = _("Dignity and respect.");
const u8 gText_MatchCallChampion_Wallace_Pokemon[] = _("I prefer POKéMON of grace.");
const u8 gText_MatchCallChampion_Wallace_Intro1[] = _("I represent beauty as");
const u8 gText_MatchCallChampion_Wallace_Intro2[] = _("well as intelligence.");
const u8 *const gMatchCallFlavorTexts[REMATCH_TABLE_ENTRIES][CHECK_PAGE_ENTRY_COUNT] =
{
[REMATCH_ROSE] = MCFLAVOR(AromaLady_Rose),
[REMATCH_ANDRES] = MCFLAVOR(RuinManiac_Andres),

View File

@@ -54,8 +54,8 @@ static const struct WindowTemplate sDaycareLevelMenuWindowTemplate =
// which is copied to VAR_0x8004 and used as an index for GetDaycareCost
static const struct ListMenuItem sLevelMenuItems[] =
{
{gExpandedPlaceholder_Empty, 0},
{gExpandedPlaceholder_Empty, 1},
{gText_ExpandedPlaceholder_Empty, 0},
{gText_ExpandedPlaceholder_Empty, 1},
{gText_Exit, DAYCARE_LEVEL_MENU_EXIT}
};

View File

@@ -1060,7 +1060,7 @@ static bool32 SelectMatchCallTrainer(void)
static u32 GetNumRegisteredNPCs(void)
{
u32 i, count;
for (i = 0, count = 0; i < 64; i++)
for (i = 0, count = 0; i < REMATCH_SPECIAL_TRAINER_START; i++)
{
if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i))
count++;
@@ -1072,7 +1072,7 @@ static u32 GetNumRegisteredNPCs(void)
static u32 GetActiveMatchCallTrainerId(u32 activeMatchCallId)
{
u32 i;
for (i = 0; i < 64; i++)
for (i = 0; i < REMATCH_SPECIAL_TRAINER_START; i++)
{
if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i))
{
@@ -1384,7 +1384,7 @@ static u16 GetRematchTrainerLocation(int matchCallId)
static u32 GetNumRematchTrainersFought(void)
{
u32 i, count;
for (i = 0, count = 0; i < 64; i++)
for (i = 0, count = 0; i < REMATCH_SPECIAL_TRAINER_START; i++)
{
if (HasTrainerBeenFought(gRematchTable[i].trainerIds[0]))
count++;
@@ -1961,7 +1961,7 @@ static const u8 *const sBirchDexRatingTexts[] =
gBirchDexRatingText_DexCompleted,
};
void sub_8197080(u8 *destStr)
void BufferPokedexRatingForMatchCall(u8 *destStr)
{
int numSeen, numCaught;
u8 *str;

View File

@@ -33,7 +33,6 @@ EWRAM_DATA static struct NamingScreenData *gNamingScreenData = NULL;
extern u16 gKeyRepeatStartDelay;
// extern text
extern const u8 gExpandedPlaceholder_Empty[];
extern const u8 gText_MoveOkBack[];
extern const u8 gText_YourName[];
extern const u8 gText_BoxName[];
@@ -1679,7 +1678,7 @@ static void sub_80E4D10(void)
for (i = 0; i < maxChars; i++)
{
temp[0] = gNamingScreenData->textBuffer[i];
temp[1] = gExpandedPlaceholder_Empty[0];
temp[1] = gText_ExpandedPlaceholder_Empty[0];
unk2 = (IsLetter(temp[0]) == TRUE) ? 2 : 0;
AddTextPrinterParameterized(gNamingScreenData->windows[2], 1, temp, i * 8 + unk + unk2, 1, 0xFF, NULL);

View File

@@ -337,7 +337,7 @@ static void CB2_InitPokenavForTutorial(void)
else
{
InitPokenavResources(gPokenavResources);
gPokenavResources->mode = POKENAV_MODE_FORCE_CALL_1;
gPokenavResources->mode = POKENAV_MODE_FORCE_CALL_READY;
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();

View File

@@ -41,7 +41,7 @@ struct PokenavMainMenuResources
u32 (*unk4)(void);
u32 unk8;
u32 currentTaskId;
u32 unk10;
u32 helpBarWindowId;
u32 unk14;
struct Sprite *spinningPokenav;
struct Sprite *leftHeaderSprites[2];
@@ -68,10 +68,10 @@ static void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 dura
static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
static void InitPokenavMainMenuResources(void);
static void InitHoennMapHeaderSprites(void);
static void sub_81C7B74(void);
static void InitHelpBar(void);
static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0);
static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0);
static void sub_81C7BF8(u32 a0);
static void DrawHelpBar(u32 windowId);
static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
static u32 LoopedTask_InitPokenavMenu(s32 a0);
@@ -92,7 +92,7 @@ const struct BgTemplate gPokenavMainMenuBgTemplates[] =
}
};
const struct WindowTemplate gUnknown_0861FA08[2] =
static const struct WindowTemplate sHelpBarWindowTemplate[] =
{
{
.bg = 0,
@@ -103,31 +103,23 @@ const struct WindowTemplate gUnknown_0861FA08[2] =
.paletteNum = 0,
.baseBlock = 0x36,
},
{
.bg = 0xFF,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 0,
.height = 0,
.paletteNum = 0,
.baseBlock = 0,
},
DUMMY_WIN_TEMPLATE
};
const u8 *const sHelpBarTexts[12] =
static const u8 *const sHelpBarTexts[HELPBAR_COUNT] =
{
gText_Pokenav_ClearButtonList,
gText_PokenavMap_ZoomedOutButtons,
gText_PokenavMap_ZoomedInButtons,
gText_PokenavCondition_MonListButtons,
gText_PokenavCondition_MonStatusButtons,
gText_PokenavCondition_MarkingButtons,
gText_PokenavMatchCall_TrainerListButtons,
gText_PokenavMatchCall_CallMenuButtons,
gText_PokenavMatchCall_CheckTrainerButtons,
gText_PokenavRibbons_MonListButtons,
gText_PokenavRibbons_RibbonListButtons,
gText_PokenavRibbons_RibbonCheckButtons,
[HELPBAR_NONE] = gText_Pokenav_ClearButtonList,
[HELPBAR_MAP_ZOOMED_OUT] = gText_PokenavMap_ZoomedOutButtons,
[HELPBAR_MAP_ZOOMED_IN] = gText_PokenavMap_ZoomedInButtons,
[HELPBAR_CONDITION_MON_LIST] = gText_PokenavCondition_MonListButtons,
[HELPBAR_CONDITION_MON_STATUS] = gText_PokenavCondition_MonStatusButtons,
[HELPBAR_CONDITION_MARKINGS] = gText_PokenavCondition_MarkingButtons,
[HELPBAR_MC_TRAINER_LIST] = gText_PokenavMatchCall_TrainerListButtons,
[HELPBAR_MC_CALL_MENU] = gText_PokenavMatchCall_CallMenuButtons,
[HELPBAR_MC_CHECK_PAGE] = gText_PokenavMatchCall_CheckTrainerButtons,
[HELPBAR_RIBBONS_MON_LIST] = gText_PokenavRibbons_MonListButtons,
[HELPBAR_RIBBONS_LIST] = gText_PokenavRibbons_RibbonListButtons,
[HELPBAR_RIBBONS_CHECK] = gText_PokenavRibbons_RibbonCheckButtons,
};
static const u8 sHelpBarTextColors[3] =
@@ -386,7 +378,7 @@ static u32 LoopedTask_InitPokenavMenu(s32 a0)
if (free_temp_tile_data_buffers_if_possible())
return LT_PAUSE;
sub_81C7B74();
InitHelpBar();
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -676,31 +668,31 @@ void InitBgTemplates(const struct BgTemplate *templates, int count)
InitBgFromTemplate(templates++);
}
static void sub_81C7B74(void)
static void InitHelpBar(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
InitWindows(&gUnknown_0861FA08[0]);
structPtr->unk10 = 0;
sub_81C7BF8(structPtr->unk10);
PutWindowTilemap(structPtr->unk10);
CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
InitWindows(&sHelpBarWindowTemplate[0]);
structPtr->helpBarWindowId = 0;
DrawHelpBar(structPtr->helpBarWindowId);
PutWindowTilemap(structPtr->helpBarWindowId);
CopyWindowToVram(structPtr->helpBarWindowId, 3); // TODO: Use a defined constant here.
}
void sub_81C7BA4(u32 helpBarIndex)
void PrintHelpBarText(u32 textId)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
sub_81C7BF8(structPtr->unk10);
AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, sHelpBarTextColors, 0, sHelpBarTexts[helpBarIndex]);
DrawHelpBar(structPtr->helpBarWindowId);
AddTextPrinterParameterized3(structPtr->helpBarWindowId, 1, 0, 1, sHelpBarTextColors, 0, sHelpBarTexts[textId]);
}
bool32 IsDma3ManagerBusyWithBgCopy_(void)
bool32 WaitForHelpBar(void)
{
return IsDma3ManagerBusyWithBgCopy();
}
static void sub_81C7BF8(u32 windowId)
static void DrawHelpBar(u32 windowId)
{
FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);

File diff suppressed because it is too large Load Diff

View File

@@ -46,7 +46,7 @@ struct PokenavSub17Substruct
u32 unk28;
s32 unk2C;
u32 unk30;
void (*unk34)(struct PokenavMonList *, u8*);
void (*unk34)(struct PokenavMatchCallEntries *, u8*);
void (*unk38)(u16, u32, u32);
struct Sprite *rightArrow;
struct Sprite *upArrow;
@@ -67,8 +67,8 @@ struct PokenavSub17
extern void sub_81DB620(u32 windowId, u32 a1, u32 a2, u32 a3, u32 a4);
void sub_81C82E4(struct PokenavSub17 *a0);
bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct MatchCallListTemplate *a2, s32 a3);
void sub_81C9160(struct MatchCallWindowState *a0, struct MatchCallListTemplate *a1);
bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct PokenavListTemplate *a2, s32 a3);
void sub_81C9160(struct MatchCallWindowState *a0, struct PokenavListTemplate *a1);
void SpriteCB_MatchCallUpArrow(struct Sprite *sprite);
void SpriteCB_MatchCallDownArrow(struct Sprite *sprite);
void SpriteCB_MatchCallRightArrow(struct Sprite *sprite);
@@ -76,7 +76,7 @@ void ToggleMatchCallArrows(struct PokenavSub17Substruct *a0, u32 a1);
void sub_81C8FE0(struct PokenavSub17Substruct *a0);
void sub_81C8EF8(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
void sub_81C8ED0(void);
void sub_81C8E54(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 a2);
static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 a2);
void PrintMatchCallFieldNames(struct PokenavSub17Substruct *a0, u32 a1);
void sub_81C8D4C(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
void sub_81C8CB4(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
@@ -91,14 +91,14 @@ u32 LoopedTask_sub_81C83F0(s32 state);
u32 LoopedTask_sub_81C85A0(s32 state);
u32 LoopedTask_sub_81C8870(s32 state);
u32 LoopedTask_sub_81C8A28(s32 state);
u32 LoopedTask_sub_81C8958(s32 state);
u32 LoopedTask_PrintCheckPageInfo(s32 state);
static const u16 sMatchcallArrowPaletteData[] = INCBIN_U16("graphics/pokenav/arrows_matchcall.gbapal");
static const u32 sMatchcallArrowSpriteSheetData[] = INCBIN_U32("graphics/pokenav/arrows_matchcall.4bpp.lz");
EWRAM_DATA u32 gUnknown_0203CF44 = 0;
bool32 sub_81C81D4(const struct BgTemplate *arg0, struct MatchCallListTemplate *arg1, s32 arg2)
bool32 sub_81C81D4(const struct BgTemplate *arg0, struct PokenavListTemplate *arg1, s32 arg2)
{
struct PokenavSub17 *structPtr = AllocSubstruct(17, sizeof(struct PokenavSub17));
if (structPtr == NULL)
@@ -467,12 +467,12 @@ void sub_81C877C(void)
structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8870, 6);
}
void sub_81C87AC(s16 a0)
void PrintCheckPageInfo(s16 a0)
{
struct PokenavSub17 *structPtr = GetSubstructPtr(17);
structPtr->unk888.windowTopIndex += a0;
structPtr->unk89C = 0;
structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8958, 6);
structPtr->unk8A0 = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6);
}
void sub_81C87F0(void)
@@ -496,6 +496,7 @@ void sub_81C8838(void)
CopyWindowToVram(structPtr->unk0.unk0.windowId, 1);
}
// TODO:
u32 LoopedTask_sub_81C8870(s32 state)
{
struct PokenavSub17 *structPtr = GetSubstructPtr(17);
@@ -543,7 +544,7 @@ u32 LoopedTask_sub_81C8870(s32 state)
return LT_FINISH;
}
u32 LoopedTask_sub_81C8958(s32 state)
u32 LoopedTask_PrintCheckPageInfo(s32 state)
{
struct PokenavSub17 *structPtr = GetSubstructPtr(17);
if (IsDma3ManagerBusyWithBgCopy())
@@ -558,22 +559,22 @@ u32 LoopedTask_sub_81C8958(s32 state)
PrintMatchCallFieldNames(&structPtr->unk0, 0);
break;
case 2:
sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 0);
PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_STRATEGY);
break;
case 3:
PrintMatchCallFieldNames(&structPtr->unk0, 1);
break;
case 4:
sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 1);
PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_POKEMON);
break;
case 5:
PrintMatchCallFieldNames(&structPtr->unk0, 2);
break;
case 6:
sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 2);
PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_INTRO_1);
break;
case 7:
sub_81C8E54(&structPtr->unk888, &structPtr->unk0, 3);
PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_INTRO_2);
break;
default:
return LT_FINISH;
@@ -683,7 +684,7 @@ void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, s32 a1, s32 a2)
}
for (a2--; a2 != -1; a1 = (a1 + 1) & 0xF, a2--)
sub_81CBD48(a0->windowId, a1);
ClearRematchPokeballIcon(a0->windowId, a1);
CopyWindowToVram(a0->windowId, 1);
}
@@ -735,11 +736,19 @@ void PrintMatchCallFieldNames(struct PokenavSub17Substruct *a0, u32 fieldId)
CopyWindowRectToVram(a0->unk0.windowId, 2, 0, top << 1, a0->unk0.unk4, 2);
}
void sub_81C8E54(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 a2)
static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 checkPageEntry)
{
static const u8 array[] = {2, 4, 6, 7};
u32 r6 = (a1->unk0.unkA + array[a2]) & 0xF;
const u8 *str = sub_81CAFD8(a0->windowTopIndex, a2);
// lines 1, 3, and 5 are the field names printed by PrintMatchCallFieldNames
static const u8 lineOffsets[CHECK_PAGE_ENTRY_COUNT] =
{
[CHECK_PAGE_STRATEGY] = 2,
[CHECK_PAGE_POKEMON] = 4,
[CHECK_PAGE_INTRO_1] = 6,
[CHECK_PAGE_INTRO_2] = 7
};
u32 r6 = (a1->unk0.unkA + lineOffsets[checkPageEntry]) & 0xF;
const u8 *str = GetMatchCallFlavorText(a0->windowTopIndex, checkPageEntry);
if (str != NULL)
{
@@ -925,9 +934,9 @@ void ToggleMatchCallVerticalArrows(bool32 shouldHide)
structPtr->unk0.downArrow->data[7] = shouldHide;
}
void sub_81C9160(struct MatchCallWindowState *a0, struct MatchCallListTemplate *a1)
void sub_81C9160(struct MatchCallWindowState *a0, struct PokenavListTemplate *a1)
{
a0->unk10 = a1->unk0;
a0->unk10 = a1->list.matchCallEntries;
a0->windowTopIndex = a1->unk6;
a0->listLength = a1->unk4;
a0->unkC = a1->unk8;
@@ -953,13 +962,13 @@ void sub_81C9160(struct MatchCallWindowState *a0, struct MatchCallListTemplate *
}
}
bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct MatchCallListTemplate *a2, s32 a3)
bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct PokenavListTemplate *a2, s32 a3)
{
struct WindowTemplate window;
a0->unk0.bg = a1->bg;
a0->unk0.unk6 = a3;
a0->unk34 = a2->unk10;
a0->unk34 = a2->listFunc.unk10_2;
a0->unk38 = a2->unk14;
a0->unk0.unk1 = a2->unkD;
a0->unk0.unk2 = a2->unk9;

View File

@@ -64,7 +64,7 @@ bool32 PokenavCallback_Init_0(void)
state->menuType = GetPokenavMainMenuType();
state->cursorPos = 0;
state->descriptionId = 0;
state->helpBarIndex = 0;
state->helpBarIndex = HELPBAR_NONE;
sub_81C939C(state);
return TRUE;
}
@@ -78,7 +78,7 @@ bool32 PokenavCallback_Init_4(void)
state->menuType = GetPokenavMainMenuType();
state->cursorPos = 2;
state->descriptionId = 2;
state->helpBarIndex = 0;
state->helpBarIndex = HELPBAR_NONE;
sub_81C939C(state);
return TRUE;
}
@@ -105,7 +105,7 @@ bool32 PokenavCallback_Init_2(void)
state->menuType = 3;
state->cursorPos = 0;
state->descriptionId = 5;
state->helpBarIndex = 0;
state->helpBarIndex = HELPBAR_NONE;
sub_81C939C(state);
return TRUE;
}
@@ -119,7 +119,7 @@ bool32 PokenavCallback_Init_3(void)
state->menuType = 4;
state->cursorPos = sub_81C76AC();
state->descriptionId = state->cursorPos + 8;
state->helpBarIndex = 0;
state->helpBarIndex = HELPBAR_NONE;
sub_81C939C(state);
return TRUE;
}
@@ -151,9 +151,9 @@ static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*)
default:
case POKENAV_MODE_NORMAL:
return sub_81C943C;
case POKENAV_MODE_FORCE_CALL_1:
case POKENAV_MODE_FORCE_CALL_READY:
return sub_81C9520;
case POKENAV_MODE_FORCE_CALL_2:
case POKENAV_MODE_FORCE_CALL_EXIT:
return sub_81C9588;
}
}
@@ -179,7 +179,7 @@ static u32 sub_81C943C(struct Pokenav1Struct *a0)
switch (sDescriptionIds[a0->menuType][a0->cursorPos])
{
case 0:
a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? 2 : 1;
a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? HELPBAR_MAP_ZOOMED_IN : HELPBAR_MAP_ZOOMED_OUT;
sub_81C97B0(a0, POKENAV_MENU_6);
return 8;
case 1:
@@ -189,13 +189,13 @@ static u32 sub_81C943C(struct Pokenav1Struct *a0)
a0->callback = sub_81C963C;
return 2;
case 2:
a0->helpBarIndex = 6;
a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
sub_81C97B0(a0, POKENAV_MENU_B);
return 8;
case 3:
if (CanViewRibbonsMenu())
{
a0->helpBarIndex = 9;
a0->helpBarIndex = HELPBAR_RIBBONS_MON_LIST;
sub_81C97B0(a0, POKENAV_MENU_C);
return 8;
}
@@ -224,7 +224,7 @@ static u32 sub_81C9520(struct Pokenav1Struct *a0)
{
if (sDescriptionIds[a0->menuType][a0->cursorPos] == 2)
{
a0->helpBarIndex = 6;
a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
sub_81C97B0(a0, POKENAV_MENU_B);
return 8;
}
@@ -259,7 +259,7 @@ static u32 sub_81C9588(struct Pokenav1Struct *a0)
}
else if (v0 == 2)
{
a0->helpBarIndex = 6;
a0->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
sub_81C97B0(a0, POKENAV_MENU_B);
return 8;
}
@@ -349,7 +349,7 @@ static u32 sub_81C96FC(struct Pokenav1Struct *a0)
{
sub_81C7694(v0 - 8);
sub_81C97B0(a0, POKENAV_MENU_8);
a0->helpBarIndex = 3;
a0->helpBarIndex = HELPBAR_CONDITION_MON_LIST;
return 8;
}
else
@@ -459,7 +459,7 @@ int sub_81C98B4(void)
return state->descriptionId;
}
u16 sub_81C98C4(void)
u16 GetHelpBarTextId(void)
{
struct Pokenav1Struct *state = GetSubstructPtr(1);
return state->helpBarIndex;

View File

@@ -573,7 +573,7 @@ u32 sub_81D0A6C(s32 state)
return LT_PAUSE;
case 7:
sub_81D12D8(structPtr);
sub_81C7BA4(10);
PrintHelpBarText(HELPBAR_RIBBONS_LIST);
return LT_INC_AND_PAUSE;
case 8:
if (!IsDma3ManagerBusyWithBgCopy())
@@ -667,7 +667,7 @@ u32 sub_81D0D2C(s32 state)
if (!sub_81D1524(structPtr))
{
sub_81D0EFC(structPtr);
sub_81C7BA4(11);
PrintHelpBarText(HELPBAR_RIBBONS_CHECK);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;
@@ -721,7 +721,7 @@ u32 sub_81D0E00(s32 state)
if (!sub_81D1524(structPtr))
{
sub_81D0E84(structPtr);
sub_81C7BA4(10);
PrintHelpBarText(HELPBAR_RIBBONS_LIST);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;

View File

@@ -323,7 +323,7 @@ static bool32 sub_81C98D4(void)
for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
{
if (sub_81CB0C8(i) == gMapHeader.regionMapSectionId
&& sub_81CAE08(i)
&& IsRematchEntryRegistered(i)
&& gSaveBlock1Ptr->trainerRematches[i])
return TRUE;
}
@@ -706,10 +706,10 @@ static u32 sub_81C9F28(s32 state)
switch (state)
{
case 0:
sub_81C7BA4(sub_81C98C4());
PrintHelpBarText(GetHelpBarTextId());
return LT_INC_AND_PAUSE;
case 1:
if (IsDma3ManagerBusyWithBgCopy_())
if (WaitForHelpBar())
return LT_PAUSE;
sub_81C7880();
sub_81CA9C8();

View File

@@ -17,30 +17,40 @@
struct Pokenav3Struct
{
u16 unk0;
u16 unk2;
const u8 *unk4;
u16 unk8;
u16 unkA;
u16 optionCursorPos;
u16 maxOptionId;
const u8 *matchCallOptions;
u16 headerId;
u16 numRegistered;
u16 unkC;
u32 unk10;
u32 unk14;
u32 (*callback)(struct Pokenav3Struct*);
struct PokenavMonList unk1C[99];
struct PokenavMatchCallEntries matchCallEntries[MAX_REMATCH_ENTRIES - 1];
};
static u32 sub_81CAB44(struct Pokenav3Struct *);
static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *);
static u32 sub_81CABFC(struct Pokenav3Struct *);
static u32 sub_81CAC04(struct Pokenav3Struct *);
static u32 sub_81CACB8(struct Pokenav3Struct *);
static u32 sub_81CACF8(struct Pokenav3Struct *);
static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *);
static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *);
static u32 CB2_HandleCallInput(struct Pokenav3Struct *);
static u32 sub_81CAD20(s32);
static bool32 sub_81CB1D0(void);
#include "data/text/match_call_messages.h"
const u8 gUnknown_08622508[] = {0, 2};
const u8 gUnknown_0862250A[] = {0, 1, 2};
static const u8 sMatchCallOptionsNoCheckPage[] =
{
MATCH_CALL_OPTION_CALL,
MATCH_CALL_OPTION_CANCEL
};
static const u8 sMatchCallOptionsHasCheckPage[] =
{
MATCH_CALL_OPTION_CALL,
MATCH_CALL_OPTION_CHECK,
MATCH_CALL_OPTION_CANCEL
};
bool32 PokenavCallback_Init_11(void)
{
@@ -48,8 +58,8 @@ bool32 PokenavCallback_Init_11(void)
if (!state)
return FALSE;
state->callback = sub_81CAB44;
state->unk8 = 0;
state->callback = CB2_HandleMatchCallInput;
state->headerId = 0;
state->unk10 = 0;
state->unk14 = CreateLoopedTask(sub_81CAD20, 1);
return TRUE;
@@ -66,52 +76,54 @@ void sub_81CAB38(void)
FreePokenavSubstruct(5);
}
static u32 sub_81CAB44(struct Pokenav3Struct *state)
static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
{
int selectedMatchCall;
int selection;
if (gMain.newAndRepeatedKeys & DPAD_UP)
return 2;
return POKENAV_MC_FUNC_UP;
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
return 1;
return POKENAV_MC_FUNC_DOWN;
if (gMain.newAndRepeatedKeys & DPAD_LEFT)
return 4;
return POKENAV_MC_FUNC_PG_UP;
if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
return 3;
return POKENAV_MC_FUNC_PG_DOWN;
if (gMain.newKeys & A_BUTTON)
{
state->callback = sub_81CAC04;
state->unk0 = 0;
selectedMatchCall = GetSelectedMatchCall();
if (!state->unk1C[selectedMatchCall].boxId || MatchCall_HasCheckPage(state->unk1C[selectedMatchCall].unk6))
state->callback = CB2_HandleMatchCallOptionsInput;
state->optionCursorPos = 0;
selection = GetSelectedMatchCall();
if (!state->matchCallEntries[selection].isSpecialTrainer || MatchCall_HasCheckPage(state->matchCallEntries[selection].headerId))
{
state->unk4 = gUnknown_0862250A;
state->unk2 = 2;
state->matchCallOptions = sMatchCallOptionsHasCheckPage;
state->maxOptionId = ARRAY_COUNT(sMatchCallOptionsHasCheckPage) - 1;
}
else
{
state->unk4 = gUnknown_08622508;
state->unk2 = 1;
state->matchCallOptions = sMatchCallOptionsNoCheckPage;
state->maxOptionId = ARRAY_COUNT(sMatchCallOptionsNoCheckPage) - 1;
}
return 5;
return POKENAV_MC_FUNC_SELECT;
}
if (gMain.newKeys & B_BUTTON)
{
if (GetPokenavMode() != POKENAV_MODE_FORCE_CALL_1)
if (GetPokenavMode() != POKENAV_MODE_FORCE_CALL_READY)
{
state->callback = sub_81CABFC;
return 15;
return POKENAV_MC_FUNC_EXIT;
}
else
{
// Cant exit Match Call menu before calling Mr Stone during tutorial
PlaySE(SE_HAZURE);
}
}
return 0;
return POKENAV_MC_FUNC_NONE;
}
static u32 sub_81CABFC(struct Pokenav3Struct *state)
@@ -119,76 +131,76 @@ static u32 sub_81CABFC(struct Pokenav3Struct *state)
return POKENAV_MENU_4;
}
static u32 sub_81CAC04(struct Pokenav3Struct *state)
static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
{
if ((gMain.newKeys & DPAD_UP) && state->unk0)
if ((gMain.newKeys & DPAD_UP) && state->optionCursorPos)
{
state->unk0--;
return 6;
state->optionCursorPos--;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
}
if ((gMain.newKeys & DPAD_DOWN) && state->unk0 < state->unk2)
if ((gMain.newKeys & DPAD_DOWN) && state->optionCursorPos < state->maxOptionId)
{
state->unk0++;
return 6;
state->optionCursorPos++;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
}
if (gMain.newKeys & A_BUTTON)
{
switch (state->unk4[state->unk0])
switch (state->matchCallOptions[state->optionCursorPos])
{
case 2:
state->callback = sub_81CAB44;
return 7;
case 0:
if (GetPokenavMode() == POKENAV_MODE_FORCE_CALL_1)
SetPokenavMode(POKENAV_MODE_FORCE_CALL_2);
case MATCH_CALL_OPTION_CANCEL:
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_CANCEL;
case MATCH_CALL_OPTION_CALL:
if (GetPokenavMode() == POKENAV_MODE_FORCE_CALL_READY)
SetPokenavMode(POKENAV_MODE_FORCE_CALL_EXIT);
state->callback = sub_81CACF8;
state->callback = CB2_HandleCallInput;
if (sub_81CB1D0())
return 9;
return POKENAV_MC_FUNC_NEARBY_MSG;
return 8;
case 1:
state->callback = sub_81CACB8;
return 11;
return POKENAV_MC_FUNC_CALL_MSG;
case MATCH_CALL_OPTION_CHECK:
state->callback = CB2_HandleCheckPageInput;
return POKENAV_MC_FUNC_SHOW_CHECK_PAGE;
}
}
if (gMain.newKeys & B_BUTTON)
{
state->callback = sub_81CAB44;
return 7;
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_CANCEL;
}
return 0;
return POKENAV_MC_FUNC_NONE;
}
static u32 sub_81CACB8(struct Pokenav3Struct *state)
static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *state)
{
if (gMain.newAndRepeatedKeys & DPAD_UP)
return 12;
return POKENAV_MC_FUNC_CHECK_PAGE_UP;
if (gMain.newAndRepeatedKeys & DPAD_DOWN)
return 13;
return POKENAV_MC_FUNC_CHECK_PAGE_DOWN;
if (gMain.newKeys & B_BUTTON)
{
state->callback = sub_81CAB44;
return 14;
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_EXIT_CHECK_PAGE;
}
return 0;
return POKENAV_MC_FUNC_NONE;
}
static u32 sub_81CACF8(struct Pokenav3Struct *state)
static u32 CB2_HandleCallInput(struct Pokenav3Struct *state)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
state->callback = sub_81CAB44;
return 10;
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_10;
}
return 0;
return POKENAV_MC_FUNC_NONE;
}
static u32 sub_81CAD20(s32 taskState)
@@ -198,41 +210,41 @@ static u32 sub_81CAD20(s32 taskState)
switch (taskState)
{
case 0:
state->unk8 = 0;
state->unkA = 0;
state->headerId = 0;
state->numRegistered = 0;
return LT_INC_AND_CONTINUE;
case 1:
for (i = 0, j = state->unk8; i < 30; i++, j++)
for (i = 0, j = state->headerId; i < 30; i++, j++)
{
if (MatchCallFlagGetByIndex(j))
if (MatchCall_GetEnabled(j))
{
state->unk1C[state->unkA].unk6 = j;
state->unk1C[state->unkA].boxId = 1;
state->unk1C[state->unkA].monId = MatchCallMapSecGetByIndex(j);
state->unkA++;
state->matchCallEntries[state->numRegistered].headerId = j;
state->matchCallEntries[state->numRegistered].isSpecialTrainer = TRUE;
state->matchCallEntries[state->numRegistered].mapSec = MatchCall_GetMapSec(j);
state->numRegistered++;
}
if (++state->unk8 >= MC_HEADER_COUNT)
if (++state->headerId >= MC_HEADER_COUNT)
{
state->unkC = state->unk8;
state->unk8 = 0;
state->unkC = state->headerId;
state->headerId = 0;
return LT_INC_AND_CONTINUE;
}
}
return LT_CONTINUE;
case 2:
for (i = 0, j = state->unk8; i < 30; i++, j++)
for (i = 0, j = state->headerId; i < 30; i++, j++)
{
if (!sub_81D1BF8(state->unk8) && sub_81CAE08(state->unk8))
if (!MatchCall_HasRematchId(state->headerId) && IsRematchEntryRegistered(state->headerId))
{
state->unk1C[state->unkA].unk6 = state->unk8;
state->unk1C[state->unkA].boxId = 0;
state->unk1C[state->unkA].monId = sub_81CB0C8(j);
state->unkA++;
state->matchCallEntries[state->numRegistered].headerId = state->headerId;
state->matchCallEntries[state->numRegistered].isSpecialTrainer = FALSE;
state->matchCallEntries[state->numRegistered].mapSec = sub_81CB0C8(j);
state->numRegistered++;
}
if (++state->unk8 > REMATCH_TABLE_ENTRIES - 1)
if (++state->headerId > REMATCH_TABLE_ENTRIES - 1)
return LT_INC_AND_CONTINUE;
}
@@ -245,7 +257,7 @@ static u32 sub_81CAD20(s32 taskState)
return LT_FINISH;
}
bool32 sub_81CAE08(int rematchIndex)
bool32 IsRematchEntryRegistered(int rematchIndex)
{
if (rematchIndex < REMATCH_TABLE_ENTRIES)
return FlagGet(FLAG_MATCH_CALL_REGISTERED + rematchIndex);
@@ -259,10 +271,10 @@ int sub_81CAE28(void)
return state->unk10;
}
int sub_81CAE38(void)
int GetNumberRegistered(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->unkA;
return state->numRegistered;
}
int sub_81CAE48(void)
@@ -274,38 +286,38 @@ int sub_81CAE48(void)
int unref_sub_81CAE58(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->unkA - state->unkC;
return state->numRegistered - state->unkC;
}
int unref_sub_81CAE6C(int arg0)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
arg0 += state->unkC;
if (arg0 >= state->unkA)
if (arg0 >= state->numRegistered)
return REMATCH_TABLE_ENTRIES;
return state->unk1C[arg0].unk6;
return state->matchCallEntries[arg0].headerId;
}
struct PokenavMonList *sub_81CAE94(void)
struct PokenavMatchCallEntries *sub_81CAE94(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->unk1C;
return state->matchCallEntries;
}
u16 sub_81CAEA4(int index)
u16 GetMatchCallMapSec(int index)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->unk1C[index].monId;
return state->matchCallEntries[index].mapSec;
}
bool32 sub_81CAEBC(int index)
bool32 ShouldDrawRematchPokeballIcon(int index)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
if (!state->unk1C[index].boxId)
index = state->unk1C[index].unk6;
if (!state->matchCallEntries[index].isSpecialTrainer)
index = state->matchCallEntries[index].headerId;
else
index = MatchCall_GetRematchTableIdx(state->unk1C[index].unk6);
index = MatchCall_GetRematchTableIdx(state->matchCallEntries[index].headerId);
if (index == REMATCH_TABLE_ENTRIES)
return FALSE;
@@ -313,83 +325,83 @@ bool32 sub_81CAEBC(int index)
return gSaveBlock1Ptr->trainerRematches[index] != 0;
}
int sub_81CAF04(int index)
int GetMatchCallTrainerPic(int index)
{
int var0;
int headerId;
struct Pokenav3Struct *state = GetSubstructPtr(5);
if (!state->unk1C[index].boxId)
if (!state->matchCallEntries[index].isSpecialTrainer)
{
index = GetTrainerIdxByRematchIdx(state->unk1C[index].unk6);
index = GetTrainerIdxByRematchIdx(state->matchCallEntries[index].headerId);
return gTrainers[index].trainerPic;
}
var0 = state->unk1C[index].unk6;
index = MatchCall_GetRematchTableIdx(var0);
headerId = state->matchCallEntries[index].headerId;
index = MatchCall_GetRematchTableIdx(headerId);
if (index != REMATCH_TABLE_ENTRIES)
{
index = GetTrainerIdxByRematchIdx(index);
return gTrainers[index].trainerPic;
}
index = MatchCall_GetOverrideFacilityClass(var0);
index = MatchCall_GetOverrideFacilityClass(headerId);
return gFacilityClassToPicIndex[index];
}
const u8 *sub_81CAF78(int index, u8 *arg1)
const u8 *GetMatchCallMessageText(int index, u8 *arg1)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
*arg1 = 0;
if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType))
return gText_CallCantBeMadeHere;
if (!state->unk1C[index].boxId)
*arg1 = SelectMatchCallMessage(GetTrainerIdxByRematchIdx(state->unk1C[index].unk6), gStringVar4);
if (!state->matchCallEntries[index].isSpecialTrainer)
*arg1 = SelectMatchCallMessage(GetTrainerIdxByRematchIdx(state->matchCallEntries[index].headerId), gStringVar4);
else
MatchCall_GetMessage(state->unk1C[index].unk6, gStringVar4);
MatchCall_GetMessage(state->matchCallEntries[index].headerId, gStringVar4);
return gStringVar4;
}
const u8 *sub_81CAFD8(int index, int textType)
const u8 *GetMatchCallFlavorText(int index, int checkPageEntry)
{
int var0;
int rematchId;
struct Pokenav3Struct *state = GetSubstructPtr(5);
if (state->unk1C[index].boxId)
if (state->matchCallEntries[index].isSpecialTrainer)
{
var0 = MatchCall_GetRematchTableIdx(state->unk1C[index].unk6);
if (var0 == REMATCH_TABLE_ENTRIES)
return MatchCall_GetOverrideFlavorText(state->unk1C[index].unk6, textType);
rematchId = MatchCall_GetRematchTableIdx(state->matchCallEntries[index].headerId);
if (rematchId == REMATCH_TABLE_ENTRIES)
return MatchCall_GetOverrideFlavorText(state->matchCallEntries[index].headerId, checkPageEntry);
}
else
{
var0 = state->unk1C[index].unk6;
rematchId = state->matchCallEntries[index].headerId;
}
return gMatchCallMessages[var0][textType];
return gMatchCallFlavorTexts[rematchId][checkPageEntry];
}
u16 sub_81CB01C(void)
u16 GetMatchCallOptionCursorPos(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->unk0;
return state->optionCursorPos;
}
u16 sub_81CB02C(int arg0)
u16 GetMatchCallOptionId(int optionId)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
if (state->unk2 < arg0)
return 3;
if (state->maxOptionId < optionId)
return MATCH_CALL_OPTION_COUNT;
return state->unk4[arg0];
return state->matchCallOptions[optionId];
}
void sub_81CB050(struct PokenavMonList * arg0, u8 *str)
void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntries *matchCallEntry, u8 *str)
{
const u8 *trainerName;
const u8 *className;
if (!arg0->boxId)
if (!matchCallEntry->isSpecialTrainer)
{
int index = GetTrainerIdxByRematchIdx(arg0->unk6);
int index = GetTrainerIdxByRematchIdx(matchCallEntry->headerId);
const struct Trainer *trainer = &gTrainers[index];
int class = trainer->trainerClass;
className = gTrainerClassNames[class];
@@ -397,7 +409,7 @@ void sub_81CB050(struct PokenavMonList * arg0, u8 *str)
}
else
{
sub_81D1A78(arg0->unk6, &className, &trainerName);
MatchCall_GetNameAndDesc(matchCallEntry->headerId, &className, &trainerName);
}
if (className && trainerName)
@@ -418,15 +430,15 @@ u8 sub_81CB0C8(int rematchIndex)
return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->regionMapSectionId;
}
int sub_81CB0E4(int index)
int GetIndexDeltaOfNextCheckPageDown(int index)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
int count = 1;
while (++index < state->unkA)
while (++index < state->numRegistered)
{
if (!state->unk1C[index].boxId)
if (!state->matchCallEntries[index].isSpecialTrainer)
return count;
if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
if (MatchCall_HasCheckPage(state->matchCallEntries[index].headerId))
return count;
count++;
@@ -435,15 +447,15 @@ int sub_81CB0E4(int index)
return 0;
}
int sub_81CB128(int index)
int GetIndexDeltaOfNextCheckPageUp(int index)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
int count = -1;
while (--index >= 0)
{
if (!state->unk1C[index].boxId)
if (!state->matchCallEntries[index].isSpecialTrainer)
return count;
if (MatchCall_HasCheckPage(state->unk1C[index].unk6))
if (MatchCall_HasCheckPage(state->matchCallEntries[index].headerId))
return count;
count--;
@@ -458,13 +470,13 @@ bool32 unref_sub_81CB16C(void)
for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
{
if (sub_81CAE08(i) && gSaveBlock1Ptr->trainerRematches[i])
if (IsRematchEntryRegistered(i) && gSaveBlock1Ptr->trainerRematches[i])
return TRUE;
}
for (i = 0; i < MC_HEADER_COUNT; i++)
{
if (MatchCallFlagGetByIndex(i))
if (MatchCall_GetEnabled(i))
{
int index = MatchCall_GetRematchTableIdx(i);
if (gSaveBlock1Ptr->trainerRematches[index])
@@ -478,20 +490,20 @@ bool32 unref_sub_81CB16C(void)
static bool32 sub_81CB1D0(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
int index = GetSelectedMatchCall();
if (!state->unk1C[index].boxId)
int selection = GetSelectedMatchCall();
if (!state->matchCallEntries[selection].isSpecialTrainer)
{
if (sub_81CAEA4(index) == gMapHeader.regionMapSectionId)
if (GetMatchCallMapSec(selection) == gMapHeader.regionMapSectionId)
{
if (!gSaveBlock1Ptr->trainerRematches[state->unk1C[index].unk6])
if (!gSaveBlock1Ptr->trainerRematches[state->matchCallEntries[selection].headerId])
return TRUE;
}
}
else
{
if (state->unk1C[index].unk6 == 11)
if (state->matchCallEntries[selection].headerId == MC_HEADER_WATTSON)
{
if (sub_81CAEA4(index) == gMapHeader.regionMapSectionId
if (GetMatchCallMapSec(selection) == gMapHeader.regionMapSectionId
&& FlagGet(FLAG_BADGE05_GET) == TRUE)
{
if (!FlagGet(FLAG_WATTSON_REMATCH_AVAILABLE))

File diff suppressed because it is too large Load Diff

View File

@@ -401,10 +401,10 @@ u32 sub_81CC878(s32 taskState)
if (sub_8123514() || sub_81CCC88())
return 2;
sub_81C7BA4(1);
PrintHelpBarText(HELPBAR_MAP_ZOOMED_OUT);
return 0;
case 2:
if (IsDma3ManagerBusyWithBgCopy_())
if (WaitForHelpBar())
return 2;
sub_81C7E14(4);
@@ -434,10 +434,10 @@ u32 sub_81CC8D8(s32 taskState)
if (sub_8123514() || sub_81CCC88())
return 2;
sub_81C7BA4(2);
PrintHelpBarText(HELPBAR_MAP_ZOOMED_IN);
return 0;
case 3:
if (IsDma3ManagerBusyWithBgCopy_())
if (WaitForHelpBar())
return 2;
sub_81C7E14(5);

View File

@@ -463,14 +463,14 @@ void sub_81CD970(void)
{
unkPtr->unk4[count].boxId = TOTAL_BOXES_COUNT;
unkPtr->unk4[count].monId = i;
unkPtr->unk4[count].unk6 = 0;
unkPtr->unk4[count].data = 0;
count++;
}
}
unkPtr->unk4[count].boxId = 0;
unkPtr->unk4[count].monId = 0;
unkPtr->unk4[count].unk6 = 0;
unkPtr->unk4[count].data = 0;
unkPtr->unk2 = 0;
unkPtr->unk0 = count + 1;
structPtr->unk678A = 0;
@@ -597,7 +597,7 @@ u8 *sub_81CDD24(u8 id)
u16 sub_81CDD48(void)
{
struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
return unkPtr->unk4[unkPtr->unk2].unk6;
return unkPtr->unk4[unkPtr->unk2].data;
}
bool32 sub_81CDD5C(void)

View File

@@ -195,8 +195,8 @@ u32 sub_81CDE94(s32 state)
{
case 0:
if (sub_81CD3C4() != TRUE)
return 2;
return 0;
return LT_PAUSE;
return LT_INC_AND_PAUSE;
case 1:
InitBgTemplates(gUnknown_08623358, ARRAY_COUNT(gUnknown_08623358));
ChangeBgX(1, 0, 0);
@@ -209,15 +209,15 @@ u32 sub_81CDE94(s32 state)
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
decompress_and_copy_tile_data_to_vram(3, gPokenavCondition_Gfx, 0, 0, 0);
return 0;
return LT_INC_AND_PAUSE;
case 2:
if (free_temp_tile_data_buffers_if_possible())
return 2;
return LT_PAUSE;
decompress_and_copy_tile_data_to_vram(2, gUnknown_08623228, 0, 0, 0);
return 0;
return LT_INC_AND_PAUSE;
case 3:
if (free_temp_tile_data_buffers_if_possible())
return 2;
return LT_PAUSE;
LZ77UnCompVram(gPokenavCondition_Tilemap, structPtr->tilemapBuffers[0]);
SetBgTilemapBuffer(3, structPtr->tilemapBuffers[0]);
@@ -228,26 +228,26 @@ u32 sub_81CDE94(s32 state)
CopyPaletteIntoBufferUnfaded(gPokenavCondition_Pal, 0x10, 0x20);
CopyPaletteIntoBufferUnfaded(gUnknown_08623208, 0xF0, 0x20);
structPtr->unk1814 = -80;
return 0;
return LT_INC_AND_PAUSE;
case 4:
if (free_temp_tile_data_buffers_if_possible())
return 2;
return LT_PAUSE;
LZ77UnCompVram(gUnknown_0862323C, structPtr->tilemapBuffers[2]);
SetBgTilemapBuffer(2, structPtr->tilemapBuffers[2]);
CopyBgTilemapBufferToVram(2);
CopyPaletteIntoBufferUnfaded(gUnknown_086231E8, 0x30, 0x20);
sub_81D21DC(2);
return 0;
return LT_INC_AND_PAUSE;
case 5:
sub_8199DF0(1, 0, 0, 1);
sub_8199DF0(1, 17, 1, 1);
CpuFill32(0, structPtr->tilemapBuffers[1], BG_SCREEN_SIZE);
SetBgTilemapBuffer(1, structPtr->tilemapBuffers[1]);
return 0;
return LT_INC_AND_PAUSE;
case 6:
if (free_temp_tile_data_buffers_if_possible())
return 2;
return LT_PAUSE;
structPtr->unk1820 = AddWindow(&gUnknown_08623364);
if (sub_81CDD5C() == TRUE)
@@ -257,29 +257,29 @@ u32 sub_81CDE94(s32 state)
structPtr->unk1823 = AddWindow(&gUnknown_0862337C);
}
DeactivateAllTextPrinters();
return 0;
return LT_INC_AND_PAUSE;
case 7:
sub_81CED30(0);
return 0;
return LT_INC_AND_PAUSE;
case 8:
sub_81CE9E4();
return 0;
return LT_INC_AND_PAUSE;
case 9:
if (sub_81CDD5C() == TRUE)
sub_81CE934();
return 0;
return LT_INC_AND_PAUSE;
case 10:
sub_81CE754(0, sub_81CDC84(), TRUE);
return 0;
return LT_INC_AND_PAUSE;
case 11:
sub_81CE754(1, sub_81CDC84(), TRUE);
return 0;
return LT_INC_AND_PAUSE;
case 12:
sub_81CE754(2, sub_81CDC84(), TRUE);
return 0;
return LT_INC_AND_PAUSE;
case 13:
if (sub_81CE754(3, sub_81CDC84(), TRUE) != TRUE)
return 2;
return LT_PAUSE;
PutWindowTilemap(structPtr->unk1820);
if (sub_81CDD5C() == TRUE)
{
@@ -287,14 +287,14 @@ u32 sub_81CDE94(s32 state)
PutWindowTilemap(structPtr->unk1822);
PutWindowTilemap(structPtr->unk1823);
}
return 0;
return LT_INC_AND_PAUSE;
case 14:
ShowBg(1);
HideBg(2);
ShowBg(3);
if (sub_81CDD5C() == TRUE)
sub_81C7BA4(4);
return 0;
PrintHelpBarText(HELPBAR_CONDITION_MON_STATUS);
return LT_INC_AND_PAUSE;
case 15:
sub_81C7AC0(1);
if (!sub_81CDD5C())
@@ -303,25 +303,25 @@ u32 sub_81CDE94(s32 state)
sub_81C7FA0(1, TRUE, 0);
sub_81C7FA0(6, TRUE, 0);
}
return 0;
return LT_INC_AND_PAUSE;
case 16:
if (IsPaletteFadeActive())
return 2;
return LT_PAUSE;
if (!sub_81CDD5C() && sub_81C8010())
return 2;
return LT_PAUSE;
SetVBlankCallback_(sub_81CEE44);
return 0;
return LT_INC_AND_PAUSE;
case 17:
sub_81CEE90();
sub_81D20AC(sub_81CDC70());
return 0;
return LT_INC_AND_PAUSE;
case 18:
if (sub_81D20BC(sub_81CDC70()))
return 2;
return 0;
return LT_PAUSE;
return LT_INC_AND_PAUSE;
case 19:
sub_81CEE74(TRUE);
return 0;
return LT_INC_AND_PAUSE;
case 20:
if (!sub_81D3178(sub_81CDC70(), &structPtr->unk1814))
{
@@ -329,12 +329,12 @@ u32 sub_81CDE94(s32 state)
if (sub_81CDD5C() == TRUE || sub_81CDC60() != sub_81CDC50())
sub_81D3480(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
return 4;
return LT_FINISH;
}
return 2;
return LT_PAUSE;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE2D0(s32 state)
@@ -367,7 +367,7 @@ u32 sub_81CE2D0(s32 state)
return 1;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE37C(s32 state)
@@ -424,7 +424,7 @@ u32 sub_81CE37C(s32 state)
return 2;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE4D8(s32 state)
@@ -468,7 +468,7 @@ u32 sub_81CE4D8(s32 state)
return 2;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE5E4(s32 state)
@@ -506,7 +506,7 @@ u32 sub_81CE5E4(s32 state)
return 2;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE6BC(s32 state)
@@ -514,18 +514,18 @@ u32 sub_81CE6BC(s32 state)
switch (state)
{
case 0:
sub_811FAA4(sub_81CDD7C(), 0xb0, 0x20);
sub_811FAA4(sub_81CDD7C(), 176, 32);
return 1;
case 1:
sub_81C7BA4(5);
PrintHelpBarText(HELPBAR_CONDITION_MARKINGS);
return 1;
case 2:
if (IsDma3ManagerBusyWithBgCopy_() == TRUE)
if (WaitForHelpBar() == TRUE)
return 2;
return 1;
}
return 4;
return LT_FINISH;
}
u32 sub_81CE700(s32 state)
@@ -536,18 +536,18 @@ u32 sub_81CE700(s32 state)
sub_811FAF8();
return 1;
case 1:
sub_81C7BA4(4);
PrintHelpBarText(HELPBAR_CONDITION_MON_STATUS);
return 1;
case 2:
if (IsDma3ManagerBusyWithBgCopy_() == TRUE)
if (WaitForHelpBar() == TRUE)
return 2;
return 1;
}
return 4;
return LT_FINISH;
}
u8 *sub_81CE738(u8 *dst, u16 num)
static u8 *UnusedPrintNumberString(u8 *dst, u16 num)
{
u8 *txtPtr = ConvertIntToDecimalStringN(dst, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
txtPtr = StringCopy(txtPtr, gText_Number2);

View File

@@ -227,7 +227,7 @@ static s32 sub_81CF0F0(void)
{
struct PokenavSub7 * ptr = GetSubstructPtr(7);
s32 i = GetSelectedMatchCall();
return ptr->unkPtr->unk4[i].unk6;
return ptr->unkPtr->unk4[i].data;
}
static u16 sub_81CF10C(void)
@@ -258,7 +258,7 @@ static u32 sub_81CF134(s32 state)
if (!GetMonData(pokemon, MON_DATA_SANITY_IS_EGG))
{
item.monId = i;
item.unk6 = GetMonData(pokemon, ptr->unk14);
item.data = GetMonData(pokemon, ptr->unk14);
sub_81CF2C4(ptr, &item);
}
}
@@ -290,7 +290,7 @@ static u32 sub_81CF1D8(s32 state)
{
item.boxId = boxId;
item.monId = monId;
item.unk6 = GetBoxMonDataAt(boxId, monId, ptr->unk14);
item.data = GetBoxMonDataAt(boxId, monId, ptr->unk14);
sub_81CF2C4(ptr, &item);
}
boxCount++;
@@ -313,19 +313,19 @@ static u32 sub_81CF278(s32 state)
{
struct PokenavSub7 * ptr = GetSubstructPtr(7);
s32 r6 = ptr->unkPtr->unk0;
s32 r4 = ptr->unkPtr->unk4[0].unk6;
s32 r4 = ptr->unkPtr->unk4[0].data;
s32 i;
ptr->unkPtr->unk4[0].unk6 = 1;
ptr->unkPtr->unk4[0].data = 1;
for (i = 1; i < r6; i++)
{
if (ptr->unkPtr->unk4[i].unk6 == r4)
if (ptr->unkPtr->unk4[i].data == r4)
{
ptr->unkPtr->unk4[i].unk6 = ptr->unkPtr->unk4[i - 1].unk6;
ptr->unkPtr->unk4[i].data = ptr->unkPtr->unk4[i - 1].data;
}
else
{
r4 = ptr->unkPtr->unk4[i].unk6;
ptr->unkPtr->unk4[i].unk6 = i + 1;
r4 = ptr->unkPtr->unk4[i].data;
ptr->unkPtr->unk4[i].data = i + 1;
}
}
ptr->unk18 = 1;
@@ -340,7 +340,7 @@ static void sub_81CF2C4(struct PokenavSub7 *structPtr, struct PokenavMonList *it
while (right != insertionIdx)
{
if (item->unk6 > structPtr->unkPtr->unk4[insertionIdx].unk6)
if (item->data > structPtr->unkPtr->unk4[insertionIdx].data)
right = insertionIdx;
else
left = insertionIdx + 1;
@@ -431,7 +431,7 @@ static u32 sub_81CF418(s32 state)
if (sub_81C8224())
return LT_PAUSE;
sub_81CF7C8(unk);
sub_81C7BA4(3);
PrintHelpBarText(HELPBAR_CONDITION_MON_LIST);
return LT_INC_AND_PAUSE;
case 4:
if (free_temp_tile_data_buffers_if_possible())
@@ -651,8 +651,8 @@ static void sub_81CF7F4(struct PokenavSub8 * ptr)
static void sub_81CF88C(void)
{
struct MatchCallListTemplate template;
template.unk0 = sub_81CF0D0();
struct PokenavListTemplate template;
template.list.monList = sub_81CF0D0();
template.unk4 = sub_81CF0E0();
template.unk8 = 4;
template.unk6 = sub_81CF10C();
@@ -662,7 +662,7 @@ static void sub_81CF88C(void)
template.unkC = 8;
template.unkD = 2;
template.unkE = 1;
template.unk10 = sub_81CF8E4;
template.listFunc.unk10_1 = sub_81CF8E4;
template.unk14 = NULL;
sub_81C81D4(&gUnknown_08623590[1], &template, 0);
}

View File

@@ -218,7 +218,7 @@ static s32 sub_81CFB48(void)
{
struct PokenavSub9 * ptr = GetSubstructPtr(9);
s32 idx = GetSelectedMatchCall();
return ptr->unk1C->unk4[idx].unk6;
return ptr->unk1C->unk4[idx].data;
}
static s32 sub_81CFB64(void)
@@ -240,7 +240,7 @@ static u32 sub_81CFB8C(s32 state)
ptr->unk1C->unk0 = 0;
ptr->unk1C->unk2 = 0;
item.boxId = 14;
item.boxId = TOTAL_BOXES_COUNT;
for (i = 0; i < PARTY_SIZE; i++)
{
struct Pokemon * pokemon = &gPlayerParty[i];
@@ -252,7 +252,7 @@ static u32 sub_81CFB8C(s32 state)
if (ribbonCount != 0)
{
item.monId = i;
item.unk6 = ribbonCount;
item.data = ribbonCount;
sub_81CFCEC(ptr, &item);
}
}
@@ -288,13 +288,13 @@ static u32 sub_81CFC40(s32 state)
{
item.boxId = boxId;
item.monId = monId;
item.unk6 = ribbonCount;
item.data = ribbonCount;
sub_81CFCEC(ptr, &item);
}
}
boxCount++;
monId++;
if (boxCount > 14)
if (boxCount > TOTAL_BOXES_COUNT)
{
ptr->unkC = boxId;
ptr->unk10 = monId;
@@ -317,7 +317,7 @@ static void sub_81CFCEC(struct PokenavSub9 *structPtr, struct PokenavMonList *it
while (right != insertionIdx)
{
if (item->unk6 > structPtr->unk1C->unk4[insertionIdx].unk6)
if (item->data > structPtr->unk1C->unk4[insertionIdx].data)
right = insertionIdx;
else
left = insertionIdx + 1;
@@ -445,7 +445,7 @@ static u32 sub_81CFEB8(s32 state)
return LT_PAUSE;
ShowBg(2);
HideBg(3);
sub_81C7BA4(9);
PrintHelpBarText(HELPBAR_RIBBONS_MON_LIST);
sub_81C7AC0(1);
if (!unk->unkC)
{
@@ -665,8 +665,8 @@ static void sub_81D02B0(s32 windowId, s32 val1, s32 val2)
static void sub_81D0304(void)
{
struct MatchCallListTemplate template;
template.unk0 = sub_81CFB28();
struct PokenavListTemplate template;
template.list.monList = sub_81CFB28();
template.unk4 = sub_81CFB38();
template.unk8 = 4;
template.unk6 = sub_81CFB64();
@@ -676,7 +676,7 @@ static void sub_81D0304(void)
template.unkC = 8;
template.unkD = 2;
template.unkE = 1;
template.unk10 = sub_81D035C;
template.listFunc.unk10_1 = sub_81D035C;
template.unk14 = NULL;
sub_81C81D4(&gUnknown_086237B0[1], &template, 0);
}
@@ -688,7 +688,7 @@ static void sub_81D035C(struct PokenavMonList * item0, u8 * dest)
u8 * s;
const u8 * genderStr;
struct PokenavMonList * item = item0;
if (item->boxId == 14)
if (item->boxId == TOTAL_BOXES_COUNT)
{
struct Pokemon * mon = &gPlayerParty[item->monId];
gender = GetMonGender(mon);
@@ -722,5 +722,5 @@ static void sub_81D035C(struct PokenavMonList * item0, u8 * dest)
*s++ = 5; // LV
ConvertIntToDecimalStringN(s, level, STR_CONV_MODE_LEFT_ALIGN, 3);
dest = sub_81DB494(dest, 1, gStringVar1, 54);
ConvertIntToDecimalStringN(dest, item->unk6, STR_CONV_MODE_RIGHT_ALIGN, 2);
ConvertIntToDecimalStringN(dest, item->data, STR_CONV_MODE_RIGHT_ALIGN, 2);
}

View File

@@ -2,23 +2,23 @@
#include "strings.h"
ALIGNED(4)
const u8 gExpandedPlaceholder_Empty[] = _("");
const u8 gExpandedPlaceholder_Kun[] = _("");
const u8 gExpandedPlaceholder_Chan[] = _("");
const u8 gExpandedPlaceholder_Sapphire[] = _("SAPPHIRE");
const u8 gExpandedPlaceholder_Ruby[] = _("RUBY");
const u8 gExpandedPlaceholder_Emerald[] = _("EMERALD");
const u8 gExpandedPlaceholder_Aqua[] = _("AQUA");
const u8 gExpandedPlaceholder_Magma[] = _("MAGMA");
const u8 gExpandedPlaceholder_Archie[] = _("ARCHIE");
const u8 gExpandedPlaceholder_Maxie[] = _("MAXIE");
const u8 gExpandedPlaceholder_Kyogre[] = _("KYOGRE");
const u8 gExpandedPlaceholder_Groudon[] = _("GROUDON");
const u8 gExpandedPlaceholder_Brendan[] = _("BRENDAN");
const u8 gExpandedPlaceholder_May[] = _("MAY");
const u8 gText_ExpandedPlaceholder_Empty[] = _("");
const u8 gText_ExpandedPlaceholder_Kun[] = _("");
const u8 gText_ExpandedPlaceholder_Chan[] = _("");
const u8 gText_ExpandedPlaceholder_Sapphire[] = _("SAPPHIRE");
const u8 gText_ExpandedPlaceholder_Ruby[] = _("RUBY");
const u8 gText_ExpandedPlaceholder_Emerald[] = _("EMERALD");
const u8 gText_ExpandedPlaceholder_Aqua[] = _("AQUA");
const u8 gText_ExpandedPlaceholder_Magma[] = _("MAGMA");
const u8 gText_ExpandedPlaceholder_Archie[] = _("ARCHIE");
const u8 gText_ExpandedPlaceholder_Maxie[] = _("MAXIE");
const u8 gText_ExpandedPlaceholder_Kyogre[] = _("KYOGRE");
const u8 gText_ExpandedPlaceholder_Groudon[] = _("GROUDON");
const u8 gText_ExpandedPlaceholder_Brendan[] = _("BRENDAN");
const u8 gText_ExpandedPlaceholder_May[] = _("MAY");
const u8 gText_EggNickname[] = _("EGG");
const u8 gText_Pokemon[] = _("POKéMON");
const u8 gProfBirchMatchCallName[] = _("PROF. BIRCH");
const u8 gText_ProfBirchMatchCallName[] = _("PROF. BIRCH");
const u8 gText_MainMenuNewGame[] = _("NEW GAME");
const u8 gText_MainMenuContinue[] = _("CONTINUE");
const u8 gText_MainMenuOption[] = _("OPTION");
@@ -1276,20 +1276,20 @@ const u8 gText_Sorry[] = _("SORRY");
const u8 gText_YaySmileEmoji[] = _("YAY{EMOJI_BIGSMILE}");
const u8 gText_ThankYou[] = _("THANK YOU");
const u8 gText_ByeBye[] = _("BYE-BYE!");
const u8 gMatchCallStevenStrategyText[] = _("Attack the weak points!");
const u8 gMatchCall_StevenTrainersPokemonText[] = _("Ultimate STEEL POKéMON.");
const u8 gMatchCall_StevenSelfIntroductionText_Line1_BeforeMeteorFallsBattle[] = _("I'd climb even waterfalls");
const u8 gMatchCall_StevenSelfIntroductionText_Line2_BeforeMeteorFallsBattle[] = _("to find a rare stone!");
const u8 gMatchCall_StevenSelfIntroductionText_Line1_AfterMeteorFallsBattle[] = _("I'm the strongest and most");
const u8 gMatchCall_StevenSelfIntroductionText_Line2_AfterMeteorFallsBattle[] = _("energetic after all!");
const u8 gMatchCall_BrendanStrategyText[] = _("Battle with knowledge!");
const u8 gMatchCall_BrendanTrainersPokemonText[] = _("I will use various POKéMON.");
const u8 gMatchCall_BrendanSelfIntroductionText_Line1[] = _("I'll be a better POKéMON");
const u8 gMatchCall_BrendanSelfIntroductionText_Line2[] = _("prof than my father is!");
const u8 gMatchCall_MayStrategyText[] = _("I'm not so good at battles.");
const u8 gMatchCall_MayTrainersPokemonText[] = _("I'll use any POKéMON!");
const u8 gMatchCall_MaySelfIntroductionText_Line1[] = _("My POKéMON and I help");
const u8 gMatchCall_MaySelfIntroductionText_Line2[] = _("my father's research.");
const u8 gText_MatchCallSteven_Strategy[] = _("Attack the weak points!");
const u8 gText_MatchCallSteven_Pokemon[] = _("Ultimate STEEL POKéMON.");
const u8 gText_MatchCallSteven_Intro1_BeforeMeteorFallsBattle[] = _("I'd climb even waterfalls");
const u8 gText_MatchCallSteven_Intro2_BeforeMeteorFallsBattle[] = _("to find a rare stone!");
const u8 gText_MatchCallSteven_Intro1_AfterMeteorFallsBattle[] = _("I'm the strongest and most");
const u8 gText_MatchCallSteven_Intro2_AfterMeteorFallsBattle[] = _("energetic after all!");
const u8 gText_MatchCallBrendan_Strategy[] = _("Battle with knowledge!");
const u8 gText_MatchCallBrendan_Pokemon[] = _("I will use various POKéMON.");
const u8 gText_MatchCallBrendan_Intro1[] = _("I'll be a better POKéMON");
const u8 gText_MatchCallBrendan_Intro2[] = _("prof than my father is!");
const u8 gText_MatchCallMay_Strategy[] = _("I'm not so good at battles.");
const u8 gText_MatchCallMay_Pokemon[] = _("I'll use any POKéMON!");
const u8 gText_MatchCallMay_Intro1[] = _("My POKéMON and I help");
const u8 gText_MatchCallMay_Intro2[] = _("my father's research.");
const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!");
const u8 gText_NicknameHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?");
ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p");
@@ -1769,28 +1769,28 @@ const u8 gText_ClearingData[] = _("Clearing data…\nPlease wait.");
const u8 gText_IsThisTheCorrectTime[] = _("Is this the correct time?");
const u8 gText_Confirm3[] = _("CONFIRM");
const u8 gText_Cancel4[] = _("CANCEL");
const u8 gMrStoneMatchCallDesc[] = _("DEVON PRES");
const u8 gMrStoneMatchCallName[] = _("MR. STONE");
const u8 gStevenMatchCallDesc[] = _("HARD AS ROCK");
const u8 gStevenMatchCallName[] = _("STEVEN");
const u8 gMayBrendanMatchCallDesc[] = _("RAD NEIGHBOR");
const u8 gNormanMatchCallDesc[] = _("RELIABLE ONE");
const u8 gMomMatchCallDesc[] = _("CALM & KIND");
const u8 gWallyMatchCallDesc[] = _("{PKMN} LOVER");
const u8 gNormanMatchCallName[] = _("DAD");
const u8 gMomMatchCallName[] = _("MOM");
const u8 gScottMatchCallDesc[] = _("ELUSIVE EYES");
const u8 gScottMatchCallName[] = _("SCOTT");
const u8 gRoxanneMatchCallDesc[] = _("ROCKIN' WHIZ");
const u8 gBrawlyMatchCallDesc[] = _("THE BIG HIT");
const u8 gWattsonMatchCallDesc[] = _("SWELL SHOCK");
const u8 gFlanneryMatchCallDesc[] = _("PASSION BURN");
const u8 gWinonaMatchCallDesc[] = _("SKY TAMER");
const u8 gTateLizaMatchCallDesc[] = _("MYSTIC DUO");
const u8 gJuanMatchCallDesc[] = _("DANDY CHARM");
const u8 gEliteFourMatchCallDesc[] = _("ELITE FOUR");
const u8 gChampionMatchCallDesc[] = _("CHAMPION");
const u8 gProfBirchMatchCallDesc[] = _("{PKMN} PROF.");
const u8 gText_MrStoneMatchCallDesc[] = _("DEVON PRES");
const u8 gText_MrStoneMatchCallName[] = _("MR. STONE");
const u8 gText_StevenMatchCallDesc[] = _("HARD AS ROCK");
const u8 gText_StevenMatchCallName[] = _("STEVEN");
const u8 gText_MayBrendanMatchCallDesc[] = _("RAD NEIGHBOR");
const u8 gText_NormanMatchCallDesc[] = _("RELIABLE ONE");
const u8 gText_MomMatchCallDesc[] = _("CALM & KIND");
const u8 gText_WallyMatchCallDesc[] = _("{PKMN} LOVER");
const u8 gText_NormanMatchCallName[] = _("DAD");
const u8 gText_MomMatchCallName[] = _("MOM");
const u8 gText_ScottMatchCallDesc[] = _("ELUSIVE EYES");
const u8 gText_ScottMatchCallName[] = _("SCOTT");
const u8 gText_RoxanneMatchCallDesc[] = _("ROCKIN' WHIZ");
const u8 gText_BrawlyMatchCallDesc[] = _("THE BIG HIT");
const u8 gText_WattsonMatchCallDesc[] = _("SWELL SHOCK");
const u8 gText_FlanneryMatchCallDesc[] = _("PASSION BURN");
const u8 gText_WinonaMatchCallDesc[] = _("SKY TAMER");
const u8 gText_TateLizaMatchCallDesc[] = _("MYSTIC DUO");
const u8 gText_JuanMatchCallDesc[] = _("DANDY CHARM");
const u8 gText_EliteFourMatchCallDesc[] = _("ELITE FOUR");
const u8 gText_ChampionMatchCallDesc[] = _("CHAMPION");
const u8 gText_ProfBirchMatchCallDesc[] = _("{PKMN} PROF.");
const u8 gText_CommStandbyAwaitingOtherPlayer[] = _("Communication standby…\nAwaiting another player to choose.");
const u8 gText_BattleWasRefused[] = _("The battle was refused.{PAUSE 60}");
const u8 gText_RefusedBattle[] = _("Refused the battle.{PAUSE 60}");