summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data/region_map/city_map_entries.h113
-rw-r--r--src/data/region_map/city_map_tilemaps.h22
-rw-r--r--src/data/text/gift_ribbon_descriptions.h115
-rw-r--r--src/data/text/ribbon_descriptions.h48
-rw-r--r--src/data/text/trainers_eye_messages.h550
-rw-r--r--src/pokenav_unk_10.c71
-rw-r--r--src/pokenav_unk_2.c255
-rwxr-xr-xsrc/pokenav_unk_3.c7
-rwxr-xr-xsrc/pokenav_unk_4.c198
-rwxr-xr-xsrc/pokenav_unk_5.c125
-rw-r--r--src/pokenav_unk_7.c102
-rw-r--r--src/pokenav_unk_8.c78
-rw-r--r--src/pokenav_unk_9.c75
13 files changed, 1722 insertions, 37 deletions
diff --git a/src/data/region_map/city_map_entries.h b/src/data/region_map/city_map_entries.h
new file mode 100644
index 000000000..7b8361a7c
--- /dev/null
+++ b/src/data/region_map/city_map_entries.h
@@ -0,0 +1,113 @@
+const struct CityMapEntry gPokenavCityMaps[] =
+{
+ {
+ .mapSecId = 0,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Littleroot_0,
+ },
+ {
+ .mapSecId = 1,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Oldale_0,
+ },
+ {
+ .mapSecId = 2,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Dewford_0,
+ },
+ {
+ .mapSecId = 3,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lavarige_0,
+ },
+ {
+ .mapSecId = 4,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fallarbor_0,
+ },
+ {
+ .mapSecId = 5,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Verdanturf_0,
+ },
+ {
+ .mapSecId = 6,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Pacifidlog_0,
+ },
+ {
+ .mapSecId = 7,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Petalburg_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Slateport_0,
+ },
+ {
+ .mapSecId = 8,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Slateport_1,
+ },
+ {
+ .mapSecId = 9,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mauville_0,
+ },
+ {
+ .mapSecId = 9,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mauville_1,
+ },
+ {
+ .mapSecId = 10,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Rustboro_0,
+ },
+ {
+ .mapSecId = 10,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Rustboro_1,
+ },
+ {
+ .mapSecId = 11,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Fortree_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Lilycove_0,
+ },
+ {
+ .mapSecId = 12,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Lilycove_1,
+ },
+ {
+ .mapSecId = 13,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Mossdeep_0,
+ },
+ {
+ .mapSecId = 13,
+ .index = 1,
+ .tilemap = gPokenavCityMap_Mossdeep_1,
+ },
+ {
+ .mapSecId = 14,
+ .index = 0,
+ .tilemap = gPokenavCityMap_Sootopolis_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 0,
+ .tilemap = gPokenavCityMap_EverGrande_0,
+ },
+ {
+ .mapSecId = 15,
+ .index = 1,
+ .tilemap = gPokenavCityMap_EverGrande_1,
+ },
+};
diff --git a/src/data/region_map/city_map_tilemaps.h b/src/data/region_map/city_map_tilemaps.h
new file mode 100644
index 000000000..8a8a931f9
--- /dev/null
+++ b/src/data/region_map/city_map_tilemaps.h
@@ -0,0 +1,22 @@
+const u32 gPokenavCityMap_Lavarige_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
+const u32 gPokenavCityMap_Fallarbor_0[] = INCBIN_U32("graphics/pokenav/city_maps/fallarbor_0.bin.lz");
+const u32 gPokenavCityMap_Fortree_0[] = INCBIN_U32("graphics/pokenav/city_maps/fortree_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_0[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_0.bin.lz");
+const u32 gPokenavCityMap_Slateport_1[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_1.bin.lz");
+const u32 gPokenavCityMap_Rustboro_0[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_0.bin.lz");
+const u32 gPokenavCityMap_Rustboro_1[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_1.bin.lz");
+const u32 gPokenavCityMap_Pacifidlog_0[] = INCBIN_U32("graphics/pokenav/city_maps/pacifidlog_0.bin.lz");
+const u32 gPokenavCityMap_Mauville_1[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_1.bin.lz");
+const u32 gPokenavCityMap_Mauville_0[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_0.bin.lz");
+const u32 gPokenavCityMap_Oldale_0[] = INCBIN_U32("graphics/pokenav/city_maps/oldale_0.bin.lz");
+const u32 gPokenavCityMap_Lilycove_1[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_1.bin.lz");
+const u32 gPokenavCityMap_Lilycove_0[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_0.bin.lz");
+const u32 gPokenavCityMap_Littleroot_0[] = INCBIN_U32("graphics/pokenav/city_maps/littleroot_0.bin.lz");
+const u32 gPokenavCityMap_Dewford_0[] = INCBIN_U32("graphics/pokenav/city_maps/dewford_0.bin.lz");
+const u32 gPokenavCityMap_Sootopolis_0[] = INCBIN_U32("graphics/pokenav/city_maps/sootopolis_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_0[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_0.bin.lz");
+const u32 gPokenavCityMap_EverGrande_1[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_1.bin.lz");
+const u32 gPokenavCityMap_Verdanturf_0[] = INCBIN_U32("graphics/pokenav/city_maps/verdanturf_0.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_1[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_1.bin.lz");
+const u32 gPokenavCityMap_Mossdeep_0[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_0.bin.lz");
+const u32 gPokenavCityMap_Petalburg_0[] = INCBIN_U32("graphics/pokenav/city_maps/petalburg_0.bin.lz");
diff --git a/src/data/text/gift_ribbon_descriptions.h b/src/data/text/gift_ribbon_descriptions.h
new file mode 100644
index 000000000..ea108be18
--- /dev/null
+++ b/src/data/text/gift_ribbon_descriptions.h
@@ -0,0 +1,115 @@
+const u8 gGiftRibbonDescriptionPart1_2003RegionalTourney[] = _("2003 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart2_Champion[] = _("CHAMPION RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2003NationalTourney[] = _("2003 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2003GlobalCup[] = _("2003 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart2_RunnerUp[] = _("Runner-up RIBBON");
+const u8 gGiftRibbonDescriptionPart2_Semifinalist[] = _("Semifinalist RIBBON");
+const u8 gGiftRibbonDescriptionPart1_2004RegionalTourney[] = _("2004 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004NationalTourney[] = _("2004 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2004GlobalCup[] = _("2004 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_2005RegionalTourney[] = _("2005 REGIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005NationalTourney[] = _("2005 NATIONAL TOURNEY");
+const u8 gGiftRibbonDescriptionPart1_2005GlobalCup[] = _("2005 GLOBAL CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonBattleCup[] = _("POKéMON BATTLE CUP");
+const u8 gGiftRibbonDescriptionPart2_Participation[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonLeague[] = _("POKéMON LEAGUE");
+const u8 gGiftRibbonDescriptionPart1_AdvanceCup[] = _("ADVANCE CUP");
+const u8 gGiftRibbonDescriptionPart1_PokemonTournament[] = _("POKéMON Tournament");
+const u8 gGiftRibbonDescriptionPart2_Participation2[] = _("Participation RIBBON");
+const u8 gGiftRibbonDescriptionPart1_PokemonEvent[] = _("POKéMON Event");
+const u8 gGiftRibbonDescriptionPart1_PokemonFestival[] = _("POKéMON Festival");
+const u8 gGiftRibbonDescriptionPart1_DifficultyClearing[] = _("Difficulty-clearing");
+const u8 gGiftRibbonDescriptionPart2_Commemorative[] = _("Commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart1_ClearingAllChallenges[] = _("RIBBON awarded for");
+const u8 gGiftRibbonDescriptionPart2_ClearingAllChallenges[] = _("clearing all challenges.");
+const u8 gGiftRibbonDescriptionPart1_100StraightWin[] = _("100-straight Win");
+const u8 gGiftRibbonDescriptionPart1_DarknessTower[] = _("DARKNESS TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_RedTower[] = _("RED TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_BlackironTower[] = _("BLACKIRON TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_FinalTower[] = _("FINAL TOWER Clear");
+const u8 gGiftRibbonDescriptionPart1_LegendMaking[] = _("Legend-making");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterTokyo[] = _("POKéMON CENTER TOKYO");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterOsaka[] = _("POKéMON CENTER OSAKA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNagoya[] = _("POKéMON CENTER NAGOYA");
+const u8 gGiftRibbonDescriptionPart1_PokemonCenterNY[] = _("POKéMON CENTER NY");
+const u8 gGiftRibbonDescriptionPart1_SummerHolidays[] = _("Summer Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart2_EmptyString[] = _("");
+const u8 gGiftRibbonDescriptionPart1_WinterHolidays[] = _("Winter Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpringHolidays[] = _("Spring Holidays RIBBON");
+const u8 gGiftRibbonDescriptionPart1_Evergreen[] = _("Evergreen RIBBON");
+const u8 gGiftRibbonDescriptionPart1_SpecialHoliday[] = _("Special Holiday RIBBON");
+const u8 gGiftRibbonDescriptionPart1_HardWorker[] = _("Hard Worker RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LotsOfFriends[] = _("Lots of Friends RIBBON");
+const u8 gGiftRibbonDescriptionPart1_FullOfEnergy[] = _("Full of Energy RIBBON");
+const u8 gGiftRibbonDescriptionPart1_LovedPokemon[] = _("A commemorative RIBBON");
+const u8 gGiftRibbonDescriptionPart2_LovedPokemon[] = _("for a loved POKéMON.");
+const u8 gGiftRibbonDescriptionPart1_LoveForPokemon[] = _("RIBBON that shows");
+const u8 gGiftRibbonDescriptionPart2_LoveForPokemon[] = _("love for POKéMON.");
+
+const u8 *const gGiftRibbonDescriptionPointers[][2] =
+{
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist},
+ {gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation},
+ {gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2},
+ {gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges},
+ {gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative},
+ {gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString},
+ {gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon},
+ {gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon}
+};
diff --git a/src/data/text/ribbon_descriptions.h b/src/data/text/ribbon_descriptions.h
new file mode 100644
index 000000000..f455a7771
--- /dev/null
+++ b/src/data/text/ribbon_descriptions.h
@@ -0,0 +1,48 @@
+const u8 gRibbonDescriptionPart1_Champion[] = _("CHAMPION-beating, HALL");
+const u8 gRibbonDescriptionPart2_Champion[] = _("OF FAME Member RIBBON");
+const u8 gRibbonDescriptionPart1_CoolContest[] = _("COOL CONTEST");
+const u8 gRibbonDescriptionPart1_BeautyContest[] = _("BEAUTY CONTEST");
+const u8 gRibbonDescriptionPart1_CuteContest[] = _("CUTE CONTEST");
+const u8 gRibbonDescriptionPart1_SmartContest[] = _("SMART CONTEST");
+const u8 gRibbonDescriptionPart1_ToughContest[] = _("TOUGH CONTEST");
+const u8 gRibbonDescriptionPart2_NormalRank[] = _("Normal Rank winner!");
+const u8 gRibbonDescriptionPart2_SuperRank[] = _("Super Rank winner!");
+const u8 gRibbonDescriptionPart2_HyperRank[] = _("Hyper Rank winner!");
+const u8 gRibbonDescriptionPart2_MasterRank[] = _("Master Rank winner!");
+const u8 gRibbonDescriptionPart1_Winning[] = _("For clearing LV50");
+const u8 gRibbonDescriptionPart2_Winning[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Victory[] = _("For clearing Open Level");
+const u8 gRibbonDescriptionPart2_Victory[] = _("at the BATTLE TOWER.");
+const u8 gRibbonDescriptionPart1_Artist[] = _("RIBBON for being chosen");
+const u8 gRibbonDescriptionPart2_Artist[] = _("as a super sketch model.");
+const u8 gRibbonDescriptionPart1_Effort[] = _("RIBBON awarded for");
+const u8 gRibbonDescriptionPart2_Effort[] = _("being a hard worker.");
+
+const u8 *const gRibbonDescriptionPointers[][2] =
+{
+ {gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
+ {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
+ {gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
+ {gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
+ {gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
+ {gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
+};
diff --git a/src/data/text/trainers_eye_messages.h b/src/data/text/trainers_eye_messages.h
new file mode 100644
index 000000000..7b2f4ec64
--- /dev/null
+++ b/src/data/text/trainers_eye_messages.h
@@ -0,0 +1,550 @@
+const u8 gUnknown_08620390[] = _("Becalm fighting emotions.");
+const u8 gUnknown_086203AA[] = _("Fragrant GRASS POKéMON.");
+const u8 gUnknown_086203C2[] = _("Soothing aromas make the");
+const u8 gUnknown_086203DB[] = _("body and mind healthy.");
+const u8 gUnknown_086203F2[] = _("I'm not very good at this.");
+const u8 gUnknown_0862040D[] = _("Ruin-exploration partners.");
+const u8 gUnknown_08620428[] = _("I am searching for undersea");
+const u8 gUnknown_08620444[] = _("ruins and relics.");
+const u8 gUnknown_08620456[] = _("Overwhelm with power!");
+const u8 gUnknown_0862046C[] = _("Craggy ROCK POKéMON.");
+const u8 gUnknown_08620481[] = _("In search of ancient lore,");
+const u8 gUnknown_0862049C[] = _("I travel the world.");
+const u8 gUnknown_086204B0[] = _("I'm going to try hard!");
+const u8 gUnknown_086204C7[] = _("Good swimmer POKéMON.");
+const u8 gUnknown_086204DD[] = _("I wish I could swim without");
+const u8 gUnknown_086204F9[] = _("using an inner tube.");
+const u8 gUnknown_0862050E[] = _("I don't know. I'll try hard.");
+const u8 gUnknown_0862052B[] = _("WATER POKéMON are buddies.");
+const u8 gUnknown_08620546[] = _("It's not like I can't swim.");
+const u8 gUnknown_08620562[] = _("I just like my inner tube.");
+const u8 gUnknown_0862057D[] = _("We split our duties.");
+const u8 gUnknown_08620592[] = _("We like friendly POKéMON.");
+const u8 gUnknown_086205AC[] = _("We enjoy POKéMON together");
+const u8 gUnknown_086205C6[] = _("as sister and brother.");
+const u8 gUnknown_086205DD[] = _("I finish with power moves!");
+const u8 gUnknown_086205F8[] = _("A mix of different types.");
+const u8 gUnknown_08620612[] = _("I aim to become the ultimate");
+const u8 gUnknown_0862062F[] = _("TRAINER!");
+const u8 gUnknown_08620638[] = _("Exploit the foe's weakness.");
+const u8 gUnknown_08620654[] = _("Balance is crucial.");
+const u8 gUnknown_08620668[] = _("My goal is to become the");
+const u8 gUnknown_08620681[] = _("POKéMON CHAMPION.");
+const u8 gUnknown_08620693[] = _("Upset the opponent.");
+const u8 gUnknown_086206A7[] = _("Type doesn't matter.");
+const u8 gUnknown_086206BC[] = _("I'm a top student at the");
+const u8 gUnknown_086206D5[] = _("TRAINER'S SCHOOL.");
+const u8 gUnknown_086206E7[] = _("Slow, steady suffering.");
+const u8 gUnknown_086206FF[] = _("Scary to meet at night.");
+const u8 gUnknown_08620717[] = _("I see things that others");
+const u8 gUnknown_08620730[] = _("can't see...");
+const u8 gUnknown_0862073D[] = _("Anything to win.");
+const u8 gUnknown_0862074E[] = _("Gorgeous type!");
+const u8 gUnknown_0862075D[] = _("I have a pool specially for");
+const u8 gUnknown_08620779[] = _("my POKéMON at home.");
+const u8 gUnknown_0862078D[] = _("You'll fall under my spell!");
+const u8 gUnknown_086207A9[] = _("Mature WATER type.");
+const u8 gUnknown_086207BC[] = _("I dream of cruising around");
+const u8 gUnknown_086207D7[] = _("the world on a luxury liner.");
+const u8 gUnknown_086207F4[] = _("I'll lead you astray.");
+const u8 gUnknown_0862080A[] = _("Cute, of course.");
+const u8 gUnknown_0862081B[] = _("I love the SAFARI ZONE.");
+const u8 gUnknown_08620833[] = _("I seem to end up there.");
+const u8 gUnknown_0862084B[] = _("Strategy? Who needs it?");
+const u8 gUnknown_08620863[] = _("I spent big money on it!");
+const u8 gUnknown_0862087C[] = _("I, being rich, sleep in a");
+const u8 gUnknown_08620896[] = _("custom POKéMON bed.");
+const u8 gUnknown_086208AA[] = _("Wrestle down with power.");
+const u8 gUnknown_086208C3[] = _("Took all night to catch.");
+const u8 gUnknown_086208DC[] = _("Big, burly, and buff");
+const u8 gUnknown_086208F1[] = _("POKéMON are the best...");
+const u8 gUnknown_08620909[] = _("Ram at full speed!");
+const u8 gUnknown_0862091C[] = _("Funky WATER type!");
+const u8 gUnknown_0862092E[] = _("If I can't be out swimming,");
+const u8 gUnknown_0862094A[] = _("I'll be pumping weights.");
+const u8 gUnknown_08620963[] = _("Grand slam pummeling!");
+const u8 gUnknown_08620979[] = _("FIGHTING type.");
+const u8 gUnknown_08620988[] = _("Not to brag, but I can bust");
+const u8 gUnknown_086209A4[] = _("ten roof tiles!");
+const u8 gUnknown_086209B4[] = _("Witness karate power!");
+const u8 gUnknown_086209CA[] = _("My partners in training!");
+const u8 gUnknown_086209E3[] = _("Let us discuss matters of");
+const u8 gUnknown_086209FD[] = _("the world with bare fists!");
+const u8 gUnknown_08620A18[] = _("Rock to stunning sounds!");
+const u8 gUnknown_08620A31[] = _("Electric-and-sound combo!");
+const u8 gUnknown_08620A4B[] = _("My compositions will shock");
+const u8 gUnknown_08620A66[] = _("you and stun you!");
+const u8 gUnknown_08620A78[] = _("I'll electrify you!");
+const u8 gUnknown_08620A8C[] = _("They're ELECTRIC!");
+const u8 gUnknown_08620A9E[] = _("I want to make people cry");
+const u8 gUnknown_08620AB8[] = _("with songs from my heart.");
+const u8 gUnknown_08620AD2[] = _("Burn it all down!");
+const u8 gUnknown_08620AE4[] = _("Burn-inducing POKéMON.");
+const u8 gUnknown_08620AFB[] = _("When you light a campfire,");
+const u8 gUnknown_08620B16[] = _("be sure there's some water.");
+const u8 gUnknown_08620B32[] = _("Hang in and be tenacious!");
+const u8 gUnknown_08620B4C[] = _("I'll raise any POKéMON.");
+const u8 gUnknown_08620B64[] = _("POKéMON raised in the wild");
+const u8 gUnknown_08620B7F[] = _("grow strong!");
+const u8 gUnknown_08620B8C[] = _("Our love lets us prevail.");
+const u8 gUnknown_08620BA6[] = _("We've had them for years.");
+const u8 gUnknown_08620BC0[] = _("Married 50 years, we've");
+const u8 gUnknown_08620BD8[] = _("devotedly raised POKéMON.");
+const u8 gUnknown_08620BF2[] = _("Attack in waves!");
+const u8 gUnknown_08620C03[] = _("BUG POKéMON are cool.");
+const u8 gUnknown_08620C19[] = _("I go into the forest every");
+const u8 gUnknown_08620C34[] = _("day to catch BUG POKéMON.");
+const u8 gUnknown_08620C4E[] = _("Daze and confuse!");
+const u8 gUnknown_08620C60[] = _("Ones with weird powers.");
+const u8 gUnknown_08620C78[] = _("I can see through exactly");
+const u8 gUnknown_08620C92[] = _("what you're thinking!");
+const u8 gUnknown_08620CA8[] = _("Battle at full power.");
+const u8 gUnknown_08620CBE[] = _("POKéMON of many mysteries.");
+const u8 gUnknown_08620CD9[] = _("When we spoke, I was really");
+const u8 gUnknown_08620CF5[] = _("using telepathy.");
+const u8 gUnknown_08620D06[] = _("Calm and collected.");
+const u8 gUnknown_08620D1A[] = _("POKéMON of distinction.");
+const u8 gUnknown_08620D32[] = _("We enjoy a spot of tea");
+const u8 gUnknown_08620D49[] = _("every day. It's imported.");
+const u8 gUnknown_08620D63[] = _("I use my head to battle.");
+const u8 gUnknown_08620D7C[] = _("I love any kind of POKéMON!");
+const u8 gUnknown_08620D98[] = _("My daddy gives me spending");
+const u8 gUnknown_08620DB3[] = _("money if I ace a test.");
+const u8 gUnknown_08620DCA[] = _("My knowledge rules!");
+const u8 gUnknown_08620DDE[] = _("Any smart POKéMON!");
+const u8 gUnknown_08620DF1[] = _("I want to be a POKéMON");
+const u8 gUnknown_08620E08[] = _("researcher in the future.");
+const u8 gUnknown_08620E22[] = _("We talk it over first.");
+const u8 gUnknown_08620E39[] = _("POKéMON that we both like.");
+const u8 gUnknown_08620E54[] = _("We're senior and junior");
+const u8 gUnknown_08620E6C[] = _("students into POKéMON!");
+const u8 gUnknown_08620E83[] = _("Go for it, my dears!");
+const u8 gUnknown_08620E98[] = _("I have no likes or dislikes.");
+const u8 gUnknown_08620EB5[] = _("While out shopping for");
+const u8 gUnknown_08620ECC[] = _("supper, I battle too.");
+const u8 gUnknown_08620EE2[] = _("I battle with love!");
+const u8 gUnknown_08620EF6[] = _("A POKéMON raised with love!");
+const u8 gUnknown_08620F12[] = _("It's important to build");
+const u8 gUnknown_08620F2A[] = _("trust with your POKéMON.");
+const u8 gUnknown_08620F43[] = _("I see through your moves!");
+const u8 gUnknown_08620F5D[] = _("The essence of FIGHTING.");
+const u8 gUnknown_08620F76[] = _("I'm not ready to give way");
+const u8 gUnknown_08620F90[] = _("to the young yet!");
+const u8 gUnknown_08620FA2[] = _("Attack while defending.");
+const u8 gUnknown_08620FBA[] = _("The FIGHTING type.");
+const u8 gUnknown_08620FCD[] = _("Being old, I have my own");
+const u8 gUnknown_08620FE6[] = _("style of battling.");
+const u8 gUnknown_08620FF9[] = _("I do what I can.");
+const u8 gUnknown_0862100A[] = _("I use different types.");
+const u8 gUnknown_08621021[] = _("I'm going to keep working");
+const u8 gUnknown_0862103B[] = _("until I beat a GYM LEADER.");
+const u8 gUnknown_08621056[] = _("I battle patiently.");
+const u8 gUnknown_0862106A[] = _("WATER POKéMON to battle!");
+const u8 gUnknown_08621083[] = _("I'm the world's only guy to");
+const u8 gUnknown_0862109F[] = _("catch a huge POKéMON!");
+const u8 gUnknown_086210B5[] = _("Exploit the environment!");
+const u8 gUnknown_086210CE[] = _("All hail the WATER type!");
+const u8 gUnknown_086210E7[] = _("I won't be beaten by some");
+const u8 gUnknown_08621101[] = _("beach bum SWIMMER!");
+const u8 gUnknown_08621114[] = _("Speed above all!");
+const u8 gUnknown_08621125[] = _("I use a speedy POKéMON.");
+const u8 gUnknown_0862113D[] = _("A marathon is a challenge");
+const u8 gUnknown_08621157[] = _("against your own self.");
+const u8 gUnknown_0862116E[] = _("Defense is crucial.");
+const u8 gUnknown_08621182[] = _("My POKéMON is solid.");
+const u8 gUnknown_08621197[] = _("I started this for dieting,");
+const u8 gUnknown_086211B3[] = _("but I got right into it.");
+const u8 gUnknown_086211CC[] = _("Strike before stricken!");
+const u8 gUnknown_086211E4[] = _("A fast-running POKéMON!");
+const u8 gUnknown_086211FC[] = _("If you ran and ran, you'd");
+const u8 gUnknown_08621216[] = _("become one with the wind.");
+const u8 gUnknown_08621230[] = _("All-out offensive!");
+const u8 gUnknown_08621243[] = _("WATER POKéMON rule!");
+const u8 gUnknown_08621257[] = _("I must swim over 6 miles");
+const u8 gUnknown_08621270[] = _("every day.");
+const u8 gUnknown_0862127B[] = _("Push and push again!");
+const u8 gUnknown_08621290[] = _("The strength of STEEL.");
+const u8 gUnknown_086212A7[] = _("If you're sweating, get");
+const u8 gUnknown_086212BF[] = _("fluids into you regularly.");
+const u8 gUnknown_086212DA[] = _("Draw the power of WATER.");
+const u8 gUnknown_086212F3[] = _("Toughened WATER POKéMON.");
+const u8 gUnknown_0862130C[] = _("Training POKéMON is good,");
+const u8 gUnknown_08621326[] = _("but don't neglect yourself.");
+const u8 gUnknown_08621342[] = _("It's about POKéMON power!");
+const u8 gUnknown_0862135C[] = _("See the power of DRAGONS!");
+const u8 gUnknown_08621376[] = _("I'll become legendary as the");
+const u8 gUnknown_08621393[] = _("strongest one day!");
+const u8 gUnknown_086213A6[] = _("I'll show you my technique!");
+const u8 gUnknown_086213C2[] = _("Elegantly wheeling BIRDS.");
+const u8 gUnknown_086213DC[] = _("My BIRD POKéMON, deliver my");
+const u8 gUnknown_086213F8[] = _("love to that girl!");
+const u8 gUnknown_0862140B[] = _("You'll suffer from poison!");
+const u8 gUnknown_08621426[] = _("Poisonous POKéMON.");
+const u8 gUnknown_08621439[] = _("I undertake training so");
+const u8 gUnknown_08621451[] = _("that I may become a ninja.");
+const u8 gUnknown_0862146C[] = _("The first strike wins!");
+const u8 gUnknown_08621483[] = _("Speedy FIGHTING type.");
+const u8 gUnknown_08621499[] = _("If my POKéMON lose,");
+const u8 gUnknown_086214AD[] = _("I'll carry on the fight!");
+const u8 gUnknown_086214C6[] = _("Go, go, my POKéMON!");
+const u8 gUnknown_086214DA[] = _("I'll raise anything.");
+const u8 gUnknown_086214EF[] = _("UV rays are your skin's");
+const u8 gUnknown_08621507[] = _("enemy. Get protected.");
+const u8 gUnknown_0862151D[] = _("No mercy!");
+const u8 gUnknown_08621527[] = _("Cute WATER POKéMON.");
+const u8 gUnknown_0862153B[] = _("I have too many fans.");
+const u8 gUnknown_08621551[] = _("I was interviewed on TV.");
+const u8 gUnknown_0862156A[] = _("I think about this & that.");
+const u8 gUnknown_08621585[] = _("I like all POKéMON.");
+const u8 gUnknown_08621599[] = _("What lies beyond that");
+const u8 gUnknown_086215AF[] = _("yonder hill?");
+const u8 gUnknown_086215BC[] = _("We battle together!");
+const u8 gUnknown_086215D0[] = _("We train together!");
+const u8 gUnknown_086215E3[] = _("We like the same POKéMON,");
+const u8 gUnknown_086215FD[] = _("but different desserts.");
+const u8 gUnknown_08621615[] = _("I force things with power!");
+const u8 gUnknown_08621630[] = _("WATER and FIGHTING types.");
+const u8 gUnknown_0862164A[] = _("Seamen are rough spirits!");
+const u8 gUnknown_08621664[] = _("Any complaints?");
+const u8 gUnknown_08621674[] = _("Up for a fight anytime!");
+const u8 gUnknown_0862168C[] = _("WATER POKéMON are my faves!");
+const u8 gUnknown_086216A8[] = _("If you want to shout loud,");
+const u8 gUnknown_086216C3[] = _("suck in air with your belly!");
+const u8 gUnknown_086216E0[] = _("Protect POKéMON from harm.");
+const u8 gUnknown_086216FB[] = _("I love rare POKéMON.");
+const u8 gUnknown_08621710[] = _("I want to collect all the");
+const u8 gUnknown_0862172A[] = _("world's rare POKéMON.");
+const u8 gUnknown_08621740[] = _("I count on power.");
+const u8 gUnknown_08621752[] = _("POKéMON are my children.");
+const u8 gUnknown_0862176B[] = _("It takes knowledge and");
+const u8 gUnknown_08621782[] = _("love to raise POKéMON.");
+const u8 gUnknown_08621799[] = _("Full-on attack!");
+const u8 gUnknown_086217A9[] = _("Anything. I'll raise it.");
+const u8 gUnknown_086217C2[] = _("I give them {POKEBLOCK}S for");
+const u8 gUnknown_086217D9[] = _("going after CONTEST titles.");
+const u8 gUnknown_086217F5[] = _("I raise POKéMON with care.");
+const u8 gUnknown_08621810[] = _("Fun-to-raise POKéMON.");
+const u8 gUnknown_08621826[] = _("Treat every POKéMON you");
+const u8 gUnknown_0862183E[] = _("meet with respect.");
+const u8 gUnknown_08621851[] = _("I believe in my POKéMON.");
+const u8 gUnknown_0862186A[] = _("I like strong POKéMON.");
+const u8 gUnknown_08621881[] = _("I'm training for rescue");
+const u8 gUnknown_08621899[] = _("work with my POKéMON.");
+const u8 gUnknown_086218AF[] = _("Attack in waves!");
+const u8 gUnknown_086218C0[] = _("I use different types.");
+const u8 gUnknown_086218D7[] = _("Those who destroy nature");
+const u8 gUnknown_086218F0[] = _("must never be forgiven!");
+const u8 gUnknown_08621908[] = _("I'll show you some guts!");
+const u8 gUnknown_08621921[] = _("Cute POKéMON are my faves!");
+const u8 gUnknown_0862193C[] = _("After a battle, I always");
+const u8 gUnknown_08621955[] = _("bathe with my POKéMON.");
+const u8 gUnknown_0862196C[] = _("Lightning-fast attack!");
+const u8 gUnknown_08621983[] = _("BUG POKéMON are number 1!");
+const u8 gUnknown_0862199D[] = _("If you want to catch BUG");
+const u8 gUnknown_086219B6[] = _("POKéMON, wake up early.");
+const u8 gUnknown_086219CE[] = _("I battle with power.");
+const u8 gUnknown_086219E3[] = _("Hard-bodied POKéMON.");
+const u8 gUnknown_086219F8[] = _("I've been planning a month");
+const u8 gUnknown_08621A13[] = _("for today's hike.");
+const u8 gUnknown_08621A25[] = _("I like it hot!");
+const u8 gUnknown_08621A34[] = _("Hot POKéMON!");
+const u8 gUnknown_08621A41[] = _("As much as I love POKéMON,");
+const u8 gUnknown_08621A5C[] = _("I surely like hiking!");
+const u8 gUnknown_08621A72[] = _("Lovey-dovey strategy!");
+const u8 gUnknown_08621A88[] = _("Lovey-dovey POKéMON!");
+const u8 gUnknown_08621A9D[] = _("We're lovey-dovey!");
+const u8 gUnknown_08621AB0[] = _("Forever lovey-dovey!");
+const u8 gUnknown_08621AC5[] = _("We let it all hang out.");
+const u8 gUnknown_08621ADD[] = _("The 1st POKéMON I caught.");
+const u8 gUnknown_08621AF7[] = _("POKéMON and I have grown");
+const u8 gUnknown_08621B10[] = _("stronger together.");
+const u8 gUnknown_08621B23[] = _("ROCK-type power attack.");
+const u8 gUnknown_08621B3B[] = _("I prefer rock-hard POKéMON.");
+const u8 gUnknown_08621B57[] = _("A LEADER of a big GYM bears");
+const u8 gUnknown_08621B73[] = _("a lot of responsibility.");
+const u8 gUnknown_08621B8C[] = _("Direct physical action!");
+const u8 gUnknown_08621BA4[] = _("FIGHTING POKéMON rule!");
+const u8 gUnknown_08621BBB[] = _("The world awaits me as the");
+const u8 gUnknown_08621BD6[] = _("next big wave!");
+const u8 gUnknown_08621BE5[] = _("I choose to electrify.");
+const u8 gUnknown_08621BFC[] = _("Get shocked by electricity!");
+const u8 gUnknown_08621C18[] = _("One must never throw a");
+const u8 gUnknown_08621C2F[] = _("match. Even I must not.");
+const u8 gUnknown_08621C47[] = _("Battle aggressively.");
+const u8 gUnknown_08621C5C[] = _("Burn with passion!");
+const u8 gUnknown_08621C6F[] = _("Completely wash away daily");
+const u8 gUnknown_08621C8A[] = _("fatigue in hot springs!");
+const u8 gUnknown_08621CA2[] = _("I flexibly adapt my style.");
+const u8 gUnknown_08621CBD[] = _("Grown in a balanced manner.");
+const u8 gUnknown_08621CD9[] = _("I walk the 30 minutes from");
+const u8 gUnknown_08621CF4[] = _("home to here every day.");
+const u8 gUnknown_08621D0C[] = _("I take advantage of speed.");
+const u8 gUnknown_08621D27[] = _("Graceful sky dancers.");
+const u8 gUnknown_08621D3D[] = _("The ultimate would be to");
+const u8 gUnknown_08621D56[] = _("live as one with nature.");
+const u8 gUnknown_08621D6F[] = _("We battle in cooperation.");
+const u8 gUnknown_08621D89[] = _("Always friendly POKéMON.");
+const u8 gUnknown_08621DA2[] = _("Papa has trouble telling");
+const u8 gUnknown_08621DBB[] = _("the two of us apart!");
+const u8 gUnknown_08621DD0[] = _("I use splendid waterpower.");
+const u8 gUnknown_08621DEB[] = _("POKéMON of elegance!");
+const u8 gUnknown_08621E00[] = _("The adulation of beautiful");
+const u8 gUnknown_08621E1B[] = _("ladies fills me with energy!");
+const u8 gUnknown_08621E38[] = _("Offense over defense!");
+const u8 gUnknown_08621E4E[] = _("The DARK side's beauties.");
+const u8 gUnknown_08621E68[] = _("They said I was a punk, but");
+const u8 gUnknown_08621E84[] = _("I'm one of the ELITE FOUR!");
+const u8 gUnknown_08621E9F[] = _("Confuse and confound.");
+const u8 gUnknown_08621EB5[] = _("There's nothing definite.");
+const u8 gUnknown_08621ECF[] = _("I wonder how my grandma at");
+const u8 gUnknown_08621EEA[] = _("MT. PYRE is doing?");
+const u8 gUnknown_08621EFD[] = _("I use items for help.");
+const u8 gUnknown_08621F13[] = _("Flaming passion in icy cold!");
+const u8 gUnknown_08621F30[] = _("The ICE type can be better");
+const u8 gUnknown_08621F4B[] = _("trained in this hot land.");
+const u8 gUnknown_08621F65[] = _("Harness strong abilities.");
+const u8 gUnknown_08621F7F[] = _("The raw power of DRAGONS!");
+const u8 gUnknown_08621F99[] = _("I dedicate myself to the");
+const u8 gUnknown_08621FB2[] = _("POKéMON that saved me.");
+const u8 gUnknown_08621FC9[] = _("Dignity and respect.");
+const u8 gUnknown_08621FDE[] = _("I prefer POKéMON of grace.");
+const u8 gUnknown_08621FF9[] = _("I represent beauty as");
+const u8 gUnknown_0862200F[] = _("well as intelligence.");
+
+const u8 *const gUnknown_08622028[][4] =
+{
+ {
+ gUnknown_08620390, gUnknown_086203AA, gUnknown_086203C2, gUnknown_086203DB
+ },
+ {
+ gUnknown_086203F2, gUnknown_0862040D, gUnknown_08620428, gUnknown_08620444
+ },
+ {
+ gUnknown_08620456, gUnknown_0862046C, gUnknown_08620481, gUnknown_0862049C
+ },
+ {
+ gUnknown_086204B0, gUnknown_086204C7, gUnknown_086204DD, gUnknown_086204F9
+ },
+ {
+ gUnknown_0862050E, gUnknown_0862052B, gUnknown_08620546, gUnknown_08620562
+ },
+ {
+ gUnknown_0862057D, gUnknown_08620592, gUnknown_086205AC, gUnknown_086205C6
+ },
+ {
+ gUnknown_086205DD, gUnknown_086205F8, gUnknown_08620612, gUnknown_0862062F
+ },
+ {
+ gUnknown_08620638, gUnknown_08620654, gUnknown_08620668, gUnknown_08620681
+ },
+ {
+ gUnknown_08620693, gUnknown_086206A7, gUnknown_086206BC, gUnknown_086206D5
+ },
+ {
+ gUnknown_086206E7, gUnknown_086206FF, gUnknown_08620717, gUnknown_08620730
+ },
+ {
+ gUnknown_0862073D, gUnknown_0862074E, gUnknown_0862075D, gUnknown_08620779
+ },
+ {
+ gUnknown_0862078D, gUnknown_086207A9, gUnknown_086207BC, gUnknown_086207D7
+ },
+ {
+ gUnknown_086207F4, gUnknown_0862080A, gUnknown_0862081B, gUnknown_08620833
+ },
+ {
+ gUnknown_0862084B, gUnknown_08620863, gUnknown_0862087C, gUnknown_08620896
+ },
+ {
+ gUnknown_086208AA, gUnknown_086208C3, gUnknown_086208DC, gUnknown_086208F1
+ },
+ {
+ gUnknown_08620909, gUnknown_0862091C, gUnknown_0862092E, gUnknown_0862094A
+ },
+ {
+ gUnknown_08620963, gUnknown_08620979, gUnknown_08620988, gUnknown_086209A4
+ },
+ {
+ gUnknown_086209B4, gUnknown_086209CA, gUnknown_086209E3, gUnknown_086209FD
+ },
+ {
+ gUnknown_08620A18, gUnknown_08620A31, gUnknown_08620A4B, gUnknown_08620A66
+ },
+ {
+ gUnknown_08620A78, gUnknown_08620A8C, gUnknown_08620A9E, gUnknown_08620AB8
+ },
+ {
+ gUnknown_08620AD2, gUnknown_08620AE4, gUnknown_08620AFB, gUnknown_08620B16
+ },
+ {
+ gUnknown_08620B32, gUnknown_08620B4C, gUnknown_08620B64, gUnknown_08620B7F
+ },
+ {
+ gUnknown_08620B8C, gUnknown_08620BA6, gUnknown_08620BC0, gUnknown_08620BD8
+ },
+ {
+ gUnknown_08620BF2, gUnknown_08620C03, gUnknown_08620C19, gUnknown_08620C34
+ },
+ {
+ gUnknown_08620C4E, gUnknown_08620C60, gUnknown_08620C78, gUnknown_08620C92
+ },
+ {
+ gUnknown_08620CA8, gUnknown_08620CBE, gUnknown_08620CD9, gUnknown_08620CF5
+ },
+ {
+ gUnknown_08620D06, gUnknown_08620D1A, gUnknown_08620D32, gUnknown_08620D49
+ },
+ {
+ gUnknown_08620D63, gUnknown_08620D7C, gUnknown_08620D98, gUnknown_08620DB3
+ },
+ {
+ gUnknown_08620DCA, gUnknown_08620DDE, gUnknown_08620DF1, gUnknown_08620E08
+ },
+ {
+ gUnknown_08620E22, gUnknown_08620E39, gUnknown_08620E54, gUnknown_08620E6C
+ },
+ {
+ gUnknown_08620E83, gUnknown_08620E98, gUnknown_08620EB5, gUnknown_08620ECC
+ },
+ {
+ gUnknown_08620EE2, gUnknown_08620EF6, gUnknown_08620F12, gUnknown_08620F2A
+ },
+ {
+ gUnknown_08620F43, gUnknown_08620F5D, gUnknown_08620F76, gUnknown_08620F90
+ },
+ {
+ gUnknown_08620FA2, gUnknown_08620FBA, gUnknown_08620FCD, gUnknown_08620FE6
+ },
+ {
+ gUnknown_08620FF9, gUnknown_0862100A, gUnknown_08621021, gUnknown_0862103B
+ },
+ {
+ gUnknown_08621056, gUnknown_0862106A, gUnknown_08621083, gUnknown_0862109F
+ },
+ {
+ gUnknown_086210B5, gUnknown_086210CE, gUnknown_086210E7, gUnknown_08621101
+ },
+ {
+ gUnknown_08621114, gUnknown_08621125, gUnknown_0862113D, gUnknown_08621157
+ },
+ {
+ gUnknown_0862116E, gUnknown_08621182, gUnknown_08621197, gUnknown_086211B3
+ },
+ {
+ gUnknown_086211CC, gUnknown_086211E4, gUnknown_086211FC, gUnknown_08621216
+ },
+ {
+ gUnknown_08621230, gUnknown_08621243, gUnknown_08621257, gUnknown_08621270
+ },
+ {
+ gUnknown_0862127B, gUnknown_08621290, gUnknown_086212A7, gUnknown_086212BF
+ },
+ {
+ gUnknown_086212DA, gUnknown_086212F3, gUnknown_0862130C, gUnknown_08621326
+ },
+ {
+ gUnknown_08621342, gUnknown_0862135C, gUnknown_08621376, gUnknown_08621393
+ },
+ {
+ gUnknown_086213A6, gUnknown_086213C2, gUnknown_086213DC, gUnknown_086213F8
+ },
+ {
+ gUnknown_0862140B, gUnknown_08621426, gUnknown_08621439, gUnknown_08621451
+ },
+ {
+ gUnknown_0862146C, gUnknown_08621483, gUnknown_08621499, gUnknown_086214AD
+ },
+ {
+ gUnknown_086214C6, gUnknown_086214DA, gUnknown_086214EF, gUnknown_08621507
+ },
+ {
+ gUnknown_0862151D, gUnknown_08621527, gUnknown_0862153B, gUnknown_08621551
+ },
+ {
+ gUnknown_0862156A, gUnknown_08621585, gUnknown_08621599, gUnknown_086215AF
+ },
+ {
+ gUnknown_086215BC, gUnknown_086215D0, gUnknown_086215E3, gUnknown_086215FD
+ },
+ {
+ gUnknown_08621615, gUnknown_08621630, gUnknown_0862164A, gUnknown_08621664
+ },
+ {
+ gUnknown_08621674, gUnknown_0862168C, gUnknown_086216A8, gUnknown_086216C3
+ },
+ {
+ gUnknown_086216E0, gUnknown_086216FB, gUnknown_08621710, gUnknown_0862172A
+ },
+ {
+ gUnknown_08621740, gUnknown_08621752, gUnknown_0862176B, gUnknown_08621782
+ },
+ {
+ gUnknown_08621799, gUnknown_086217A9, gUnknown_086217C2, gUnknown_086217D9
+ },
+ {
+ gUnknown_086217F5, gUnknown_08621810, gUnknown_08621826, gUnknown_0862183E
+ },
+ {
+ gUnknown_08621851, gUnknown_0862186A, gUnknown_08621881, gUnknown_08621899
+ },
+ {
+ gUnknown_086218AF, gUnknown_086218C0, gUnknown_086218D7, gUnknown_086218F0
+ },
+ {
+ gUnknown_08621908, gUnknown_08621921, gUnknown_0862193C, gUnknown_08621955
+ },
+ {
+ gUnknown_0862196C, gUnknown_08621983, gUnknown_0862199D, gUnknown_086219B6
+ },
+ {
+ gUnknown_086219CE, gUnknown_086219E3, gUnknown_086219F8, gUnknown_08621A13
+ },
+ {
+ gUnknown_08621A25, gUnknown_08621A34, gUnknown_08621A41, gUnknown_08621A5C
+ },
+ {
+ gUnknown_08621A72, gUnknown_08621A88, gUnknown_08621A9D, gUnknown_08621AB0
+ },
+ {
+ gUnknown_08621AC5, gUnknown_08621ADD, gUnknown_08621AF7, gUnknown_08621B10
+ },
+ {
+ gUnknown_08621B23, gUnknown_08621B3B, gUnknown_08621B57, gUnknown_08621B73
+ },
+ {
+ gUnknown_08621B8C, gUnknown_08621BA4, gUnknown_08621BBB, gUnknown_08621BD6
+ },
+ {
+ gUnknown_08621BE5, gUnknown_08621BFC, gUnknown_08621C18, gUnknown_08621C2F
+ },
+ {
+ gUnknown_08621C47, gUnknown_08621C5C, gUnknown_08621C6F, gUnknown_08621C8A
+ },
+ {
+ gUnknown_08621CA2, gUnknown_08621CBD, gUnknown_08621CD9, gUnknown_08621CF4
+ },
+ {
+ gUnknown_08621D0C, gUnknown_08621D27, gUnknown_08621D3D, gUnknown_08621D56
+ },
+ {
+ gUnknown_08621D6F, gUnknown_08621D89, gUnknown_08621DA2, gUnknown_08621DBB
+ },
+ {
+ gUnknown_08621DD0, gUnknown_08621DEB, gUnknown_08621E00, gUnknown_08621E1B
+ },
+ {
+ gUnknown_08621E38, gUnknown_08621E4E, gUnknown_08621E68, gUnknown_08621E84
+ },
+ {
+ gUnknown_08621E9F, gUnknown_08621EB5, gUnknown_08621ECF, gUnknown_08621EEA
+ },
+ {
+ gUnknown_08621EFD, gUnknown_08621F13, gUnknown_08621F30, gUnknown_08621F4B
+ },
+ {
+ gUnknown_08621F65, gUnknown_08621F7F, gUnknown_08621F99, gUnknown_08621FB2
+ },
+ {
+ gUnknown_08621FC9, gUnknown_08621FDE, gUnknown_08621FF9, gUnknown_0862200F
+ },
+};
diff --git a/src/pokenav_unk_10.c b/src/pokenav_unk_10.c
index dd91e930a..6fa11853c 100644
--- a/src/pokenav_unk_10.c
+++ b/src/pokenav_unk_10.c
@@ -60,8 +60,77 @@ u32 sub_81D0954(void);
void sub_81D1500(struct Pokenav10Struct *structPtr);
bool32 sub_81D1524(struct Pokenav10Struct *structPtr);
void sub_81D1538(struct Sprite *sprite);
+u32 sub_81D0C84(int);
+u32 sub_81D0D2C(int);
+u32 sub_81D0D8C(int);
+u32 sub_81D0E00(int);
+u32 sub_81D0C54(int);
+
+const u8 gUnknown_086237F8[][4] =
+{
+ {1, 1, 0, 0},
+ {3, 4, 1, 0},
+ {3, 4, 5, 0},
+ {3, 4, 9, 0},
+ {3, 4, 13, 0},
+ {3, 4, 17, 0},
+ {1, 1, 21, 0},
+ {1, 1, 22, 0},
+ {1, 1, 23, 0},
+ {1, 1, 24, 0},
+ {1, 1, 25, 1},
+ {1, 1, 26, 1},
+ {1, 1, 27, 1},
+ {1, 1, 28, 1},
+ {1, 1, 29, 1},
+ {1, 1, 30, 1},
+ {1, 1, 31, 1}
+};
+
+#include "data/text/ribbon_descriptions.h"
+#include "data/text/gift_ribbon_descriptions.h"
+
+const u16 gUnknown_08623FF8[] = INCBIN_U16("graphics/pokenav/ribbons_icon1.gbapal");
+const u16 gUnknown_08624018[] = INCBIN_U16("graphics/pokenav/ribbons_icon2.gbapal");
+const u16 gUnknown_08624038[] = INCBIN_U16("graphics/pokenav/ribbons_icon3.gbapal");
+const u16 gUnknown_08624058[] = INCBIN_U16("graphics/pokenav/ribbons_icon4.gbapal");
+const u16 gUnknown_08624078[] = INCBIN_U16("graphics/pokenav/ribbons_icon5.gbapal");
+const u16 gUnknown_08624098[] = INCBIN_U16("graphics/pokenav/8624098.gbapal");
+const u32 gUnknown_086240B8[] = INCBIN_U32("graphics/pokenav/ribbons_icon.4bpp.lz");
+const u32 gUnknown_08624280[] = INCBIN_U32("graphics/pokenav/ribbons_icon_big.4bpp.lz");
+
+const struct BgTemplate gUnknown_08624B98[2] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+const LoopedTask gUnknown_08624BA0[] =
+{
+ NULL,
+ sub_81D0C84,
+ sub_81D0D2C,
+ sub_81D0D8C,
+ sub_81D0E00,
+ sub_81D0C54
+};
-// code
static const struct WindowTemplate gUnknown_08624BB8 =
{
.bg = 2,
diff --git a/src/pokenav_unk_2.c b/src/pokenav_unk_2.c
index 3aec4685e..09416c31f 100644
--- a/src/pokenav_unk_2.c
+++ b/src/pokenav_unk_2.c
@@ -1,6 +1,261 @@
#include "global.h"
+#include "bg.h"
#include "gym_leader_rematch.h"
#include "pokenav.h"
+#include "sprite.h"
+#include "window.h"
+#include "strings.h"
+#include "scanline_effect.h"
+
+extern const u32 gPokenavOptions_Gfx[];
+extern const u16 gPokenavOptions_Pal[];
+
+const u16 gUnknown_0861FC78[] = INCBIN_U16("graphics/pokenav/bg.gbapal");
+const u32 gUnknown_0861FC98[] = INCBIN_U32("graphics/pokenav/bg.4bpp.lz");
+const u32 gUnknown_0861FCAC[] = INCBIN_U32("graphics/pokenav/bg.bin.lz");
+const u16 gUnknown_0861FD4C[] = INCBIN_U16("graphics/pokenav/outline.gbapal");
+const u32 gUnknown_0861FD6C[] = INCBIN_U32("graphics/pokenav/outline.4bpp.lz");
+const u32 gUnknown_0861FFF4[] = INCBIN_U32("graphics/pokenav/outline_map.bin.lz");
+const u16 gUnknown_08620104[] = INCBIN_U16("graphics/pokenav/blue_light.gbapal");
+const u32 gUnknown_08620124[] = INCBIN_U32("graphics/pokenav/blue_light.4bpp.lz");
+
+const struct BgTemplate gUnknown_08620194[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x0F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x17,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+u32 sub_81C9C6C(int);
+u32 sub_81C9CA8(int);
+u32 sub_81C9D44(int);
+u32 sub_81C9DD8(int);
+u32 sub_81C9E58(int);
+u32 sub_81C9EC8(int);
+u32 sub_81C9EF8(int);
+u32 sub_81C9F28(int);
+
+u32 (*const gUnknown_086201A0[])(int) =
+{
+ NULL,
+ sub_81C9C6C,
+ sub_81C9CA8,
+ sub_81C9D44,
+ sub_81C9DD8,
+ sub_81C9E58,
+ sub_81C9EC8,
+ sub_81C9EF8,
+ sub_81C9F28
+};
+
+const struct CompressedSpriteSheet gUnknown_086201C4[] =
+{
+ {
+ .data = gPokenavOptions_Gfx,
+ .size = 0x3400,
+ .tag = 0x0003
+ },
+ {
+ .data = gUnknown_08620124,
+ .size = 0x0100,
+ .tag = 0x0001
+ }
+};
+
+ const struct SpritePalette gUnknown_086201D4[] =
+ {
+ {gPokenavOptions_Pal + 0x00, 4},
+ {gPokenavOptions_Pal + 0x10, 5},
+ {gPokenavOptions_Pal + 0x20, 6},
+ {gPokenavOptions_Pal + 0x30, 7},
+ {gPokenavOptions_Pal + 0x40, 8},
+ {gUnknown_08620104, 3},
+ {}
+};
+
+const u16 gUnknown_0862020C[] = {0, 0};
+const u16 gUnknown_08620210[] = {0x20, 1};
+const u16 gUnknown_08620214[] = {0x40, 4};
+const u16 gUnknown_08620218[] = {0x60, 2};
+const u16 gUnknown_0862021C[] = {0x80, 3};
+const u16 gUnknown_08620220[] = {0xA0, 1};
+const u16 gUnknown_08620224[] = {0xC0, 1};
+const u16 gUnknown_08620228[] = {0xE0, 4};
+const u16 gUnknown_0862022C[] = {0x100, 1};
+const u16 gUnknown_08620230[] = {0x120, 2};
+const u16 gUnknown_08620234[] = {0x140, 0};
+const u16 gUnknown_08620238[] = {0x160, 0};
+const u16 gUnknown_0862023C[] = {0x180, 3};
+
+struct UnkStruct_08620240
+{
+ u16 unk0;
+ u16 unk2;
+ const u16 *unk4[6];
+};
+
+const struct UnkStruct_08620240 gUnknown_08620240[5] =
+{
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C, NULL, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C, NULL, NULL}
+ },
+ {
+ 0x2A,
+ 0x14,
+ {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C, NULL}
+ },
+ {
+ 0x38,
+ 0x14,
+ {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C, NULL, NULL, NULL}
+ },
+ {
+ 0x28,
+ 0x10,
+ {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C}
+ },
+};
+
+const struct WindowTemplate gUnknown_086202CC =
+{
+ .bg = 1,
+ .tilemapLeft = 3,
+ .tilemapTop = 17,
+ .width = 0x18,
+ .height = 0x2,
+ .paletteNum = 1,
+ .baseBlock = 8
+};
+
+const u8 *const gUnknown_086202D4[] =
+{
+ gUnknown_085EBCC5,
+ gUnknown_085EBCE8,
+ gUnknown_085EBD01,
+ gUnknown_085EBD1C,
+ gUnknown_085EBD34,
+ gUnknown_085EBD83,
+ gUnknown_085EBDA2,
+ gUnknown_085EBDBF,
+ gUnknown_085EBDDB,
+ gUnknown_085EBDEE,
+ gUnknown_085EBE06,
+ gUnknown_085EBE19,
+ gUnknown_085EBE2D,
+ gUnknown_085EBE41
+};
+
+const u8 gUnknown_0862030C[] = {6, 8, 7};
+
+const u8 gUnknown_0862030F[] = {6, 8, 7, 0, 0};
+
+const struct OamData gUnknown_08620314 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const union AffineAnimCmd gUnknown_0862031C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_0862032C[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0x12),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08620344[] =
+{
+ gUnknown_0862031C,
+ gUnknown_0862032C
+};
+
+const struct SpriteTemplate gUnknown_0862034C =
+{
+ .tileTag = 3,
+ .paletteTag = 4,
+ .oam = &gUnknown_08620314,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08620344,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct OamData gUnknown_08620364 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_0862036C =
+{
+ .tileTag = 1,
+ .paletteTag = 3,
+ .oam = &gUnknown_08620364,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct ScanlineEffectParams gUnknown_08620384 =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1,
+ 0
+};
bool32 sub_81C98D4(void)
{
diff --git a/src/pokenav_unk_3.c b/src/pokenav_unk_3.c
index d7afada49..47eb6ef3d 100755
--- a/src/pokenav_unk_3.c
+++ b/src/pokenav_unk_3.c
@@ -37,9 +37,10 @@ static u32 sub_81CACF8(struct Pokenav3Struct *);
static u32 sub_81CAD20(s32);
static bool32 sub_81CB1D0(void);
-extern const u8 gUnknown_08622508[];
-extern const u8 gUnknown_0862250A[];
-extern const u8 *const gUnknown_08622028[][4];
+#include "data/text/trainers_eye_messages.h"
+
+const u8 gUnknown_08622508[] = {0, 2};
+const u8 gUnknown_0862250A[] = {0, 1, 2, 0, 0, 0};
bool32 sub_81CAAE8(void)
{
diff --git a/src/pokenav_unk_4.c b/src/pokenav_unk_4.c
index cd9651580..34c529fc5 100755
--- a/src/pokenav_unk_4.c
+++ b/src/pokenav_unk_4.c
@@ -93,27 +93,191 @@ static void sub_81CC330(struct Pokenav4Struct *);
static struct Sprite *sub_81CC370(void);
static void sub_81CC440(struct Sprite *sprite);
static void sub_81CC4A4(struct Sprite *sprite);
+void sub_81CC34C(struct Sprite *sprite);
+u32 sub_81CB510(int);
+u32 sub_81CB588(int);
+u32 sub_81CB600(int);
+u32 sub_81CB678(int);
+u32 sub_81CB6F0(int);
+u32 sub_81CB734(int);
+u32 sub_81CB75C(int);
+u32 sub_81CB7A0(int);
+u32 sub_81CB824(int);
+u32 sub_81CB888(int);
+u32 sub_81CB93C(int);
+u32 sub_81CBAD4(int);
+u32 sub_81CB9C8(int);
+u32 sub_81CBA68(int);
+u32 sub_81CBB74(int);
-extern const LoopedTask gUnknown_08622798[];
-extern const struct BgTemplate gUnknown_0862278C[3];
-extern const u16 gUnknown_08622510[];
-extern const u32 gUnknown_08622530[];
-extern const u32 gUnknown_08622760[];
-extern const u16 gUnknown_08622700[];
-extern const u16 gUnknown_08622720[];
-extern const u8 gUnknown_086225D4[];
-extern const u16 gUnknown_086226E0[];
-extern const struct BgTemplate gUnknown_08622794;
-extern const struct WindowTemplate gUnknown_086227D8;
-extern const struct WindowTemplate gUnknown_086227E0;
-extern const u8 *const gUnknown_086227E8[];
extern const struct WindowTemplate gUnknown_08622808;
-extern const u8 gUnknown_086227F4[];
-extern const struct CompressedSpriteSheet gUnknown_08622810[1];
-extern const struct SpritePalette gUnknown_08622818[];
extern const struct SpriteTemplate gUnknown_08622830;
extern const struct SpriteTemplate gUnknown_08622850;
+const u16 gUnknown_08622510[] = INCBIN_U16("graphics/pokenav/ui_matchcall.gbapal");
+const u32 gUnknown_08622530[] = INCBIN_U32("graphics/pokenav/ui_matchcall.4bpp.lz");
+const u32 gUnknown_086225D4[] = INCBIN_U32("graphics/pokenav/ui_matchcall.bin.lz");
+const u16 gUnknown_08622698[] = INCBIN_U16("graphics/pokenav/arrow2.gbapal");
+const u32 gUnknown_086226B8[] = INCBIN_U32("graphics/pokenav/arrow2.4bpp.lz");
+const u16 gUnknown_086226E0[] = INCBIN_U16("graphics/pokenav/86226E0.gbapal");
+const u16 gUnknown_08622700[] = INCBIN_U16("graphics/pokenav/8622700.gbapal");
+const u16 gUnknown_08622720[] = INCBIN_U16("graphics/pokenav/pokeball_matchcall.gbapal");
+const u32 gUnknown_08622760[] = INCBIN_U32("graphics/pokenav/pokeball_matchcall.4bpp.lz");
+
+const struct BgTemplate gUnknown_0862278C[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const LoopedTask gUnknown_08622798[] =
+{
+ NULL,
+ sub_81CB510,
+ sub_81CB588,
+ sub_81CB600,
+ sub_81CB678,
+ sub_81CB6F0,
+ sub_81CB734,
+ sub_81CB75C,
+ sub_81CB7A0,
+ sub_81CB824,
+ sub_81CB888,
+ sub_81CB93C,
+ sub_81CBAD4,
+ sub_81CB9C8,
+ sub_81CBA68,
+ sub_81CBB74
+};
+
+const struct WindowTemplate gUnknown_086227D8 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 5,
+ .width = 11,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 16
+};
+
+const struct WindowTemplate gUnknown_086227E0 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 9,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 2,
+ .baseBlock = 38
+};
+
+const u8 *const gUnknown_086227E8[] =
+{
+ gUnknown_085EC017,
+ gUnknown_085EC01C,
+ gUnknown_085EC022
+};
+
+const u8 gUnknown_086227F4[] = _("·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·{PAUSE 0x04}·\p");
+
+const struct WindowTemplate gUnknown_08622808 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 12,
+ .width = 0x1C,
+ .height = 0x04,
+ .paletteNum = 1,
+ .baseBlock = 10
+};
+
+const struct CompressedSpriteSheet gUnknown_08622810[1] =
+{
+ {gUnknown_086226B8, 0x40, 7}
+};
+
+const struct SpritePalette gUnknown_08622818[] =
+{
+ {gUnknown_08622698, 12},
+ {}
+};
+
+const struct OamData gUnknown_08622828 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622830 =
+{
+ .tileTag = 7,
+ .paletteTag = 12,
+ .oam = &gUnknown_08622828,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CC34C,
+};
+
+const struct OamData gUnknown_08622848 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_08622850 =
+{
+ .tileTag = 8,
+ .paletteTag = 13,
+ .oam = &gUnknown_08622848,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
bool32 sub_81CB260(void)
{
struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
@@ -718,7 +882,7 @@ static void sub_81CBBB8(void)
template.unkE = 7;
template.unk10 = sub_81CB050;
template.unk14 = sub_81CBCEC;
- sub_81C81D4(&gUnknown_08622794, &template, 2);
+ sub_81C81D4(&gUnknown_0862278C[2], &template, 2);
CreateTask(sub_81CBC64, 7);
}
diff --git a/src/pokenav_unk_5.c b/src/pokenav_unk_5.c
index 5f24fd07f..bf2f287b8 100755
--- a/src/pokenav_unk_5.c
+++ b/src/pokenav_unk_5.c
@@ -32,11 +32,11 @@ struct Pokenav5Struct_2
u8 cityZoomPics[22][0xC8];
};
-struct CityZoomPic
+struct CityMapEntry
{
u16 mapSecId;
- u16 unk2;
- const u32 *data;
+ u16 index;
+ const u32 *tilemap;
};
static u32 sub_81CC568(struct Pokenav5Struct *);
@@ -61,17 +61,110 @@ static void sub_81CCDE8(struct Pokenav5Struct_2 *, int, int);
static void sub_81CCFA4(int);
static void sub_81CCC9C(u8 taskId);
static void sub_81CCF78(void);
+void sub_81CCEF4(struct Sprite *sprite);
+u32 sub_81CC848(int);
+u32 sub_81CC878(int);
+u32 sub_81CC8D8(int);
+u32 sub_81CC95C(int);
-extern const LoopedTask gUnknown_086230E4[];
-extern const struct BgTemplate gUnknown_086230D8[2];
-extern const struct CompressedSpriteSheet gUnknown_086230F8[1];
-extern const struct SpritePalette gUnknown_08623100[];
-extern const struct WindowTemplate gUnknown_08623110;
-extern const u32 gUnknown_08622888[];
-extern const u16 gUnknown_08622868[];
extern const u16 gHoennMapZoomIcons_Pal[];
-extern const struct CityZoomPic gUnknown_08623118[22];
extern const struct SpriteTemplate gUnknown_086231D0;
+extern const u32 gHoennMapZoomIcons_Gfx[];
+
+const u16 gUnknown_08622868[] = INCBIN_U16("graphics/pokenav/8622868.gbapal");
+const u32 gUnknown_08622888[] = INCBIN_U32("graphics/pokenav/zoom_tiles.4bpp.lz");
+
+#include "data/region_map/city_map_tilemaps.h"
+
+
+const struct BgTemplate gUnknown_086230D8[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 0x00,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+const LoopedTask gUnknown_086230E4[] =
+{
+ NULL,
+ sub_81CC848,
+ sub_81CC878,
+ sub_81CC8D8,
+ sub_81CC95C
+};
+
+const struct CompressedSpriteSheet gUnknown_086230F8[1] =
+{
+ {gHoennMapZoomIcons_Gfx, 0x800, 6}
+};
+
+const struct SpritePalette gUnknown_08623100[] =
+{
+ {gHoennMapZoomIcons_Pal, 11},
+ {}
+};
+
+const struct WindowTemplate gUnknown_08623110 =
+{
+ .bg = 1,
+ .tilemapLeft = 17,
+ .tilemapTop = 4,
+ .width = 12,
+ .height = 13,
+ .paletteNum = 1,
+ .baseBlock = 0x4C
+};
+
+#include "data/region_map/city_map_entries.h"
+
+const struct OamData gUnknown_086231C8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+};
+
+const struct SpriteTemplate gUnknown_086231D0 =
+{
+ .tileTag = 6,
+ .paletteTag = 11,
+ .oam = &gUnknown_086231C8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81CCEF4,
+};
u32 sub_81CC4D4(void)
{
@@ -215,7 +308,7 @@ static u32 sub_81CC6F4(s32 taskState)
HideBg(2);
HideBg(3);
SetBgMode(1);
- InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8));
+ InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8) - 1);
regionMap = GetSubstructPtr(16);
sub_8122CF8(regionMap, &gUnknown_086230D8[1], sub_81CC6D0());
sub_81CC9C0();
@@ -521,9 +614,9 @@ static bool32 sub_81CCD24(void)
static u32 sub_81CCD34(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- if (taskState < (int)ARRAY_COUNT(gUnknown_08623118))
+ if (taskState < (int)ARRAY_COUNT(gPokenavCityMaps))
{
- LZ77UnCompWram(gUnknown_08623118[taskState].data, state->cityZoomPics[taskState]);
+ LZ77UnCompWram(gPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
return 1;
}
@@ -533,10 +626,10 @@ static u32 sub_81CCD34(s32 taskState)
static void sub_81CCD70(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
{
int i;
- for (i = 0; i < (int)ARRAY_COUNT(gUnknown_08623118) && (gUnknown_08623118[i].mapSecId != mapSecId || gUnknown_08623118[i].unk2 != pos); i++)
+ for (i = 0; i < (int)ARRAY_COUNT(gPokenavCityMaps) && (gPokenavCityMaps[i].mapSecId != mapSecId || gPokenavCityMaps[i].index != pos); i++)
;
- if (i == ARRAY_COUNT(gUnknown_08623118))
+ if (i == ARRAY_COUNT(gPokenavCityMaps))
return;
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
diff --git a/src/pokenav_unk_7.c b/src/pokenav_unk_7.c
index af48fbb1f..814a27c54 100644
--- a/src/pokenav_unk_7.c
+++ b/src/pokenav_unk_7.c
@@ -1,3 +1,105 @@
#include "global.h"
+#include "bg.h"
+#include "window.h"
+#include "pokenav.h"
+
+u32 sub_81CE37C(int);
+u32 sub_81CE2D0(int);
+u32 sub_81CE4D8(int);
+u32 sub_81CE5E4(int);
+u32 sub_81CE6BC(int);
+u32 sub_81CE700(int);
BSS_DATA u8 gUnknown_030012BC;
+
+const u16 gUnknown_086231E8[] = INCBIN_U16("graphics/pokenav/86231E8.gbapal");
+const u16 gUnknown_08623208[] = INCBIN_U16("graphics/pokenav/8623208.gbapal");
+const u32 gUnknown_08623228[] = INCBIN_U32("graphics/pokenav/8623228.4bpp.lz");
+const u32 gUnknown_0862323C[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
+const u16 gUnknown_08623338[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
+
+const struct BgTemplate gUnknown_08623358[3] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x1F,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 0x1D,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x1E,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+const struct WindowTemplate gUnknown_08623364 =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 1,
+ .width = 13,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 2
+};
+
+const struct WindowTemplate gUnknown_0862336C =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x36
+};
+
+const struct WindowTemplate gUnknown_08623374 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 0x1C,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const struct WindowTemplate gUnknown_0862337C =
+{
+ .bg = 1,
+ .tilemapLeft = 13,
+ .tilemapTop = 0x1C,
+ .width = 3,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x44
+};
+
+const LoopedTask gUnknown_08623384[] =
+{
+ NULL,
+ sub_81CE37C,
+ sub_81CE2D0,
+ sub_81CE4D8,
+ sub_81CE5E4,
+ sub_81CE6BC,
+ sub_81CE700
+};
diff --git a/src/pokenav_unk_8.c b/src/pokenav_unk_8.c
new file mode 100644
index 000000000..8d72c1af0
--- /dev/null
+++ b/src/pokenav_unk_8.c
@@ -0,0 +1,78 @@
+#include "global.h"
+#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CF134(void);
+u32 sub_81CF1C4(void);
+u32 sub_81CF1D8(void);
+u32 sub_81CF278(void);
+u32 sub_81CF578(int);
+u32 sub_81CF5F0(int);
+u32 sub_81CF668(int);
+u32 sub_81CF6E0(int);
+u32 sub_81CF758(int);
+u32 sub_81CF798(int);
+
+const u32 gUnknown_086233A0[] = {0x16, 0x17, 0x18, 0x21, 0x2F};
+
+u32 (*const gUnknown_086233B4[])(void) =
+{
+ sub_81CF134,
+ sub_81CF1C4,
+ sub_81CF1D8,
+ sub_81CF278
+};
+
+const u16 gUnknown_086233C4[] = INCBIN_U16("graphics/pokenav/condition_search2.gbapal");
+const u32 gUnknown_086233E4[] = INCBIN_U32("graphics/pokenav/condition_search2.4bpp.lz");
+const u32 gUnknown_086234AC[] = INCBIN_U32("graphics/pokenav/condition_search2.bin.lz");
+const u16 gUnknown_08623570[] = INCBIN_U16("graphics/pokenav/8623570.gbapal");
+
+const struct BgTemplate gUnknown_08623590 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_08623594 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_08623598[] =
+{
+ NULL,
+ sub_81CF578,
+ sub_81CF5F0,
+ sub_81CF668,
+ sub_81CF6E0,
+ sub_81CF758,
+ sub_81CF798
+};
+
+const struct WindowTemplate gUnknown_086235B4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+const u8 gUnknown_086235BC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235C8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086235D4[] = _("{UNK_SPACER}");
diff --git a/src/pokenav_unk_9.c b/src/pokenav_unk_9.c
new file mode 100644
index 000000000..43f626a03
--- /dev/null
+++ b/src/pokenav_unk_9.c
@@ -0,0 +1,75 @@
+#include "global.h"
+#include "pokenav.h"
+#include "bg.h"
+#include "window.h"
+
+u32 sub_81CFB8C(void);
+u32 sub_81CFC2C(void);
+u32 sub_81CFC40(void);
+u32 sub_81CFFFC(int);
+u32 sub_81D0074(int);
+u32 sub_81D00EC(int);
+u32 sub_81D0164(int);
+u32 sub_81D01DC(int);
+u32 sub_81D021C(int);
+
+u32 (*const gUnknown_086235D8[])(void) =
+{
+ sub_81CFB8C,
+ sub_81CFC2C,
+ sub_81CFC40
+};
+
+const u16 gUnknown_086235E4[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
+const u32 gUnknown_08623604[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
+const u32 gUnknown_086236CC[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
+const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
+
+const struct BgTemplate gUnknown_086237B0 =
+{
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 0x06,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+};
+
+const struct BgTemplate gUnknown_086237B4 =
+{
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 0x07,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+};
+
+const LoopedTask gUnknown_086237B8[] =
+{
+ NULL,
+ sub_81CFFFC,
+ sub_81D0074,
+ sub_81D00EC,
+ sub_81D0164,
+ sub_81D01DC,
+ sub_81D021C
+};
+
+const struct WindowTemplate gUnknown_086237D4 =
+{
+ .bg = 1,
+ .tilemapLeft = 1,
+ .tilemapTop = 6,
+ .width = 7,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 20
+};
+
+// TODO: these are probably not strings?
+const u8 gUnknown_086237DC[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237E8[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+const u8 gUnknown_086237F4[] = _("{UNK_SPACER}");