summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_factory_screen.c4
-rw-r--r--src/battle_interface.c163
-rw-r--r--src/battle_pyramid.c2
-rwxr-xr-xsrc/cable_car.c8
-rw-r--r--src/contest_link_80F57C4.c6
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_actions.h471
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_adjectives.h219
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_battle.h381
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_conditions.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_endings.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_events.h177
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_feelings.h417
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_greetings.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_hobbies.h327
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_lifestyle.h273
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_misc.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_move_1.h158
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_move_2.h204
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_people.h453
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon.h206
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon2.h255
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_speech.h363
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_status.h657
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_time.h273
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_trainer.h165
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_trendy_saying.h201
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_voices.h381
-rwxr-xr-xsrc/data/easy_chat/easy_chat_groups.h137
-rwxr-xr-xsrc/data/easy_chat/easy_chat_words_by_letter.h2750
-rw-r--r--src/easy_chat.c4423
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/field_control_avatar.c2
-rw-r--r--src/field_screen_effect.c10
-rw-r--r--src/field_specials.c5
-rw-r--r--src/field_weather.c15
-rw-r--r--src/field_weather_effect.c103
-rw-r--r--src/fieldmap.c6
-rw-r--r--src/graphics.c14
-rw-r--r--src/mail.c2
-rw-r--r--src/overworld.c20
-rwxr-xr-xsrc/party_menu.c6
-rw-r--r--src/pokemon.c24
-rw-r--r--src/pokemon_storage_system.c2
-rw-r--r--src/pokemon_summary_screen.c427
-rw-r--r--src/pokenav.c736
-rw-r--r--src/rom_8011DC0.c4
-rw-r--r--src/script.c43
-rw-r--r--src/start_menu.c18
-rw-r--r--src/trade.c4
-rw-r--r--src/trainer_hill.c2
-rw-r--r--src/tv.c2
51 files changed, 14614 insertions, 1251 deletions
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index f30f256f2..d4abe3c96 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -1183,7 +1183,7 @@ static void CB2_InitSelectScreen(void)
break;
case 5:
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- sFactorySelectScreen->cursorPos = gUnknown_0203CF20;
+ sFactorySelectScreen->cursorPos = gLastViewedMonIndex;
Select_InitMonsData();
Select_InitAllSprites();
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
@@ -3172,7 +3172,7 @@ static void CB2_InitSwapScreen(void)
break;
case 5:
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- sFactorySwapScreen->cursorPos = gUnknown_0203CF20;
+ sFactorySwapScreen->cursorPos = gLastViewedMonIndex;
gMain.state++;
break;
case 6:
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 17d44dac3..a86f0ea84 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -35,125 +35,126 @@ struct TestingBar
};
enum
-{
- HEALTHBOX_GFX_0,
- HEALTHBOX_GFX_1,
- HEALTHBOX_GFX_2,
- HEALTHBOX_GFX_HP_BAR_GREEN,
- HEALTHBOX_GFX_4,
- HEALTHBOX_GFX_5,
- HEALTHBOX_GFX_6,
- HEALTHBOX_GFX_7,
- HEALTHBOX_GFX_8,
- HEALTHBOX_GFX_9,
- HEALTHBOX_GFX_10,
- HEALTHBOX_GFX_11,
- HEALTHBOX_GFX_12,
- HEALTHBOX_GFX_13,
- HEALTHBOX_GFX_14,
- HEALTHBOX_GFX_15,
- HEALTHBOX_GFX_16,
- HEALTHBOX_GFX_17,
- HEALTHBOX_GFX_18,
- HEALTHBOX_GFX_19,
- HEALTHBOX_GFX_20,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER0,
- HEALTHBOX_GFX_22,
- HEALTHBOX_GFX_23,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER0,
+{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c
+ // These are indexes into the tables, which are filled with 8x8 square pixel data.
+ HEALTHBOX_GFX_0, //hp bar [black section]
+ HEALTHBOX_GFX_1, //hp bar "H"
+ HEALTHBOX_GFX_2, //hp bar "P"
+ HEALTHBOX_GFX_HP_BAR_GREEN, //hp bar [0 pixels]
+ HEALTHBOX_GFX_4, //hp bar [1 pixels]
+ HEALTHBOX_GFX_5, //hp bar [2 pixels]
+ HEALTHBOX_GFX_6, //hp bar [3 pixels]
+ HEALTHBOX_GFX_7, //hp bar [4 pixels]
+ HEALTHBOX_GFX_8, //hp bar [5 pixels]
+ HEALTHBOX_GFX_9, //hp bar [6 pixels]
+ HEALTHBOX_GFX_10, //hp bar [7 pixels]
+ HEALTHBOX_GFX_11, //hp bar [8 pixels]
+ HEALTHBOX_GFX_12, //exp bar [0 pixels]
+ HEALTHBOX_GFX_13, //exp bar [1 pixels]
+ HEALTHBOX_GFX_14, //exp bar [2 pixels]
+ HEALTHBOX_GFX_15, //exp bar [3 pixels]
+ HEALTHBOX_GFX_16, //exp bar [4 pixels]
+ HEALTHBOX_GFX_17, //exp bar [5 pixels]
+ HEALTHBOX_GFX_18, //exp bar [6 pixels]
+ HEALTHBOX_GFX_19, //exp bar [7 pixels]
+ HEALTHBOX_GFX_20, //exp bar [8 pixels]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER0, //status psn "(P"
+ HEALTHBOX_GFX_22, //status psn "SN"
+ HEALTHBOX_GFX_23, //status psn "|)""
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, //status prz
HEALTHBOX_GFX_25,
HEALTHBOX_GFX_26,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER0,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER0, //status slp
HEALTHBOX_GFX_28,
HEALTHBOX_GFX_29,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER0,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, //status frz
HEALTHBOX_GFX_31,
HEALTHBOX_GFX_32,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER0,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn
HEALTHBOX_GFX_34,
HEALTHBOX_GFX_35,
- HEALTHBOX_GFX_36,
- HEALTHBOX_GFX_37,
- HEALTHBOX_GFX_38,
- HEALTHBOX_GFX_39,
- HEALTHBOX_GFX_40,
- HEALTHBOX_GFX_41,
- HEALTHBOX_GFX_42,
- HEALTHBOX_GFX_43,
- HEALTHBOX_GFX_44,
- HEALTHBOX_GFX_45,
- HEALTHBOX_GFX_46,
- HEALTHBOX_GFX_HP_BAR_YELLOW,
- HEALTHBOX_GFX_48,
- HEALTHBOX_GFX_49,
- HEALTHBOX_GFX_50,
- HEALTHBOX_GFX_51,
- HEALTHBOX_GFX_52,
- HEALTHBOX_GFX_53,
- HEALTHBOX_GFX_54,
- HEALTHBOX_GFX_55,
- HEALTHBOX_GFX_HP_BAR_RED,
- HEALTHBOX_GFX_57,
- HEALTHBOX_GFX_58,
- HEALTHBOX_GFX_59,
- HEALTHBOX_GFX_60,
- HEALTHBOX_GFX_61,
- HEALTHBOX_GFX_62,
- HEALTHBOX_GFX_63,
- HEALTHBOX_GFX_64,
- HEALTHBOX_GFX_65,
- HEALTHBOX_GFX_66,
- HEALTHBOX_GFX_67,
- HEALTHBOX_GFX_68,
- HEALTHBOX_GFX_69,
- HEALTHBOX_GFX_70,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER1,
+ HEALTHBOX_GFX_36, //misc [Black section]
+ HEALTHBOX_GFX_37, //misc [Black section]
+ HEALTHBOX_GFX_38, //misc [Black section]
+ HEALTHBOX_GFX_39, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_40, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_41, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_42, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_43, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_44, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_45, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_46, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_HP_BAR_YELLOW, //hp bar yellow [0 pixels]
+ HEALTHBOX_GFX_48, //hp bar yellow [1 pixels]
+ HEALTHBOX_GFX_49, //hp bar yellow [2 pixels]
+ HEALTHBOX_GFX_50, //hp bar yellow [3 pixels]
+ HEALTHBOX_GFX_51, //hp bar yellow [4 pixels]
+ HEALTHBOX_GFX_52, //hp bar yellow [5 pixels]
+ HEALTHBOX_GFX_53, //hp bar yellow [6 pixels]
+ HEALTHBOX_GFX_54, //hp bar yellow [7 pixels]
+ HEALTHBOX_GFX_55, //hp bar yellow [8 pixels]
+ HEALTHBOX_GFX_HP_BAR_RED, //hp bar red [0 pixels]
+ HEALTHBOX_GFX_57, //hp bar red [1 pixels]
+ HEALTHBOX_GFX_58, //hp bar red [2 pixels]
+ HEALTHBOX_GFX_59, //hp bar red [3 pixels]
+ HEALTHBOX_GFX_60, //hp bar red [4 pixels]
+ HEALTHBOX_GFX_61, //hp bar red [5 pixels]
+ HEALTHBOX_GFX_62, //hp bar red [6 pixels]
+ HEALTHBOX_GFX_63, //hp bar red [7 pixels]
+ HEALTHBOX_GFX_64, //hp bar red [8 pixels]
+ HEALTHBOX_GFX_65, //hp bar frame end
+ HEALTHBOX_GFX_66, //status ball [full]
+ HEALTHBOX_GFX_67, //status ball [empty]
+ HEALTHBOX_GFX_68, //status ball [fainted]
+ HEALTHBOX_GFX_69, //status ball [statused]
+ HEALTHBOX_GFX_70, //status ball [unused extra]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER1, //status2 "PSN"
HEALTHBOX_GFX_72,
HEALTHBOX_GFX_73,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER1,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER1, //status2 "PRZ"
HEALTHBOX_GFX_75,
HEALTHBOX_GFX_76,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER1,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER1, //status2 "SLP"
HEALTHBOX_GFX_78,
HEALTHBOX_GFX_79,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER1,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER1, //status2 "FRZ"
HEALTHBOX_GFX_81,
HEALTHBOX_GFX_82,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER1,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN"
HEALTHBOX_GFX_84,
HEALTHBOX_GFX_85,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER2,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN"
HEALTHBOX_GFX_87,
HEALTHBOX_GFX_88,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER2,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER2, //status3 "PRZ"
HEALTHBOX_GFX_90,
HEALTHBOX_GFX_91,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER2,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER2, //status3 "SLP"
HEALTHBOX_GFX_93,
HEALTHBOX_GFX_94,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER2,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER2, //status3 "FRZ"
HEALTHBOX_GFX_96,
HEALTHBOX_GFX_97,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER2,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN"
HEALTHBOX_GFX_99,
HEALTHBOX_GFX_100,
- HEALTHBOX_GFX_STATUS_PSN_BATTLER3,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN"
HEALTHBOX_GFX_102,
HEALTHBOX_GFX_103,
- HEALTHBOX_GFX_STATUS_PRZ_BATTLER3,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER3, //status4 "PRZ"
HEALTHBOX_GFX_105,
HEALTHBOX_GFX_106,
- HEALTHBOX_GFX_STATUS_SLP_BATTLER3,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER3, //status4 "SLP"
HEALTHBOX_GFX_108,
HEALTHBOX_GFX_109,
- HEALTHBOX_GFX_STATUS_FRZ_BATTLER3,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER3, //status4 "FRZ"
HEALTHBOX_GFX_111,
HEALTHBOX_GFX_112,
- HEALTHBOX_GFX_STATUS_BRN_BATTLER3,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN"
HEALTHBOX_GFX_114,
HEALTHBOX_GFX_115,
- HEALTHBOX_GFX_116,
- HEALTHBOX_GFX_117,
+ HEALTHBOX_GFX_116, //unknown_D12FEC
+ HEALTHBOX_GFX_117, //unknown_D1300C
};
extern const u8 *const gNatureNamePointers[];
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index a2fa4120f..340c17c59 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -1590,7 +1590,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio
layoutMap += mapLayout->width;
}
}
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
free(floorLayoutOffsets);
}
diff --git a/src/cable_car.c b/src/cable_car.c
index 207a0c22d..420bdd30f 100755
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -358,7 +358,7 @@ static void CleanupCableCar(void)
HideBg(3);
sub_8150B6C(0);
gSpriteCoordOffsetX = 0;
- sub_80AB130(WEATHER_NONE);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_NONE);
for (i = 0; i < 20; i++)
gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
@@ -394,7 +394,7 @@ static void sub_81503E4(u8 taskId)
case 0:
if (sCableCar->timer == sCableCar->unk4)
{
- ChangeWeather(sCableCar->weather);
+ SetNextWeather(sCableCar->weather);
sCableCar->state = 1;
}
break;
@@ -798,7 +798,7 @@ static void LoadCableCarSprites(void)
gSprites[spriteId].data[1] = 99;
sCableCar->weather = WEATHER_ASH;
sCableCar->unk4 = 0x15e;
- sub_80AB130(WEATHER_SUNNY);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_SUNNY);
break;
case 1:
CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 24, 26, 12, 3, 17);
@@ -822,7 +822,7 @@ static void LoadCableCarSprites(void)
gSprites[spriteId].data[1] = 0x41;
sCableCar->weather = WEATHER_SUNNY;
sCableCar->unk4 = 0x109;
- sub_80AB130(WEATHER_ASH);
+ SetCurrentAndNextWeatherNoDelay(WEATHER_ASH);
break;
}
for (i = 0; i < 9; i++)
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 8e9c42f3d..f2b708db4 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -372,12 +372,12 @@ static void sub_80F5CE4(u8 taskId)
sub_80DEDA8(0xFE);
gUnknown_02039F5C = 1;
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
- var = VarGet(VAR_0x4086);
- VarSet(VAR_0x4086, 0);
+ var = VarGet(VAR_LINK_CONTEST_ROOM_STATE);
+ VarSet(VAR_LINK_CONTEST_ROOM_STATE, 0);
SetContinueGameWarpStatusToDynamicWarp();
TrySavingData(SAVE_LINK);
ClearContinueGameWarpStatus2();
- VarSet(VAR_0x4086, var);
+ VarSet(VAR_LINK_CONTEST_ROOM_STATE, var);
gTasks[taskId].data[0]++;
break;
case 1:
diff --git a/src/data/easy_chat/easy_chat_group_actions.h b/src/data/easy_chat/easy_chat_group_actions.h
new file mode 100755
index 000000000..06a8e7303
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_actions.h
@@ -0,0 +1,471 @@
+const u8 gEasyChatWord_Meets[] = _("MEETS");
+const u8 gEasyChatWord_Concede[] = _("CONCEDE");
+const u8 gEasyChatWord_Give[] = _("GIVE");
+const u8 gEasyChatWord_Gives[] = _("GIVES");
+const u8 gEasyChatWord_Played[] = _("PLAYED");
+const u8 gEasyChatWord_Plays[] = _("PLAYS");
+const u8 gEasyChatWord_Collect[] = _("COLLECT");
+const u8 gEasyChatWord_Walking[] = _("WALKING");
+const u8 gEasyChatWord_Walks[] = _("WALKS");
+const u8 gEasyChatWord_Says[] = _("SAYS");
+const u8 gEasyChatWord_Went[] = _("WENT");
+const u8 gEasyChatWord_Said[] = _("SAID");
+const u8 gEasyChatWord_WakeUp[] = _("WAKE UP");
+const u8 gEasyChatWord_WakesUp[] = _("WAKES UP");
+const u8 gEasyChatWord_Angers[] = _("ANGERS");
+const u8 gEasyChatWord_Teach[] = _("TEACH");
+const u8 gEasyChatWord_Teaches[] = _("TEACHES");
+const u8 gEasyChatWord_Please[] = _("PLEASE");
+const u8 gEasyChatWord_Learn[] = _("LEARN");
+const u8 gEasyChatWord_Change[] = _("CHANGE");
+const u8 gEasyChatWord_Story[] = _("STORY");
+const u8 gEasyChatWord_Trust[] = _("TRUST");
+const u8 gEasyChatWord_Lavish[] = _("LAVISH");
+const u8 gEasyChatWord_Listens[] = _("LISTENS");
+const u8 gEasyChatWord_Hearing[] = _("HEARING");
+const u8 gEasyChatWord_Trains[] = _("TRAINS");
+const u8 gEasyChatWord_Choose[] = _("CHOOSE");
+const u8 gEasyChatWord_Come[] = _("COME");
+const u8 gEasyChatWord_Came[] = _("CAME");
+const u8 gEasyChatWord_Search[] = _("SEARCH");
+const u8 gEasyChatWord_Make[] = _("MAKE");
+const u8 gEasyChatWord_Cause[] = _("CAUSE");
+const u8 gEasyChatWord_Know[] = _("KNOW");
+const u8 gEasyChatWord_Knows[] = _("KNOWS");
+const u8 gEasyChatWord_Refuse[] = _("REFUSE");
+const u8 gEasyChatWord_Stores[] = _("STORES");
+const u8 gEasyChatWord_Brag[] = _("BRAG");
+const u8 gEasyChatWord_Ignorant[] = _("IGNORANT");
+const u8 gEasyChatWord_Thinks[] = _("THINKS");
+const u8 gEasyChatWord_Believe[] = _("BELIEVE");
+const u8 gEasyChatWord_Slide[] = _("SLIDE");
+const u8 gEasyChatWord_Eats[] = _("EATS");
+const u8 gEasyChatWord_Use[] = _("USE");
+const u8 gEasyChatWord_Uses[] = _("USES");
+const u8 gEasyChatWord_Using[] = _("USING");
+const u8 gEasyChatWord_Couldnt[] = _("COULDN'T");
+const u8 gEasyChatWord_Capable[] = _("CAPABLE");
+const u8 gEasyChatWord_Disappear[] = _("DISAPPEAR");
+const u8 gEasyChatWord_Appear[] = _("APPEAR");
+const u8 gEasyChatWord_Throw[] = _("THROW");
+const u8 gEasyChatWord_Worry[] = _("WORRY");
+const u8 gEasyChatWord_Slept[] = _("SLEPT");
+const u8 gEasyChatWord_Sleep[] = _("SLEEP");
+const u8 gEasyChatWord_Release[] = _("RELEASE");
+const u8 gEasyChatWord_Drinks[] = _("DRINKS");
+const u8 gEasyChatWord_Runs[] = _("RUNS");
+const u8 gEasyChatWord_Run[] = _("RUN");
+const u8 gEasyChatWord_Works[] = _("WORKS");
+const u8 gEasyChatWord_Working[] = _("WORKING");
+const u8 gEasyChatWord_Talking[] = _("TALKING");
+const u8 gEasyChatWord_Talk[] = _("TALK");
+const u8 gEasyChatWord_Sink[] = _("SINK");
+const u8 gEasyChatWord_Smack[] = _("SMACK");
+const u8 gEasyChatWord_Pretend[] = _("PRETEND");
+const u8 gEasyChatWord_Praise[] = _("PRAISE");
+const u8 gEasyChatWord_Overdo[] = _("OVERDO");
+const u8 gEasyChatWord_Show[] = _("SHOW");
+const u8 gEasyChatWord_Looks[] = _("LOOKS");
+const u8 gEasyChatWord_Sees[] = _("SEES");
+const u8 gEasyChatWord_Seek[] = _("SEEK");
+const u8 gEasyChatWord_Own[] = _("OWN");
+const u8 gEasyChatWord_Take[] = _("TAKE");
+const u8 gEasyChatWord_Allow[] = _("ALLOW");
+const u8 gEasyChatWord_Forget[] = _("FORGET");
+const u8 gEasyChatWord_Forgets[] = _("FORGETS");
+const u8 gEasyChatWord_Appears[] = _("APPEARS");
+const u8 gEasyChatWord_Faint[] = _("FAINT");
+const u8 gEasyChatWord_Fainted[] = _("FAINTED");
+
+const struct EasyChatWordInfo gEasyChatGroup_Actions[] = {
+ {
+ .text = gEasyChatWord_Meets,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Concede,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Give,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gives,
+ .alphabeticalOrder = 75,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Played,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plays,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Collect,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walking,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walks,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Says,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Went,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Said,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WakeUp,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WakesUp,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Angers,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teach,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teaches,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Please,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Learn,
+ .alphabeticalOrder = 76,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Change,
+ .alphabeticalOrder = 77,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Story,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trust,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lavish,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Listens,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hearing,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trains,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Choose,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Come,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Came,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Search,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Make,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cause,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Know,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Knows,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Refuse,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stores,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Brag,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ignorant,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thinks,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Believe,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slide,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eats,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Use,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Uses,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Using,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Couldnt,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Capable,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappear,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appear,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Throw,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Worry,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slept,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sleep,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Release,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drinks,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Runs,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Run,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Works,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Working,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talking,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talk,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sink,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smack,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pretend,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Praise,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overdo,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Show,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Looks,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sees,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seek,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Own,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Take,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Allow,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forget,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forgets,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appears,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Faint,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fainted,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_adjectives.h b/src/data/easy_chat/easy_chat_group_adjectives.h
new file mode 100755
index 000000000..1c7474118
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_adjectives.h
@@ -0,0 +1,219 @@
+const u8 gEasyChatWord_Wandering[] = _("WANDERING");
+const u8 gEasyChatWord_Rickety[] = _("RICKETY");
+const u8 gEasyChatWord_RockSolid[] = _("ROCK-SOLID");
+const u8 gEasyChatWord_Hungry[] = _("HUNGRY");
+const u8 gEasyChatWord_Tight[] = _("TIGHT");
+const u8 gEasyChatWord_Ticklish[] = _("TICKLISH");
+const u8 gEasyChatWord_Twirling[] = _("TWIRLING");
+const u8 gEasyChatWord_Spiraling[] = _("SPIRALING");
+const u8 gEasyChatWord_Thirsty[] = _("THIRSTY");
+const u8 gEasyChatWord_Lolling[] = _("LOLLING");
+const u8 gEasyChatWord_Silky[] = _("SILKY");
+const u8 gEasyChatWord_Sadly[] = _("SADLY");
+const u8 gEasyChatWord_Hopeless[] = _("HOPELESS");
+const u8 gEasyChatWord_Useless[] = _("USELESS");
+const u8 gEasyChatWord_Drooling[] = _("DROOLING");
+const u8 gEasyChatWord_Exciting[] = _("EXCITING");
+const u8 gEasyChatWord_Thick[] = _("THICK");
+const u8 gEasyChatWord_Smooth[] = _("SMOOTH");
+const u8 gEasyChatWord_Slimy[] = _("SLIMY");
+const u8 gEasyChatWord_Thin[] = _("THIN");
+const u8 gEasyChatWord_Break[] = _("BREAK");
+const u8 gEasyChatWord_Voracious[] = _("VORACIOUS");
+const u8 gEasyChatWord_Scatter[] = _("SCATTER");
+const u8 gEasyChatWord_Awesome[] = _("AWESOME");
+const u8 gEasyChatWord_Wimpy[] = _("WIMPY");
+const u8 gEasyChatWord_Wobbly[] = _("WOBBLY");
+const u8 gEasyChatWord_Shaky[] = _("SHAKY");
+const u8 gEasyChatWord_Ripped[] = _("RIPPED");
+const u8 gEasyChatWord_Shredded[] = _("SHREDDED");
+const u8 gEasyChatWord_Increasing[] = _("INCREASING");
+const u8 gEasyChatWord_Yet[] = _("YET");
+const u8 gEasyChatWord_Destroyed[] = _("DESTROYED");
+const u8 gEasyChatWord_Fiery[] = _("FIERY");
+const u8 gEasyChatWord_LoveyDovey[] = _("LOVEY-DOVEY");
+const u8 gEasyChatWord_Happily[] = _("HAPPILY");
+const u8 gEasyChatWord_Anticipation[] = _("ANTICIPATION");
+
+const struct EasyChatWordInfo gEasyChatGroup_Adjectives[] = {
+ {
+ .text = gEasyChatWord_Wandering,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rickety,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RockSolid,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hungry,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tight,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ticklish,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Twirling,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spiraling,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thirsty,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lolling,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Silky,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sadly,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hopeless,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Useless,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drooling,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Exciting,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thick,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smooth,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Slimy,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thin,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Break,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Voracious,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Scatter,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awesome,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wimpy,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wobbly,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shaky,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ripped,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shredded,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Increasing,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yet,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Destroyed,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fiery,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LoveyDovey,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happily,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anticipation,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_battle.h b/src/data/easy_chat/easy_chat_group_battle.h
new file mode 100755
index 000000000..0f97f50c9
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_battle.h
@@ -0,0 +1,381 @@
+const u8 gEasyChatWord_MatchUp[] = _("MATCH UP");
+const u8 gEasyChatWord_Go[] = _("GO");
+const u8 gEasyChatWord_No1[] = _("NO. 1");
+const u8 gEasyChatWord_Decide[] = _("DECIDE");
+const u8 gEasyChatWord_LetMeWin[] = _("LET ME WIN");
+const u8 gEasyChatWord_Wins[] = _("WINS");
+const u8 gEasyChatWord_Win[] = _("WIN");
+const u8 gEasyChatWord_Won[] = _("WON");
+const u8 gEasyChatWord_IfIWin[] = _("IF I WIN");
+const u8 gEasyChatWord_WhenIWin[] = _("WHEN I WIN");
+const u8 gEasyChatWord_CantWin[] = _("CAN'T WIN");
+const u8 gEasyChatWord_CanWin[] = _("CAN WIN");
+const u8 gEasyChatWord_NoMatch[] = _("NO MATCH");
+const u8 gEasyChatWord_Spirit[] = _("SPIRIT");
+const u8 gEasyChatWord_Decided[] = _("DECIDED");
+const u8 gEasyChatWord_TrumpCard[] = _("TRUMP CARD");
+const u8 gEasyChatWord_TakeThat[] = _("TAKE THAT");
+const u8 gEasyChatWord_ComeOn[] = _("COME ON");
+const u8 gEasyChatWord_Attack[] = _("ATTACK");
+const u8 gEasyChatWord_Surrender[] = _("SURRENDER");
+const u8 gEasyChatWord_Gutsy[] = _("GUTSY");
+const u8 gEasyChatWord_Talent[] = _("TALENT");
+const u8 gEasyChatWord_Strategy[] = _("STRATEGY");
+const u8 gEasyChatWord_Smite[] = _("SMITE");
+const u8 gEasyChatWord_Match[] = _("MATCH");
+const u8 gEasyChatWord_Victory[] = _("VICTORY");
+const u8 gEasyChatWord_Offensive[] = _("OFFENSIVE");
+const u8 gEasyChatWord_Sense[] = _("SENSE");
+const u8 gEasyChatWord_Versus[] = _("VERSUS");
+const u8 gEasyChatWord_Fights[] = _("FIGHTS");
+const u8 gEasyChatWord_Power[] = _("POWER");
+const u8 gEasyChatWord_Challenge[] = _("CHALLENGE");
+const u8 gEasyChatWord_Strong[] = _("STRONG");
+const u8 gEasyChatWord_TooStrong[] = _("TOO STRONG");
+const u8 gEasyChatWord_GoEasy[] = _("GO EASY");
+const u8 gEasyChatWord_Foe[] = _("FOE");
+const u8 gEasyChatWord_Genius[] = _("GENIUS");
+const u8 gEasyChatWord_Legend[] = _("LEGEND");
+const u8 gEasyChatWord_Escape[] = _("ESCAPE");
+const u8 gEasyChatWord_Aim[] = _("AIM");
+const u8 gEasyChatWord_Battle[] = _("BATTLE");
+const u8 gEasyChatWord_Fight[] = _("FIGHT");
+const u8 gEasyChatWord_Resuscitate[] = _("RESUSCITATE");
+const u8 gEasyChatWord_Points[] = _("POINTS");
+const u8 gEasyChatWord_Serious[] = _("SERIOUS");
+const u8 gEasyChatWord_GiveUp[] = _("GIVE UP");
+const u8 gEasyChatWord_Loss[] = _("LOSS");
+const u8 gEasyChatWord_IfILose[] = _("IF I LOSE");
+const u8 gEasyChatWord_Lost[] = _("LOST");
+const u8 gEasyChatWord_Lose[] = _("LOSE");
+const u8 gEasyChatWord_Guard[] = _("GUARD");
+const u8 gEasyChatWord_Partner[] = _("PARTNER");
+const u8 gEasyChatWord_Reject[] = _("REJECT");
+const u8 gEasyChatWord_Accept[] = _("ACCEPT");
+const u8 gEasyChatWord_Invincible[] = _("INVINCIBLE");
+const u8 gEasyChatWord_Received[] = _("RECEIVED");
+const u8 gEasyChatWord_Easy[] = _("EASY");
+const u8 gEasyChatWord_Weak[] = _("WEAK");
+const u8 gEasyChatWord_TooWeak[] = _("TOO WEAK");
+const u8 gEasyChatWord_Pushover[] = _("PUSHOVER");
+const u8 gEasyChatWord_Leader[] = _("LEADER");
+const u8 gEasyChatWord_Rule[] = _("RULE");
+const u8 gEasyChatWord_Move[] = _("MOVE");
+
+const struct EasyChatWordInfo gEasyChatGroup_Battle[] = {
+ {
+ .text = gEasyChatWord_MatchUp,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Go,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_No1,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Decide,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LetMeWin,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wins,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Win,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Won,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IfIWin,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhenIWin,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CantWin,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CanWin,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NoMatch,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spirit,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Decided,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TrumpCard,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TakeThat,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ComeOn,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Attack,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Surrender,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gutsy,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Talent,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Strategy,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smite,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Match,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Victory,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Offensive,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sense,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Versus,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fights,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Power,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Challenge,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Strong,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooStrong,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoEasy,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Foe,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Genius,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Legend,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Escape,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aim,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Battle,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fight,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Resuscitate,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Points,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Serious,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GiveUp,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Loss,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IfILose,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lost,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lose,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Guard,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Partner,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Reject,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Accept,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Invincible,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Received,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Easy,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weak,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooWeak,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pushover,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Leader,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rule,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Move,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_conditions.h b/src/data/easy_chat/easy_chat_group_conditions.h
new file mode 100755
index 000000000..a8d8ee874
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_conditions.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Hot[] = _("HOT");
+const u8 gEasyChatWord_Exists[] = _("EXISTS");
+const u8 gEasyChatWord_Excess[] = _("EXCESS");
+const u8 gEasyChatWord_Approved[] = _("APPROVED");
+const u8 gEasyChatWord_Has[] = _("HAS");
+const u8 gEasyChatWord_Good[] = _("GOOD");
+const u8 gEasyChatWord_Less[] = _("LESS");
+const u8 gEasyChatWord_Momentum[] = _("MOMENTUM");
+const u8 gEasyChatWord_Going[] = _("GOING");
+const u8 gEasyChatWord_Weird[] = _("WEIRD");
+const u8 gEasyChatWord_Busy[] = _("BUSY");
+const u8 gEasyChatWord_Together[] = _("TOGETHER");
+const u8 gEasyChatWord_Full[] = _("FULL");
+const u8 gEasyChatWord_Absent[] = _("ABSENT");
+const u8 gEasyChatWord_Being[] = _("BEING");
+const u8 gEasyChatWord_Need[] = _("NEED");
+const u8 gEasyChatWord_Tasty[] = _("TASTY");
+const u8 gEasyChatWord_Skilled[] = _("SKILLED");
+const u8 gEasyChatWord_Noisy[] = _("NOISY");
+const u8 gEasyChatWord_Big[] = _("BIG");
+const u8 gEasyChatWord_Late[] = _("LATE");
+const u8 gEasyChatWord_Close[] = _("CLOSE");
+const u8 gEasyChatWord_Docile[] = _("DOCILE");
+const u8 gEasyChatWord_Amusing[] = _("AMUSING");
+const u8 gEasyChatWord_Entertaining[] = _("ENTERTAINING");
+const u8 gEasyChatWord_Perfection[] = _("PERFECTION");
+const u8 gEasyChatWord_Pretty[] = _("PRETTY");
+const u8 gEasyChatWord_Healthy[] = _("HEALTHY");
+const u8 gEasyChatWord_Excellent[] = _("EXCELLENT");
+const u8 gEasyChatWord_UpsideDown[] = _("UPSIDE DOWN");
+const u8 gEasyChatWord_Cold[] = _("COLD");
+const u8 gEasyChatWord_Refreshing[] = _("REFRESHING");
+const u8 gEasyChatWord_Unavoidable[] = _("UNAVOIDABLE");
+const u8 gEasyChatWord_Much[] = _("MUCH");
+const u8 gEasyChatWord_Overwhelming[] = _("OVERWHELMING");
+const u8 gEasyChatWord_Fabulous[] = _("FABULOUS");
+const u8 gEasyChatWord_Else[] = _("ELSE");
+const u8 gEasyChatWord_Expensive[] = _("EXPENSIVE");
+const u8 gEasyChatWord_Correct[] = _("CORRECT");
+const u8 gEasyChatWord_Impossible[] = _("IMPOSSIBLE");
+const u8 gEasyChatWord_Small[] = _("SMALL");
+const u8 gEasyChatWord_Different[] = _("DIFFERENT");
+const u8 gEasyChatWord_Tired[] = _("TIRED");
+const u8 gEasyChatWord_Skill[] = _("SKILL");
+const u8 gEasyChatWord_Top[] = _("TOP");
+const u8 gEasyChatWord_NonStop[] = _("NON-STOP");
+const u8 gEasyChatWord_Preposterous[] = _("PREPOSTEROUS");
+const u8 gEasyChatWord_None[] = _("NONE");
+const u8 gEasyChatWord_Nothing[] = _("NOTHING");
+const u8 gEasyChatWord_Natural[] = _("NATURAL");
+const u8 gEasyChatWord_Becomes[] = _("BECOMES");
+const u8 gEasyChatWord_Lukewarm[] = _("LUKEWARM");
+const u8 gEasyChatWord_Fast[] = _("FAST");
+const u8 gEasyChatWord_Low[] = _("LOW");
+const u8 gEasyChatWord_Awful[] = _("AWFUL");
+const u8 gEasyChatWord_Alone[] = _("ALONE");
+const u8 gEasyChatWord_Bored[] = _("BORED");
+const u8 gEasyChatWord_Secret[] = _("SECRET");
+const u8 gEasyChatWord_Mystery[] = _("MYSTERY");
+const u8 gEasyChatWord_Lacks[] = _("LACKS");
+const u8 gEasyChatWord_Best[] = _("BEST");
+const u8 gEasyChatWord_Lousy[] = _("LOUSY");
+const u8 gEasyChatWord_Mistake[] = _("MISTAKE");
+const u8 gEasyChatWord_Kind[] = _("KIND");
+const u8 gEasyChatWord_Well[] = _("WELL");
+const u8 gEasyChatWord_Weakened[] = _("WEAKENED");
+const u8 gEasyChatWord_Simple[] = _("SIMPLE");
+const u8 gEasyChatWord_Seems[] = _("SEEMS");
+const u8 gEasyChatWord_Badly[] = _("BADLY");
+
+const struct EasyChatWordInfo gEasyChatGroup_Conditions[] = {
+ {
+ .text = gEasyChatWord_Hot,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Exists,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excess,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Approved,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Has,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Good,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Less,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Momentum,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Going,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weird,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Busy,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Together,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Full,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Absent,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Being,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Need,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tasty,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Skilled,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Noisy,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Big,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Late,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Close,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Docile,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Amusing,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Entertaining,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Perfection,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pretty,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Healthy,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excellent,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UpsideDown,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cold,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Refreshing,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Unavoidable,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Much,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overwhelming,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fabulous,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Else,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Expensive,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Correct,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Impossible,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Small,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Different,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tired,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Skill,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Top,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NonStop,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Preposterous,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_None,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nothing,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Natural,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Becomes,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lukewarm,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fast,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Low,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awful,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Alone,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bored,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Secret,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mystery,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lacks,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Best,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lousy,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mistake,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kind,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Well,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weakened,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Simple,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seems,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Badly,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_endings.h b/src/data/easy_chat/easy_chat_group_endings.h
new file mode 100755
index 000000000..afaea48cb
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_endings.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Will[] = _("WILL");
+const u8 gEasyChatWord_WillBeHere[] = _("WILL BE HERE");
+const u8 gEasyChatWord_Or[] = _("OR");
+const u8 gEasyChatWord_Times[] = _("TIMES");
+const u8 gEasyChatWord_Wonder[] = _("WONDER");
+const u8 gEasyChatWord_IsItQues[] = _("IS IT?");
+const u8 gEasyChatWord_Be[] = _("BE");
+const u8 gEasyChatWord_Gimme[] = _("GIMME");
+const u8 gEasyChatWord_Could[] = _("COULD");
+const u8 gEasyChatWord_LikelyTo[] = _("LIKELY TO");
+const u8 gEasyChatWord_Would[] = _("WOULD");
+const u8 gEasyChatWord_Is[] = _("IS");
+const u8 gEasyChatWord_IsntItQues[] = _("ISN'T IT?");
+const u8 gEasyChatWord_Lets[] = _("LET'S");
+const u8 gEasyChatWord_Other[] = _("OTHER");
+const u8 gEasyChatWord_Are[] = _("ARE");
+const u8 gEasyChatWord_Was[] = _("WAS");
+const u8 gEasyChatWord_Were[] = _("WERE");
+const u8 gEasyChatWord_Those[] = _("THOSE");
+const u8 gEasyChatWord_Isnt[] = _("ISN'T");
+const u8 gEasyChatWord_Wont[] = _("WON'T");
+const u8 gEasyChatWord_Cant[] = _("CAN'T");
+const u8 gEasyChatWord_Can[] = _("CAN");
+const u8 gEasyChatWord_Dont[] = _("DON'T");
+const u8 gEasyChatWord_Do[] = _("DO");
+const u8 gEasyChatWord_Does[] = _("DOES");
+const u8 gEasyChatWord_Whom[] = _("WHOM");
+const u8 gEasyChatWord_Which[] = _("WHICH");
+const u8 gEasyChatWord_Wasnt[] = _("WASN'T");
+const u8 gEasyChatWord_Werent[] = _("WEREN'T");
+const u8 gEasyChatWord_Have[] = _("HAVE");
+const u8 gEasyChatWord_Havent[] = _("HAVEN'T");
+const u8 gEasyChatWord_A[] = _("A");
+const u8 gEasyChatWord_An[] = _("AN");
+const u8 gEasyChatWord_Not[] = _("NOT");
+const u8 gEasyChatWord_There[] = _("THERE");
+const u8 gEasyChatWord_OkQues[] = _("OK?");
+const u8 gEasyChatWord_So[] = _("SO");
+const u8 gEasyChatWord_Maybe[] = _("MAYBE");
+const u8 gEasyChatWord_About[] = _("ABOUT");
+const u8 gEasyChatWord_Over[] = _("OVER");
+const u8 gEasyChatWord_It[] = _("IT");
+const u8 gEasyChatWord_All[] = _("ALL");
+const u8 gEasyChatWord_For[] = _("FOR");
+const u8 gEasyChatWord_On[] = _("ON");
+const u8 gEasyChatWord_Off[] = _("OFF");
+const u8 gEasyChatWord_As[] = _("AS");
+const u8 gEasyChatWord_To[] = _("TO");
+const u8 gEasyChatWord_With[] = _("WITH");
+const u8 gEasyChatWord_Better[] = _("BETTER");
+const u8 gEasyChatWord_Ever[] = _("EVER");
+const u8 gEasyChatWord_Since[] = _("SINCE");
+const u8 gEasyChatWord_Of[] = _("OF");
+const u8 gEasyChatWord_BelongsTo[] = _("BELONGS TO");
+const u8 gEasyChatWord_At[] = _("AT");
+const u8 gEasyChatWord_In[] = _("IN");
+const u8 gEasyChatWord_Out[] = _("OUT");
+const u8 gEasyChatWord_Too[] = _("TOO");
+const u8 gEasyChatWord_Like[] = _("LIKE");
+const u8 gEasyChatWord_Did[] = _("DID");
+const u8 gEasyChatWord_Didnt[] = _("DIDN'T");
+const u8 gEasyChatWord_Doesnt[] = _("DOESN'T");
+const u8 gEasyChatWord_Without[] = _("WITHOUT");
+const u8 gEasyChatWord_After[] = _("AFTER");
+const u8 gEasyChatWord_Before[] = _("BEFORE");
+const u8 gEasyChatWord_While[] = _("WHILE");
+const u8 gEasyChatWord_Than[] = _("THAN");
+const u8 gEasyChatWord_Once[] = _("ONCE");
+const u8 gEasyChatWord_Anywhere[] = _("ANYWHERE");
+
+const struct EasyChatWordInfo gEasyChatGroup_Endings[] = {
+ {
+ .text = gEasyChatWord_Will,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WillBeHere,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Or,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Times,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wonder,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IsItQues,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Be,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gimme,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Could,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LikelyTo,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Would,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Is,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IsntItQues,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lets,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Other,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Are,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Was,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Were,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Those,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Isnt,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wont,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cant,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Can,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dont,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Do,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Does,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whom,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Which,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wasnt,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Werent,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Have,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Havent,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_A,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_An,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Not,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_There,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OkQues,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_So,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Maybe,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_About,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Over,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_It,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_All,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_For,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_On,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Off,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_As,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_To,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_With,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Better,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ever,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Since,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Of,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BelongsTo,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_At,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_In,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Out,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Too,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Like,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Did,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Didnt,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Doesnt,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Without,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_After,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Before,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_While,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Than,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Once,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anywhere,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_events.h b/src/data/easy_chat/easy_chat_group_events.h
new file mode 100755
index 000000000..8d9cf7e24
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_events.h
@@ -0,0 +1,177 @@
+const u8 gEasyChatWord_Appeal[] = _("APPEAL");
+const u8 gEasyChatWord_Events[] = _("EVENTS");
+const u8 gEasyChatWord_StayAtHome[] = _("STAY-AT-HOME");
+const u8 gEasyChatWord_Berry[] = _("BERRY");
+const u8 gEasyChatWord_Contest[] = _("CONTEST");
+const u8 gEasyChatWord_Mc[] = _("MC");
+const u8 gEasyChatWord_Judge[] = _("JUDGE");
+const u8 gEasyChatWord_Super[] = _("SUPER");
+const u8 gEasyChatWord_Stage[] = _("STAGE");
+const u8 gEasyChatWord_HallOfFame[] = _("HALL OF FAME");
+const u8 gEasyChatWord_Evolution[] = _("EVOLUTION");
+const u8 gEasyChatWord_Hyper[] = _("HYPER");
+const u8 gEasyChatWord_BattleTower[] = _("BATTLE TOWER");
+const u8 gEasyChatWord_Leaders[] = _("LEADERS");
+const u8 gEasyChatWord_BattleRoom[] = _("BATTLE ROOM");
+const u8 gEasyChatWord_Hidden[] = _("HIDDEN");
+const u8 gEasyChatWord_SecretBase[] = _("SECRET BASE");
+const u8 gEasyChatWord_Blend[] = _("BLEND");
+const u8 gEasyChatWord_POKEBLOCK[] = _("{POKEBLOCK}");
+const u8 gEasyChatWord_Master[] = _("MASTER");
+const u8 gEasyChatWord_Rank[] = _("RANK");
+const u8 gEasyChatWord_Ribbon[] = _("RIBBON");
+const u8 gEasyChatWord_Crush[] = _("CRUSH");
+const u8 gEasyChatWord_Direct[] = _("DIRECT");
+const u8 gEasyChatWord_Tower[] = _("TOWER");
+const u8 gEasyChatWord_Union[] = _("UNION");
+const u8 gEasyChatWord_Room[] = _("ROOM");
+const u8 gEasyChatWord_Wireless[] = _("WIRELESS");
+const u8 gEasyChatWord_Frontier[] = _("FRONTIER");
+
+const struct EasyChatWordInfo gEasyChatGroup_Events[] = {
+ {
+ .text = gEasyChatWord_Appeal,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Events,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_StayAtHome,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Berry,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Contest,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mc,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Judge,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Super,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stage,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HallOfFame,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Evolution,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hyper,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleTower,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Leaders,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleRoom,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hidden,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SecretBase,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Blend,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_POKEBLOCK,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Master,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rank,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ribbon,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Crush,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Direct,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tower,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Union,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Room,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wireless,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Frontier,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_feelings.h b/src/data/easy_chat/easy_chat_group_feelings.h
new file mode 100755
index 000000000..2dda71808
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_feelings.h
@@ -0,0 +1,417 @@
+const u8 gEasyChatWord_Meet[] = _("MEET");
+const u8 gEasyChatWord_Play[] = _("PLAY");
+const u8 gEasyChatWord_Hurried[] = _("HURRIED");
+const u8 gEasyChatWord_Goes[] = _("GOES");
+const u8 gEasyChatWord_Giddy[] = _("GIDDY");
+const u8 gEasyChatWord_Happy[] = _("HAPPY");
+const u8 gEasyChatWord_Happiness[] = _("HAPPINESS");
+const u8 gEasyChatWord_Excite[] = _("EXCITE");
+const u8 gEasyChatWord_Important[] = _("IMPORTANT");
+const u8 gEasyChatWord_Funny[] = _("FUNNY");
+const u8 gEasyChatWord_Got[] = _("GOT");
+const u8 gEasyChatWord_GoHome[] = _("GO HOME");
+const u8 gEasyChatWord_Disappointed[] = _("DISAPPOINTED");
+const u8 gEasyChatWord_Disappoints[] = _("DISAPPOINTS");
+const u8 gEasyChatWord_Sad[] = _("SAD");
+const u8 gEasyChatWord_Try[] = _("TRY");
+const u8 gEasyChatWord_Tries[] = _("TRIES");
+const u8 gEasyChatWord_Hears[] = _("HEARS");
+const u8 gEasyChatWord_Think[] = _("THINK");
+const u8 gEasyChatWord_Hear[] = _("HEAR");
+const u8 gEasyChatWord_Wants[] = _("WANTS");
+const u8 gEasyChatWord_Misheard[] = _("MISHEARD");
+const u8 gEasyChatWord_Dislike[] = _("DISLIKE");
+const u8 gEasyChatWord_Angry[] = _("ANGRY");
+const u8 gEasyChatWord_Anger[] = _("ANGER");
+const u8 gEasyChatWord_Scary[] = _("SCARY");
+const u8 gEasyChatWord_Lonesome[] = _("LONESOME");
+const u8 gEasyChatWord_Disappoint[] = _("DISAPPOINT");
+const u8 gEasyChatWord_Joy[] = _("JOY");
+const u8 gEasyChatWord_Gets[] = _("GETS");
+const u8 gEasyChatWord_Never[] = _("NEVER");
+const u8 gEasyChatWord_Darn[] = _("DARN");
+const u8 gEasyChatWord_Downcast[] = _("DOWNCAST");
+const u8 gEasyChatWord_Incredible[] = _("INCREDIBLE");
+const u8 gEasyChatWord_Likes[] = _("LIKES");
+const u8 gEasyChatWord_Dislikes[] = _("DISLIKES");
+const u8 gEasyChatWord_Boring[] = _("BORING");
+const u8 gEasyChatWord_Care[] = _("CARE");
+const u8 gEasyChatWord_Cares[] = _("CARES");
+const u8 gEasyChatWord_AllRight[] = _("ALL RIGHT");
+const u8 gEasyChatWord_Adore[] = _("ADORE");
+const u8 gEasyChatWord_Disaster[] = _("DISASTER");
+const u8 gEasyChatWord_Enjoy[] = _("ENJOY");
+const u8 gEasyChatWord_Enjoys[] = _("ENJOYS");
+const u8 gEasyChatWord_Eat[] = _("EAT");
+const u8 gEasyChatWord_Lacking[] = _("LACKING");
+const u8 gEasyChatWord_Bad[] = _("BAD");
+const u8 gEasyChatWord_Hard[] = _("HARD");
+const u8 gEasyChatWord_Terrible[] = _("TERRIBLE");
+const u8 gEasyChatWord_Should[] = _("SHOULD");
+const u8 gEasyChatWord_Nice[] = _("NICE");
+const u8 gEasyChatWord_Drink[] = _("DRINK");
+const u8 gEasyChatWord_Surprise[] = _("SURPRISE");
+const u8 gEasyChatWord_Fear[] = _("FEAR");
+const u8 gEasyChatWord_Want[] = _("WANT");
+const u8 gEasyChatWord_Wait[] = _("WAIT");
+const u8 gEasyChatWord_Satisfied[] = _("SATISFIED");
+const u8 gEasyChatWord_See[] = _("SEE");
+const u8 gEasyChatWord_Rare[] = _("RARE");
+const u8 gEasyChatWord_Negative[] = _("NEGATIVE");
+const u8 gEasyChatWord_Done[] = _("DONE");
+const u8 gEasyChatWord_Danger[] = _("DANGER");
+const u8 gEasyChatWord_Defeated[] = _("DEFEATED");
+const u8 gEasyChatWord_Beat[] = _("BEAT");
+const u8 gEasyChatWord_Great[] = _("GREAT");
+const u8 gEasyChatWord_Romantic[] = _("ROMANTIC");
+const u8 gEasyChatWord_Question[] = _("QUESTION");
+const u8 gEasyChatWord_Understand[] = _("UNDERSTAND");
+const u8 gEasyChatWord_Understands[] = _("UNDERSTANDS");
+
+const struct EasyChatWordInfo gEasyChatGroup_Feelings[] = {
+ {
+ .text = gEasyChatWord_Meet,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Play,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hurried,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Goes,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Giddy,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happy,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happiness,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excite,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Important,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Funny,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Got,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoHome,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappointed,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappoints,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sad,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Try,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tries,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hears,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Think,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hear,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wants,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Misheard,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dislike,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Angry,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anger,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Scary,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lonesome,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disappoint,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Joy,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gets,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Never,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Darn,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Downcast,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Incredible,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Likes,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dislikes,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Boring,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Care,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cares,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AllRight,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adore,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Disaster,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enjoy,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enjoys,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eat,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lacking,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bad,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hard,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Terrible,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Should,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nice,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drink,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Surprise,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fear,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Want,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wait,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Satisfied,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_See,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rare,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Negative,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Done,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Danger,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Defeated,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beat,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Great,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Romantic,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Question,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understand,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understands,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_greetings.h b/src/data/easy_chat/easy_chat_group_greetings.h
new file mode 100755
index 000000000..4df08bf7d
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_greetings.h
@@ -0,0 +1,255 @@
+const u8 gEasyChatWord_Thanks[] = _("THANKS");
+const u8 gEasyChatWord_Yes[] = _("YES");
+const u8 gEasyChatWord_HereGoes[] = _("HERE GOES");
+const u8 gEasyChatWord_HereICome[] = _("HERE I COME");
+const u8 gEasyChatWord_HereItIs[] = _("HERE IT IS");
+const u8 gEasyChatWord_Yeah[] = _("YEAH");
+const u8 gEasyChatWord_Welcome[] = _("WELCOME");
+const u8 gEasyChatWord_Oi[] = _("OI");
+const u8 gEasyChatWord_HowDo[] = _("HOW DO");
+const u8 gEasyChatWord_Congrats[] = _("CONGRATS");
+const u8 gEasyChatWord_GiveMe[] = _("GIVE ME");
+const u8 gEasyChatWord_Sorry[] = _("SORRY");
+const u8 gEasyChatWord_Apologize[] = _("APOLOGIZE");
+const u8 gEasyChatWord_Forgive[] = _("FORGIVE");
+const u8 gEasyChatWord_HeyThere[] = _("HEY, THERE");
+const u8 gEasyChatWord_Hello[] = _("HELLO");
+const u8 gEasyChatWord_GoodBye[] = _("GOOD-BYE");
+const u8 gEasyChatWord_ThankYou[] = _("THANK YOU");
+const u8 gEasyChatWord_IveArrived[] = _("I'VE ARRIVED");
+const u8 gEasyChatWord_Pardon[] = _("PARDON");
+const u8 gEasyChatWord_Excuse[] = _("EXCUSE");
+const u8 gEasyChatWord_SeeYa[] = _("SEE YA");
+const u8 gEasyChatWord_ExcuseMe[] = _("EXCUSE ME");
+const u8 gEasyChatWord_WellThen[] = _("WELL, THEN");
+const u8 gEasyChatWord_GoAhead[] = _("GO AHEAD");
+const u8 gEasyChatWord_Appreciate[] = _("APPRECIATE");
+const u8 gEasyChatWord_HeyQues[] = _("HEY?");
+const u8 gEasyChatWord_WhatsUpQues[] = _("WHAT'S UP?");
+const u8 gEasyChatWord_HuhQues[] = _("HUH?");
+const u8 gEasyChatWord_No[] = _("NO");
+const u8 gEasyChatWord_Hi[] = _("HI");
+const u8 gEasyChatWord_YeahYeah[] = _("YEAH, YEAH");
+const u8 gEasyChatWord_ByeBye[] = _("BYE-BYE");
+const u8 gEasyChatWord_MeetYou[] = _("MEET YOU");
+const u8 gEasyChatWord_Hey[] = _("HEY");
+const u8 gEasyChatWord_Smell[] = _("SMELL");
+const u8 gEasyChatWord_Listening[] = _("LISTENING");
+const u8 gEasyChatWord_HooHah[] = _("HOO-HAH");
+const u8 gEasyChatWord_Yahoo[] = _("YAHOO");
+const u8 gEasyChatWord_Yo[] = _("YO");
+const u8 gEasyChatWord_ComeOver[] = _("COME OVER");
+const u8 gEasyChatWord_CountOn[] = _("COUNT ON");
+
+const struct EasyChatWordInfo gEasyChatGroup_Greetings[] = {
+ {
+ .text = gEasyChatWord_Thanks,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yes,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereGoes,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereICome,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HereItIs,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yeah,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Welcome,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oi,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HowDo,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Congrats,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GiveMe,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sorry,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Apologize,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forgive,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HeyThere,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hello,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoodBye,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThankYou,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IveArrived,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pardon,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Excuse,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SeeYa,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ExcuseMe,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WellThen,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_GoAhead,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Appreciate,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HeyQues,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhatsUpQues,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HuhQues,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_No,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hi,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YeahYeah,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ByeBye,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MeetYou,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hey,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smell,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Listening,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HooHah,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yahoo,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yo,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ComeOver,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CountOn,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_hobbies.h b/src/data/easy_chat/easy_chat_group_hobbies.h
new file mode 100755
index 000000000..fcd73d017
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_hobbies.h
@@ -0,0 +1,327 @@
+const u8 gEasyChatWord_Idol[] = _("IDOL");
+const u8 gEasyChatWord_Anime[] = _("ANIME");
+const u8 gEasyChatWord_Song[] = _("SONG");
+const u8 gEasyChatWord_Movie[] = _("MOVIE");
+const u8 gEasyChatWord_Sweets[] = _("SWEETS");
+const u8 gEasyChatWord_Chat[] = _("CHAT");
+const u8 gEasyChatWord_ChildsPlay[] = _("CHILD'S PLAY");
+const u8 gEasyChatWord_Toys[] = _("TOYS");
+const u8 gEasyChatWord_Music[] = _("MUSIC");
+const u8 gEasyChatWord_Cards[] = _("CARDS");
+const u8 gEasyChatWord_Shopping[] = _("SHOPPING");
+const u8 gEasyChatWord_Camera[] = _("CAMERA");
+const u8 gEasyChatWord_Viewing[] = _("VIEWING");
+const u8 gEasyChatWord_Spectator[] = _("SPECTATOR");
+const u8 gEasyChatWord_Gourmet[] = _("GOURMET");
+const u8 gEasyChatWord_Game[] = _("GAME");
+const u8 gEasyChatWord_Rpg[] = _("RPG");
+const u8 gEasyChatWord_Collection[] = _("COLLECTION");
+const u8 gEasyChatWord_Complete[] = _("COMPLETE");
+const u8 gEasyChatWord_Magazine[] = _("MAGAZINE");
+const u8 gEasyChatWord_Walk[] = _("WALK");
+const u8 gEasyChatWord_Bike[] = _("BIKE");
+const u8 gEasyChatWord_Hobby[] = _("HOBBY");
+const u8 gEasyChatWord_Sports[] = _("SPORTS");
+const u8 gEasyChatWord_Software[] = _("SOFTWARE");
+const u8 gEasyChatWord_Songs[] = _("SONGS");
+const u8 gEasyChatWord_Diet[] = _("DIET");
+const u8 gEasyChatWord_Treasure[] = _("TREASURE");
+const u8 gEasyChatWord_Travel[] = _("TRAVEL");
+const u8 gEasyChatWord_Dance[] = _("DANCE");
+const u8 gEasyChatWord_Channel[] = _("CHANNEL");
+const u8 gEasyChatWord_Making[] = _("MAKING");
+const u8 gEasyChatWord_Fishing[] = _("FISHING");
+const u8 gEasyChatWord_Date[] = _("DATE");
+const u8 gEasyChatWord_Design[] = _("DESIGN");
+const u8 gEasyChatWord_Locomotive[] = _("LOCOMOTIVE");
+const u8 gEasyChatWord_PlushDoll[] = _("PLUSH DOLL");
+const u8 gEasyChatWord_Pc[] = _("PC");
+const u8 gEasyChatWord_Flowers[] = _("FLOWERS");
+const u8 gEasyChatWord_Hero[] = _("HERO");
+const u8 gEasyChatWord_Nap[] = _("NAP");
+const u8 gEasyChatWord_Heroine[] = _("HEROINE");
+const u8 gEasyChatWord_Fashion[] = _("FASHION");
+const u8 gEasyChatWord_Adventure[] = _("ADVENTURE");
+const u8 gEasyChatWord_Board[] = _("BOARD");
+const u8 gEasyChatWord_Ball[] = _("BALL");
+const u8 gEasyChatWord_Book[] = _("BOOK");
+const u8 gEasyChatWord_Festival[] = _("FESTIVAL");
+const u8 gEasyChatWord_Comics[] = _("COMICS");
+const u8 gEasyChatWord_Holiday[] = _("HOLIDAY");
+const u8 gEasyChatWord_Plans[] = _("PLANS");
+const u8 gEasyChatWord_Trendy[] = _("TRENDY");
+const u8 gEasyChatWord_Vacation[] = _("VACATION");
+const u8 gEasyChatWord_Look[] = _("LOOK");
+
+const struct EasyChatWordInfo gEasyChatGroup_Hobbies[] = {
+ {
+ .text = gEasyChatWord_Idol,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Anime,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Song,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Movie,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sweets,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Chat,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ChildsPlay,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Toys,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Music,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cards,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shopping,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Camera,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Viewing,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spectator,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gourmet,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Game,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rpg,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Collection,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Complete,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Magazine,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Walk,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bike,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hobby,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sports,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Software,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Songs,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Diet,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Treasure,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Travel,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dance,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Channel,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Making,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fishing,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Date,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Design,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Locomotive,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PlushDoll,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pc,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flowers,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hero,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nap,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heroine,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fashion,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adventure,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Board,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ball,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Book,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Festival,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Comics,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Holiday,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plans,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trendy,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Vacation,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Look,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_lifestyle.h b/src/data/easy_chat/easy_chat_group_lifestyle.h
new file mode 100755
index 000000000..9ed60025d
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_lifestyle.h
@@ -0,0 +1,273 @@
+const u8 gEasyChatWord_Chores[] = _("CHORES");
+const u8 gEasyChatWord_Home[] = _("HOME");
+const u8 gEasyChatWord_Money[] = _("MONEY");
+const u8 gEasyChatWord_Allowance[] = _("ALLOWANCE");
+const u8 gEasyChatWord_Bath[] = _("BATH");
+const u8 gEasyChatWord_Conversation[] = _("CONVERSATION");
+const u8 gEasyChatWord_School[] = _("SCHOOL");
+const u8 gEasyChatWord_Commemorate[] = _("COMMEMORATE");
+const u8 gEasyChatWord_Habit[] = _("HABIT");
+const u8 gEasyChatWord_Group[] = _("GROUP");
+const u8 gEasyChatWord_Word[] = _("WORD");
+const u8 gEasyChatWord_Store[] = _("STORE");
+const u8 gEasyChatWord_Service[] = _("SERVICE");
+const u8 gEasyChatWord_Work[] = _("WORK");
+const u8 gEasyChatWord_System[] = _("SYSTEM");
+const u8 gEasyChatWord_Train[] = _("TRAIN");
+const u8 gEasyChatWord_Class[] = _("CLASS");
+const u8 gEasyChatWord_Lessons[] = _("LESSONS");
+const u8 gEasyChatWord_Information[] = _("INFORMATION");
+const u8 gEasyChatWord_Living[] = _("LIVING");
+const u8 gEasyChatWord_Teacher[] = _("TEACHER");
+const u8 gEasyChatWord_Tournament[] = _("TOURNAMENT");
+const u8 gEasyChatWord_Letter[] = _("LETTER");
+const u8 gEasyChatWord_Event[] = _("EVENT");
+const u8 gEasyChatWord_Digital[] = _("DIGITAL");
+const u8 gEasyChatWord_Test[] = _("TEST");
+const u8 gEasyChatWord_DeptStore[] = _("DEPT. STORE");
+const u8 gEasyChatWord_Television[] = _("TELEVISION");
+const u8 gEasyChatWord_Phone[] = _("PHONE");
+const u8 gEasyChatWord_Item[] = _("ITEM");
+const u8 gEasyChatWord_Name[] = _("NAME");
+const u8 gEasyChatWord_News[] = _("NEWS");
+const u8 gEasyChatWord_Popular[] = _("POPULAR");
+const u8 gEasyChatWord_Party[] = _("PARTY");
+const u8 gEasyChatWord_Study[] = _("STUDY");
+const u8 gEasyChatWord_Machine[] = _("MACHINE");
+const u8 gEasyChatWord_Mail[] = _("MAIL");
+const u8 gEasyChatWord_Message[] = _("MESSAGE");
+const u8 gEasyChatWord_Promise[] = _("PROMISE");
+const u8 gEasyChatWord_Dream[] = _("DREAM");
+const u8 gEasyChatWord_Kindergarten[] = _("KINDERGARTEN");
+const u8 gEasyChatWord_Life[] = _("LIFE");
+const u8 gEasyChatWord_Radio[] = _("RADIO");
+const u8 gEasyChatWord_Rental[] = _("RENTAL");
+const u8 gEasyChatWord_World[] = _("WORLD");
+
+const struct EasyChatWordInfo gEasyChatGroup_Lifestyle[] = {
+ {
+ .text = gEasyChatWord_Chores,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Home,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Money,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Allowance,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bath,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Conversation,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_School,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Commemorate,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Habit,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Group,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Word,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Store,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Service,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Work,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_System,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Train,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Class,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lessons,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Information,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Living,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Teacher,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tournament,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Letter,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Event,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Digital,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Test,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_DeptStore,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Television,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Phone,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Item,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Name,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_News,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Popular,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Party,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Study,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Machine,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mail,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Message,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Promise,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dream,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kindergarten,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Life,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Radio,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rental,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_World,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_misc.h b/src/data/easy_chat/easy_chat_group_misc.h
new file mode 100755
index 000000000..fbc9a7069
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_misc.h
@@ -0,0 +1,255 @@
+const u8 gEasyChatWord_Highs[] = _("HIGHS");
+const u8 gEasyChatWord_Lows[] = _("LOWS");
+const u8 gEasyChatWord_Um[] = _("UM");
+const u8 gEasyChatWord_Rear[] = _("REAR");
+const u8 gEasyChatWord_Things[] = _("THINGS");
+const u8 gEasyChatWord_Thing[] = _("THING");
+const u8 gEasyChatWord_Below[] = _("BELOW");
+const u8 gEasyChatWord_Above[] = _("ABOVE");
+const u8 gEasyChatWord_Back[] = _("BACK");
+const u8 gEasyChatWord_High[] = _("HIGH");
+const u8 gEasyChatWord_Here[] = _("HERE");
+const u8 gEasyChatWord_Inside[] = _("INSIDE");
+const u8 gEasyChatWord_Outside[] = _("OUTSIDE");
+const u8 gEasyChatWord_Beside[] = _("BESIDE");
+const u8 gEasyChatWord_ThisIsItExcl[] = _("THIS IS IT!");
+const u8 gEasyChatWord_This[] = _("THIS");
+const u8 gEasyChatWord_Every[] = _("EVERY");
+const u8 gEasyChatWord_These[] = _("THESE");
+const u8 gEasyChatWord_TheseWere[] = _("THESE WERE");
+const u8 gEasyChatWord_Down[] = _("DOWN");
+const u8 gEasyChatWord_That[] = _("THAT");
+const u8 gEasyChatWord_ThoseAre[] = _("THOSE ARE");
+const u8 gEasyChatWord_ThoseWere[] = _("THOSE WERE");
+const u8 gEasyChatWord_ThatsItExcl[] = _("THAT'S IT!");
+const u8 gEasyChatWord_Am[] = _("AM");
+const u8 gEasyChatWord_ThatWas[] = _("THAT WAS");
+const u8 gEasyChatWord_Front[] = _("FRONT");
+const u8 gEasyChatWord_Up[] = _("UP");
+const u8 gEasyChatWord_Choice[] = _("CHOICE");
+const u8 gEasyChatWord_Far[] = _("FAR");
+const u8 gEasyChatWord_Away[] = _("AWAY");
+const u8 gEasyChatWord_Near[] = _("NEAR");
+const u8 gEasyChatWord_Where[] = _("WHERE");
+const u8 gEasyChatWord_When[] = _("WHEN");
+const u8 gEasyChatWord_What[] = _("WHAT");
+const u8 gEasyChatWord_Deep[] = _("DEEP");
+const u8 gEasyChatWord_Shallow[] = _("SHALLOW");
+const u8 gEasyChatWord_Why[] = _("WHY");
+const u8 gEasyChatWord_Confused[] = _("CONFUSED");
+const u8 gEasyChatWord_Opposite[] = _("OPPOSITE");
+const u8 gEasyChatWord_Left[] = _("LEFT");
+const u8 gEasyChatWord_Right[] = _("RIGHT");
+
+const struct EasyChatWordInfo gEasyChatGroup_Misc[] = {
+ {
+ .text = gEasyChatWord_Highs,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lows,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Um,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rear,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Things,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thing,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Below,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Above,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Back,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_High,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Here,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Inside,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Outside,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beside,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThisIsItExcl,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_This,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Every,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_These,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TheseWere,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Down,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_That,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThoseAre,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThoseWere,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThatsItExcl,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Am,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThatWas,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Front,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Up,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Choice,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Far,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Away,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Near,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Where,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_When,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_What,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Deep,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shallow,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Why,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Confused,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Opposite,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Left,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Right,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_move_1.h b/src/data/easy_chat/easy_chat_group_move_1.h
new file mode 100755
index 000000000..3b0e8acca
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_move_1.h
@@ -0,0 +1,158 @@
+#include "constants/moves.h"
+
+const u16 gEasyChatGroup_Move1[] = {
+ MOVE_ABSORB,
+ MOVE_AEROBLAST,
+ MOVE_AGILITY,
+ MOVE_AIR_CUTTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_AROMATHERAPY,
+ MOVE_ASTONISH,
+ MOVE_AURORA_BEAM,
+ MOVE_BIDE,
+ MOVE_BIND,
+ MOVE_BITE,
+ MOVE_BRICK_BREAK,
+ MOVE_BUBBLE,
+ MOVE_CHARGE,
+ MOVE_CHARM,
+ MOVE_CLAMP,
+ MOVE_CONFUSE_RAY,
+ MOVE_CONSTRICT,
+ MOVE_COSMIC_POWER,
+ MOVE_COUNTER,
+ MOVE_CRABHAMMER,
+ MOVE_CROSS_CHOP,
+ MOVE_CRUNCH,
+ MOVE_CUT,
+ MOVE_DIG,
+ MOVE_DISABLE,
+ MOVE_DOUBLE_TEAM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_EARTHQUAKE,
+ MOVE_ENCORE,
+ MOVE_ENDEAVOR,
+ MOVE_ENDURE,
+ MOVE_EXTRASENSORY,
+ MOVE_EXTREME_SPEED,
+ MOVE_FACADE,
+ MOVE_FAKE_TEARS,
+ MOVE_FISSURE,
+ MOVE_FLAIL,
+ MOVE_FLAME_WHEEL,
+ MOVE_FLAMETHROWER,
+ MOVE_FLATTER,
+ MOVE_FLY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_FOCUS_PUNCH,
+ MOVE_FOLLOW_ME,
+ MOVE_GIGA_DRAIN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_GROWTH,
+ MOVE_GRUDGE,
+ MOVE_GUST,
+ MOVE_HAIL,
+ MOVE_HARDEN,
+ MOVE_HAZE,
+ MOVE_HEADBUTT,
+ MOVE_HEAL_BELL,
+ MOVE_HYPNOSIS,
+ MOVE_ICE_BALL,
+ MOVE_ICY_WIND,
+ MOVE_IRON_TAIL,
+ MOVE_KARATE_CHOP,
+ MOVE_KINESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_LICK,
+ MOVE_LOVELY_KISS,
+ MOVE_LOW_KICK,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_METAL_SOUND,
+ MOVE_METEOR_MASH,
+ MOVE_MIND_READER,
+ MOVE_MIRROR_MOVE,
+ MOVE_MIST,
+ MOVE_MORNING_SUN,
+ MOVE_NATURE_POWER,
+ MOVE_NIGHTMARE,
+ MOVE_OCTAZOOKA,
+ MOVE_ODOR_SLEUTH,
+ MOVE_OUTRAGE,
+ MOVE_OVERHEAT,
+ MOVE_PAIN_SPLIT,
+ MOVE_POWDER_SNOW,
+ MOVE_PSYBEAM,
+ MOVE_PSYCH_UP,
+ MOVE_PSYCHIC,
+ MOVE_PSYCHO_BOOST,
+ MOVE_PSYWAVE,
+ MOVE_PURSUIT,
+ MOVE_RAGE,
+ MOVE_RAIN_DANCE,
+ MOVE_RAPID_SPIN,
+ MOVE_RAZOR_WIND,
+ MOVE_RECOVER,
+ MOVE_RETURN,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_ROCK_SMASH,
+ MOVE_ROCK_THROW,
+ MOVE_ROCK_TOMB,
+ MOVE_ROLLOUT,
+ MOVE_SACRED_FIRE,
+ MOVE_SAFEGUARD,
+ MOVE_SAND_TOMB,
+ MOVE_SAND_ATTACK,
+ MOVE_SANDSTORM,
+ MOVE_SCARY_FACE,
+ MOVE_SCREECH,
+ MOVE_SELF_DESTRUCT,
+ MOVE_SHADOW_BALL,
+ MOVE_SHADOW_PUNCH,
+ MOVE_SHARPEN,
+ MOVE_SHEER_COLD,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND,
+ MOVE_SING,
+ MOVE_SKETCH,
+ MOVE_SKILL_SWAP,
+ MOVE_SKY_ATTACK,
+ MOVE_SKY_UPPERCUT,
+ MOVE_SLASH,
+ MOVE_SMELLING_SALT,
+ MOVE_SMOG,
+ MOVE_SMOKESCREEN,
+ MOVE_SNORE,
+ MOVE_SOLAR_BEAM,
+ MOVE_SONIC_BOOM,
+ MOVE_SPARK,
+ MOVE_SPIDER_WEB,
+ MOVE_SPITE,
+ MOVE_SPORE,
+ MOVE_STRENGTH,
+ MOVE_STRING_SHOT,
+ MOVE_STUN_SPORE,
+ MOVE_SUBMISSION,
+ MOVE_SUPER_FANG,
+ MOVE_SWAGGER,
+ MOVE_SWEET_SCENT,
+ MOVE_SWIFT,
+ MOVE_SYNTHESIS,
+ MOVE_TAIL_WHIP,
+ MOVE_THRASH,
+ MOVE_THUNDER,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER_PUNCH,
+ MOVE_TICKLE,
+ MOVE_TORMENT,
+ MOVE_UPROAR,
+ MOVE_VITAL_THROW,
+ MOVE_WATER_SPOUT,
+ MOVE_WEATHER_BALL,
+ MOVE_WHIRLPOOL,
+ MOVE_WILL_O_WISP,
+ MOVE_WITHDRAW,
+ MOVE_YAWN,
+};
diff --git a/src/data/easy_chat/easy_chat_group_move_2.h b/src/data/easy_chat/easy_chat_group_move_2.h
new file mode 100755
index 000000000..e0a0cd379
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_move_2.h
@@ -0,0 +1,204 @@
+#include "constants/moves.h"
+
+const u16 gEasyChatGroup_Move2[] = {
+ MOVE_ACID,
+ MOVE_ACID_ARMOR,
+ MOVE_AERIAL_ACE,
+ MOVE_AMNESIA,
+ MOVE_ARM_THRUST,
+ MOVE_ASSIST,
+ MOVE_ATTRACT,
+ MOVE_BARRAGE,
+ MOVE_BARRIER,
+ MOVE_BATON_PASS,
+ MOVE_BEAT_UP,
+ MOVE_BELLY_DRUM,
+ MOVE_BLAST_BURN,
+ MOVE_BLAZE_KICK,
+ MOVE_BLIZZARD,
+ MOVE_BLOCK,
+ MOVE_BODY_SLAM,
+ MOVE_BONE_CLUB,
+ MOVE_BONE_RUSH,
+ MOVE_BONEMERANG,
+ MOVE_BOUNCE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_BULK_UP,
+ MOVE_BULLET_SEED,
+ MOVE_CALM_MIND,
+ MOVE_CAMOUFLAGE,
+ MOVE_COMET_PUNCH,
+ MOVE_CONFUSION,
+ MOVE_CONVERSION,
+ MOVE_CONVERSION_2,
+ MOVE_COTTON_SPORE,
+ MOVE_COVET,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_DEFENSE_CURL,
+ MOVE_DESTINY_BOND,
+ MOVE_DETECT,
+ MOVE_DIVE,
+ MOVE_DIZZY_PUNCH,
+ MOVE_DOOM_DESIRE,
+ MOVE_DOUBLE_KICK,
+ MOVE_DRAGON_CLAW,
+ MOVE_DRAGON_DANCE,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH,
+ MOVE_DREAM_EATER,
+ MOVE_DRILL_PECK,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_EGG_BOMB,
+ MOVE_EMBER,
+ MOVE_ERUPTION,
+ MOVE_EXPLOSION,
+ MOVE_FAINT_ATTACK,
+ MOVE_FAKE_OUT,
+ MOVE_FALSE_SWIPE,
+ MOVE_FEATHER_DANCE,
+ MOVE_FIRE_BLAST,
+ MOVE_FIRE_PUNCH,
+ MOVE_FIRE_SPIN,
+ MOVE_FLASH,
+ MOVE_FORESIGHT,
+ MOVE_FRENZY_PLANT,
+ MOVE_FRUSTRATION,
+ MOVE_FURY_ATTACK,
+ MOVE_FURY_CUTTER,
+ MOVE_FURY_SWIPES,
+ MOVE_FUTURE_SIGHT,
+ MOVE_GLARE,
+ MOVE_GROWL,
+ MOVE_GUILLOTINE,
+ MOVE_HEAT_WAVE,
+ MOVE_HELPING_HAND,
+ MOVE_HI_JUMP_KICK,
+ MOVE_HIDDEN_POWER,
+ MOVE_HORN_ATTACK,
+ MOVE_HORN_DRILL,
+ MOVE_HOWL,
+ MOVE_HYDRO_CANNON,
+ MOVE_HYDRO_PUMP,
+ MOVE_HYPER_BEAM,
+ MOVE_HYPER_FANG,
+ MOVE_HYPER_VOICE,
+ MOVE_ICE_BEAM,
+ MOVE_ICE_PUNCH,
+ MOVE_ICICLE_SPEAR,
+ MOVE_IMPRISON,
+ MOVE_INGRAIN,
+ MOVE_IRON_DEFENSE,
+ MOVE_JUMP_KICK,
+ MOVE_KNOCK_OFF,
+ MOVE_LEAF_BLADE,
+ MOVE_LEECH_SEED,
+ MOVE_LEER,
+ MOVE_LIGHT_SCREEN,
+ MOVE_LOCK_ON,
+ MOVE_LUSTER_PURGE,
+ MOVE_MACH_PUNCH,
+ MOVE_MAGIC_COAT,
+ MOVE_MAGICAL_LEAF,
+ MOVE_MAGNITUDE,
+ MOVE_MEDITATE,
+ MOVE_MEGA_DRAIN,
+ MOVE_MEGA_KICK,
+ MOVE_MEGA_PUNCH,
+ MOVE_MEGAHORN,
+ MOVE_METAL_CLAW,
+ MOVE_METRONOME,
+ MOVE_MILK_DRINK,
+ MOVE_MIMIC,
+ MOVE_MINIMIZE,
+ MOVE_MIRROR_COAT,
+ MOVE_MIST_BALL,
+ MOVE_MOONLIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_MUD_SPORT,
+ MOVE_MUD_SLAP,
+ MOVE_MUDDY_WATER,
+ MOVE_NEEDLE_ARM,
+ MOVE_NIGHT_SHADE,
+ MOVE_PAY_DAY,
+ MOVE_PECK,
+ MOVE_PERISH_SONG,
+ MOVE_PETAL_DANCE,
+ MOVE_PIN_MISSILE,
+ MOVE_POISON_FANG,
+ MOVE_POISON_GAS,
+ MOVE_POISON_STING,
+ MOVE_POISON_TAIL,
+ MOVE_POISON_POWDER,
+ MOVE_POUND,
+ MOVE_PRESENT,
+ MOVE_PROTECT,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_LEAF,
+ MOVE_RECYCLE,
+ MOVE_REFLECT,
+ MOVE_REFRESH,
+ MOVE_REST,
+ MOVE_REVENGE,
+ MOVE_ROAR,
+ MOVE_ROCK_BLAST,
+ MOVE_ROLE_PLAY,
+ MOVE_ROLLING_KICK,
+ MOVE_SCRATCH,
+ MOVE_SECRET_POWER,
+ MOVE_SEISMIC_TOSS,
+ MOVE_SHOCK_WAVE,
+ MOVE_SKULL_BASH,
+ MOVE_SLACK_OFF,
+ MOVE_SLAM,
+ MOVE_SLEEP_POWDER,
+ MOVE_SLEEP_TALK,
+ MOVE_SLUDGE,
+ MOVE_SLUDGE_BOMB,
+ MOVE_SNATCH,
+ MOVE_SOFT_BOILED,
+ MOVE_SPIKE_CANNON,
+ MOVE_SPIKES,
+ MOVE_SPIT_UP,
+ MOVE_SPLASH,
+ MOVE_STEEL_WING,
+ MOVE_STOCKPILE,
+ MOVE_STOMP,
+ MOVE_STRUGGLE,
+ MOVE_SUBSTITUTE,
+ MOVE_SUNNY_DAY,
+ MOVE_SUPERPOWER,
+ MOVE_SUPERSONIC,
+ MOVE_SURF,
+ MOVE_SWALLOW,
+ MOVE_SWEET_KISS,
+ MOVE_SWORDS_DANCE,
+ MOVE_TACKLE,
+ MOVE_TAIL_GLOW,
+ MOVE_TAKE_DOWN,
+ MOVE_TAUNT,
+ MOVE_TEETER_DANCE,
+ MOVE_TELEPORT,
+ MOVE_THIEF,
+ MOVE_THUNDER_WAVE,
+ MOVE_THUNDER_SHOCK,
+ MOVE_TOXIC,
+ MOVE_TRANSFORM,
+ MOVE_TRI_ATTACK,
+ MOVE_TRICK,
+ MOVE_TRIPLE_KICK,
+ MOVE_TWINEEDLE,
+ MOVE_TWISTER,
+ MOVE_VICE_GRIP,
+ MOVE_VINE_WHIP,
+ MOVE_VOLT_TACKLE,
+ MOVE_WATER_GUN,
+ MOVE_WATER_PULSE,
+ MOVE_WATER_SPORT,
+ MOVE_WATERFALL,
+ MOVE_WHIRLWIND,
+ MOVE_WING_ATTACK,
+ MOVE_WISH,
+ MOVE_WRAP,
+ MOVE_ZAP_CANNON,
+};
diff --git a/src/data/easy_chat/easy_chat_group_people.h b/src/data/easy_chat/easy_chat_group_people.h
new file mode 100755
index 000000000..17d2d5339
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_people.h
@@ -0,0 +1,453 @@
+const u8 gEasyChatWord_Opponent[] = _("OPPONENT");
+const u8 gEasyChatWord_I[] = _("I");
+const u8 gEasyChatWord_You[] = _("YOU");
+const u8 gEasyChatWord_Yours[] = _("YOURS");
+const u8 gEasyChatWord_Son[] = _("SON");
+const u8 gEasyChatWord_Your[] = _("YOUR");
+const u8 gEasyChatWord_Youre[] = _("YOU'RE");
+const u8 gEasyChatWord_Youve[] = _("YOU'VE");
+const u8 gEasyChatWord_Mother[] = _("MOTHER");
+const u8 gEasyChatWord_Grandfather[] = _("GRANDFATHER");
+const u8 gEasyChatWord_Uncle[] = _("UNCLE");
+const u8 gEasyChatWord_Father[] = _("FATHER");
+const u8 gEasyChatWord_Boy[] = _("BOY");
+const u8 gEasyChatWord_Adult[] = _("ADULT");
+const u8 gEasyChatWord_Brother[] = _("BROTHER");
+const u8 gEasyChatWord_Sister[] = _("SISTER");
+const u8 gEasyChatWord_Grandmother[] = _("GRANDMOTHER");
+const u8 gEasyChatWord_Aunt[] = _("AUNT");
+const u8 gEasyChatWord_Parent[] = _("PARENT");
+const u8 gEasyChatWord_Man[] = _("MAN");
+const u8 gEasyChatWord_Me[] = _("ME");
+const u8 gEasyChatWord_Girl[] = _("GIRL");
+const u8 gEasyChatWord_Babe[] = _("BABE");
+const u8 gEasyChatWord_Family[] = _("FAMILY");
+const u8 gEasyChatWord_Her[] = _("HER");
+const u8 gEasyChatWord_Him[] = _("HIM");
+const u8 gEasyChatWord_He[] = _("HE");
+const u8 gEasyChatWord_Place[] = _("PLACE");
+const u8 gEasyChatWord_Daughter[] = _("DAUGHTER");
+const u8 gEasyChatWord_His[] = _("HIS");
+const u8 gEasyChatWord_Hes[] = _("HE'S");
+const u8 gEasyChatWord_Arent[] = _("AREN'T");
+const u8 gEasyChatWord_Siblings[] = _("SIBLINGS");
+const u8 gEasyChatWord_Kid[] = _("KID");
+const u8 gEasyChatWord_Children[] = _("CHILDREN");
+const u8 gEasyChatWord_Mr[] = _("MR.");
+const u8 gEasyChatWord_Mrs[] = _("MRS.");
+const u8 gEasyChatWord_Myself[] = _("MYSELF");
+const u8 gEasyChatWord_IWas[] = _("I WAS");
+const u8 gEasyChatWord_ToMe[] = _("TO ME");
+const u8 gEasyChatWord_My[] = _("MY");
+const u8 gEasyChatWord_IAm[] = _("I AM");
+const u8 gEasyChatWord_Ive[] = _("I'VE");
+const u8 gEasyChatWord_Who[] = _("WHO");
+const u8 gEasyChatWord_Someone[] = _("SOMEONE");
+const u8 gEasyChatWord_WhoWas[] = _("WHO WAS");
+const u8 gEasyChatWord_ToWhom[] = _("TO WHOM");
+const u8 gEasyChatWord_Whose[] = _("WHOSE");
+const u8 gEasyChatWord_WhoIs[] = _("WHO IS");
+const u8 gEasyChatWord_Its[] = _("IT'S");
+const u8 gEasyChatWord_Lady[] = _("LADY");
+const u8 gEasyChatWord_Friend[] = _("FRIEND");
+const u8 gEasyChatWord_Ally[] = _("ALLY");
+const u8 gEasyChatWord_Person[] = _("PERSON");
+const u8 gEasyChatWord_Dude[] = _("DUDE");
+const u8 gEasyChatWord_They[] = _("THEY");
+const u8 gEasyChatWord_TheyWere[] = _("THEY WERE");
+const u8 gEasyChatWord_ToThem[] = _("TO THEM");
+const u8 gEasyChatWord_Their[] = _("THEIR");
+const u8 gEasyChatWord_Theyre[] = _("THEY'RE");
+const u8 gEasyChatWord_Theyve[] = _("THEY'VE");
+const u8 gEasyChatWord_We[] = _("WE");
+const u8 gEasyChatWord_Been[] = _("BEEN");
+const u8 gEasyChatWord_ToUs[] = _("TO US");
+const u8 gEasyChatWord_Our[] = _("OUR");
+const u8 gEasyChatWord_WeAre[] = _("WE'RE");
+const u8 gEasyChatWord_Rival[] = _("RIVAL");
+const u8 gEasyChatWord_Weve[] = _("WE'VE");
+const u8 gEasyChatWord_Woman[] = _("WOMAN");
+const u8 gEasyChatWord_She[] = _("SHE");
+const u8 gEasyChatWord_SheWas[] = _("SHE WAS");
+const u8 gEasyChatWord_ToHer[] = _("TO HER");
+const u8 gEasyChatWord_Hers[] = _("HERS");
+const u8 gEasyChatWord_SheIs[] = _("SHE IS");
+const u8 gEasyChatWord_Some[] = _("SOME");
+
+const struct EasyChatWordInfo gEasyChatGroup_People[] = {
+ {
+ .text = gEasyChatWord_Opponent,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_I,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_You,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yours,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Son,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Your,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Youre,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Youve,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mother,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grandfather,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Uncle,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Father,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Boy,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Adult,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Brother,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sister,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grandmother,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aunt,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Parent,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Man,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Me,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Girl,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Babe,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Family,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Her,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Him,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_He,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Place,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daughter,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_His,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hes,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Arent,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Siblings,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kid,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Children,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mr,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mrs,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Myself,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IWas,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToMe,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_My,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_IAm,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ive,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Who,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Someone,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhoWas,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToWhom,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whose,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhoIs,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Its,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lady,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Friend,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ally,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Person,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dude,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_They,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TheyWere,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToThem,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Their,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Theyre,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Theyve,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_We,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Been,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToUs,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Our,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WeAre,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rival,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Weve,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Woman,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_She,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SheWas,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ToHer,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hers,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SheIs,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Some,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_pokemon.h b/src/data/easy_chat/easy_chat_group_pokemon.h
new file mode 100755
index 000000000..9993a5144
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_pokemon.h
@@ -0,0 +1,206 @@
+#include "constants/species.h"
+
+const u16 gEasyChatGroup_Pokemon[] = {
+ SPECIES_ABRA,
+ SPECIES_ABSOL,
+ SPECIES_AGGRON,
+ SPECIES_ALAKAZAM,
+ SPECIES_ALTARIA,
+ SPECIES_ANORITH,
+ SPECIES_ARMALDO,
+ SPECIES_ARON,
+ SPECIES_AZUMARILL,
+ SPECIES_AZURILL,
+ SPECIES_BAGON,
+ SPECIES_BALTOY,
+ SPECIES_BANETTE,
+ SPECIES_BARBOACH,
+ SPECIES_BEAUTIFLY,
+ SPECIES_BELDUM,
+ SPECIES_BELLOSSOM,
+ SPECIES_BLAZIKEN,
+ SPECIES_BRELOOM,
+ SPECIES_CACNEA,
+ SPECIES_CACTURNE,
+ SPECIES_CAMERUPT,
+ SPECIES_CARVANHA,
+ SPECIES_CASCOON,
+ SPECIES_CASTFORM,
+ SPECIES_CHIMECHO,
+ SPECIES_CHINCHOU,
+ SPECIES_CLAMPERL,
+ SPECIES_CLAYDOL,
+ SPECIES_COMBUSKEN,
+ SPECIES_CORPHISH,
+ SPECIES_CORSOLA,
+ SPECIES_CRADILY,
+ SPECIES_CRAWDAUNT,
+ SPECIES_CROBAT,
+ SPECIES_DELCATTY,
+ SPECIES_DEOXYS,
+ SPECIES_DODRIO,
+ SPECIES_DODUO,
+ SPECIES_DONPHAN,
+ SPECIES_DUSCLOPS,
+ SPECIES_DUSKULL,
+ SPECIES_DUSTOX,
+ SPECIES_ELECTRIKE,
+ SPECIES_ELECTRODE,
+ SPECIES_EXPLOUD,
+ SPECIES_FEEBAS,
+ SPECIES_FLYGON,
+ SPECIES_GARDEVOIR,
+ SPECIES_GEODUDE,
+ SPECIES_GIRAFARIG,
+ SPECIES_GLALIE,
+ SPECIES_GLOOM,
+ SPECIES_GOLBAT,
+ SPECIES_GOLDEEN,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLEM,
+ SPECIES_GOREBYSS,
+ SPECIES_GRAVELER,
+ SPECIES_GRIMER,
+ SPECIES_GROUDON,
+ SPECIES_GROVYLE,
+ SPECIES_GRUMPIG,
+ SPECIES_GULPIN,
+ SPECIES_GYARADOS,
+ SPECIES_HARIYAMA,
+ SPECIES_HERACROSS,
+ SPECIES_HORSEA,
+ SPECIES_HUNTAIL,
+ SPECIES_IGGLYBUFF,
+ SPECIES_ILLUMISE,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_JIRACHI,
+ SPECIES_KADABRA,
+ SPECIES_KECLEON,
+ SPECIES_KINGDRA,
+ SPECIES_KIRLIA,
+ SPECIES_KOFFING,
+ SPECIES_KYOGRE,
+ SPECIES_LAIRON,
+ SPECIES_LANTURN,
+ SPECIES_LATIAS,
+ SPECIES_LATIOS,
+ SPECIES_LILEEP,
+ SPECIES_LINOONE,
+ SPECIES_LOMBRE,
+ SPECIES_LOTAD,
+ SPECIES_LOUDRED,
+ SPECIES_LUDICOLO,
+ SPECIES_LUNATONE,
+ SPECIES_LUVDISC,
+ SPECIES_MACHAMP,
+ SPECIES_MACHOKE,
+ SPECIES_MACHOP,
+ SPECIES_MAGCARGO,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGNEMITE,
+ SPECIES_MAGNETON,
+ SPECIES_MAKUHITA,
+ SPECIES_MANECTRIC,
+ SPECIES_MARILL,
+ SPECIES_MARSHTOMP,
+ SPECIES_MASQUERAIN,
+ SPECIES_MAWILE,
+ SPECIES_MEDICHAM,
+ SPECIES_MEDITITE,
+ SPECIES_METAGROSS,
+ SPECIES_METANG,
+ SPECIES_MIGHTYENA,
+ SPECIES_MILOTIC,
+ SPECIES_MINUN,
+ SPECIES_MUDKIP,
+ SPECIES_MUK,
+ SPECIES_NATU,
+ SPECIES_NINCADA,
+ SPECIES_NINETALES,
+ SPECIES_NINJASK,
+ SPECIES_NOSEPASS,
+ SPECIES_NUMEL,
+ SPECIES_NUZLEAF,
+ SPECIES_ODDISH,
+ SPECIES_PELIPPER,
+ SPECIES_PHANPY,
+ SPECIES_PICHU,
+ SPECIES_PIKACHU,
+ SPECIES_PINSIR,
+ SPECIES_PLUSLE,
+ SPECIES_POOCHYENA,
+ SPECIES_PSYDUCK,
+ SPECIES_RAICHU,
+ SPECIES_RALTS,
+ SPECIES_RAYQUAZA,
+ SPECIES_REGICE,
+ SPECIES_REGIROCK,
+ SPECIES_REGISTEEL,
+ SPECIES_RELICANTH,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_ROSELIA,
+ SPECIES_SABLEYE,
+ SPECIES_SALAMENCE,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SCEPTILE,
+ SPECIES_SEADRA,
+ SPECIES_SEAKING,
+ SPECIES_SEALEO,
+ SPECIES_SEEDOT,
+ SPECIES_SEVIPER,
+ SPECIES_SHARPEDO,
+ SPECIES_SHEDINJA,
+ SPECIES_SHELGON,
+ SPECIES_SHIFTRY,
+ SPECIES_SHROOMISH,
+ SPECIES_SHUPPET,
+ SPECIES_SILCOON,
+ SPECIES_SKARMORY,
+ SPECIES_SKITTY,
+ SPECIES_SLAKING,
+ SPECIES_SLAKOTH,
+ SPECIES_SLUGMA,
+ SPECIES_SNORUNT,
+ SPECIES_SOLROCK,
+ SPECIES_SPHEAL,
+ SPECIES_SPINDA,
+ SPECIES_SPOINK,
+ SPECIES_STARMIE,
+ SPECIES_STARYU,
+ SPECIES_SURSKIT,
+ SPECIES_SWABLU,
+ SPECIES_SWALOT,
+ SPECIES_SWAMPERT,
+ SPECIES_SWELLOW,
+ SPECIES_TAILLOW,
+ SPECIES_TENTACOOL,
+ SPECIES_TENTACRUEL,
+ SPECIES_TORCHIC,
+ SPECIES_TORKOAL,
+ SPECIES_TRAPINCH,
+ SPECIES_TREECKO,
+ SPECIES_TROPIUS,
+ SPECIES_VIBRAVA,
+ SPECIES_VIGOROTH,
+ SPECIES_VILEPLUME,
+ SPECIES_VOLBEAT,
+ SPECIES_VOLTORB,
+ SPECIES_VULPIX,
+ SPECIES_WAILMER,
+ SPECIES_WAILORD,
+ SPECIES_WALREIN,
+ SPECIES_WEEZING,
+ SPECIES_WHISCASH,
+ SPECIES_WHISMUR,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_WINGULL,
+ SPECIES_WOBBUFFET,
+ SPECIES_WURMPLE,
+ SPECIES_WYNAUT,
+ SPECIES_XATU,
+ SPECIES_ZANGOOSE,
+ SPECIES_ZIGZAGOON,
+ SPECIES_ZUBAT,
+};
diff --git a/src/data/easy_chat/easy_chat_group_pokemon2.h b/src/data/easy_chat/easy_chat_group_pokemon2.h
new file mode 100755
index 000000000..35b0a03cb
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_pokemon2.h
@@ -0,0 +1,255 @@
+#include "constants/species.h"
+
+const u16 gEasyChatGroup_Pokemon2[] = {
+ SPECIES_ABRA,
+ SPECIES_AERODACTYL,
+ SPECIES_AIPOM,
+ SPECIES_ALAKAZAM,
+ SPECIES_AMPHAROS,
+ SPECIES_ARBOK,
+ SPECIES_ARCANINE,
+ SPECIES_ARIADOS,
+ SPECIES_ARTICUNO,
+ SPECIES_AZUMARILL,
+ SPECIES_BAYLEEF,
+ SPECIES_BEEDRILL,
+ SPECIES_BELLOSSOM,
+ SPECIES_BELLSPROUT,
+ SPECIES_BLASTOISE,
+ SPECIES_BLISSEY,
+ SPECIES_BULBASAUR,
+ SPECIES_BUTTERFREE,
+ SPECIES_CATERPIE,
+ SPECIES_CELEBI,
+ SPECIES_CHANSEY,
+ SPECIES_CHARIZARD,
+ SPECIES_CHARMANDER,
+ SPECIES_CHARMELEON,
+ SPECIES_CHIKORITA,
+ SPECIES_CHINCHOU,
+ SPECIES_CLEFABLE,
+ SPECIES_CLEFAIRY,
+ SPECIES_CLEFFA,
+ SPECIES_CLOYSTER,
+ SPECIES_CORSOLA,
+ SPECIES_CROBAT,
+ SPECIES_CROCONAW,
+ SPECIES_CUBONE,
+ SPECIES_CYNDAQUIL,
+ SPECIES_DELIBIRD,
+ SPECIES_DEWGONG,
+ SPECIES_DIGLETT,
+ SPECIES_DITTO,
+ SPECIES_DODRIO,
+ SPECIES_DODUO,
+ SPECIES_DONPHAN,
+ SPECIES_DRAGONAIR,
+ SPECIES_DRAGONITE,
+ SPECIES_DRATINI,
+ SPECIES_DROWZEE,
+ SPECIES_DUGTRIO,
+ SPECIES_DUNSPARCE,
+ SPECIES_EEVEE,
+ SPECIES_EKANS,
+ SPECIES_ELECTABUZZ,
+ SPECIES_ELECTRODE,
+ SPECIES_ELEKID,
+ SPECIES_ENTEI,
+ SPECIES_ESPEON,
+ SPECIES_EXEGGCUTE,
+ SPECIES_EXEGGUTOR,
+ SPECIES_FARFETCHD,
+ SPECIES_FEAROW,
+ SPECIES_FERALIGATR,
+ SPECIES_FLAAFFY,
+ SPECIES_FLAREON,
+ SPECIES_FORRETRESS,
+ SPECIES_FURRET,
+ SPECIES_GASTLY,
+ SPECIES_GENGAR,
+ SPECIES_GEODUDE,
+ SPECIES_GIRAFARIG,
+ SPECIES_GLIGAR,
+ SPECIES_GLOOM,
+ SPECIES_GOLBAT,
+ SPECIES_GOLDEEN,
+ SPECIES_GOLDUCK,
+ SPECIES_GOLEM,
+ SPECIES_GRANBULL,
+ SPECIES_GRAVELER,
+ SPECIES_GRIMER,
+ SPECIES_GROWLITHE,
+ SPECIES_GYARADOS,
+ SPECIES_HAUNTER,
+ SPECIES_HERACROSS,
+ SPECIES_HITMONCHAN,
+ SPECIES_HITMONLEE,
+ SPECIES_HITMONTOP,
+ SPECIES_HO_OH,
+ SPECIES_HOOTHOOT,
+ SPECIES_HOPPIP,
+ SPECIES_HORSEA,
+ SPECIES_HOUNDOOM,
+ SPECIES_HOUNDOUR,
+ SPECIES_HYPNO,
+ SPECIES_IGGLYBUFF,
+ SPECIES_IVYSAUR,
+ SPECIES_JIGGLYPUFF,
+ SPECIES_JOLTEON,
+ SPECIES_JUMPLUFF,
+ SPECIES_JYNX,
+ SPECIES_KABUTO,
+ SPECIES_KABUTOPS,
+ SPECIES_KADABRA,
+ SPECIES_KAKUNA,
+ SPECIES_KANGASKHAN,
+ SPECIES_KINGDRA,
+ SPECIES_KINGLER,
+ SPECIES_KOFFING,
+ SPECIES_KRABBY,
+ SPECIES_LANTURN,
+ SPECIES_LAPRAS,
+ SPECIES_LARVITAR,
+ SPECIES_LEDIAN,
+ SPECIES_LEDYBA,
+ SPECIES_LICKITUNG,
+ SPECIES_LUGIA,
+ SPECIES_MACHAMP,
+ SPECIES_MACHOKE,
+ SPECIES_MACHOP,
+ SPECIES_MAGBY,
+ SPECIES_MAGCARGO,
+ SPECIES_MAGIKARP,
+ SPECIES_MAGMAR,
+ SPECIES_MAGNEMITE,
+ SPECIES_MAGNETON,
+ SPECIES_MANKEY,
+ SPECIES_MANTINE,
+ SPECIES_MAREEP,
+ SPECIES_MARILL,
+ SPECIES_MAROWAK,
+ SPECIES_MEGANIUM,
+ SPECIES_MEOWTH,
+ SPECIES_METAPOD,
+ SPECIES_MEW,
+ SPECIES_MEWTWO,
+ SPECIES_MILTANK,
+ SPECIES_MISDREAVUS,
+ SPECIES_MOLTRES,
+ SPECIES_MR_MIME,
+ SPECIES_MUK,
+ SPECIES_MURKROW,
+ SPECIES_NATU,
+ SPECIES_NIDOKING,
+ SPECIES_NIDOQUEEN,
+ SPECIES_NIDORAN_F,
+ SPECIES_NIDORAN_M,
+ SPECIES_NIDORINA,
+ SPECIES_NIDORINO,
+ SPECIES_NINETALES,
+ SPECIES_NOCTOWL,
+ SPECIES_OCTILLERY,
+ SPECIES_ODDISH,
+ SPECIES_OMANYTE,
+ SPECIES_OMASTAR,
+ SPECIES_ONIX,
+ SPECIES_PARAS,
+ SPECIES_PARASECT,
+ SPECIES_PERSIAN,
+ SPECIES_PHANPY,
+ SPECIES_PICHU,
+ SPECIES_PIDGEOT,
+ SPECIES_PIDGEOTTO,
+ SPECIES_PIDGEY,
+ SPECIES_PIKACHU,
+ SPECIES_PILOSWINE,
+ SPECIES_PINECO,
+ SPECIES_PINSIR,
+ SPECIES_POLITOED,
+ SPECIES_POLIWAG,
+ SPECIES_POLIWHIRL,
+ SPECIES_POLIWRATH,
+ SPECIES_PONYTA,
+ SPECIES_PORYGON,
+ SPECIES_PORYGON2,
+ SPECIES_PRIMEAPE,
+ SPECIES_PSYDUCK,
+ SPECIES_PUPITAR,
+ SPECIES_QUAGSIRE,
+ SPECIES_QUILAVA,
+ SPECIES_QWILFISH,
+ SPECIES_RAICHU,
+ SPECIES_RAIKOU,
+ SPECIES_RAPIDASH,
+ SPECIES_RATICATE,
+ SPECIES_RATTATA,
+ SPECIES_REMORAID,
+ SPECIES_RHYDON,
+ SPECIES_RHYHORN,
+ SPECIES_SANDSHREW,
+ SPECIES_SANDSLASH,
+ SPECIES_SCIZOR,
+ SPECIES_SCYTHER,
+ SPECIES_SEADRA,
+ SPECIES_SEAKING,
+ SPECIES_SEEL,
+ SPECIES_SENTRET,
+ SPECIES_SHELLDER,
+ SPECIES_SHUCKLE,
+ SPECIES_SKARMORY,
+ SPECIES_SKIPLOOM,
+ SPECIES_SLOWBRO,
+ SPECIES_SLOWKING,
+ SPECIES_SLOWPOKE,
+ SPECIES_SLUGMA,
+ SPECIES_SMEARGLE,
+ SPECIES_SMOOCHUM,
+ SPECIES_SNEASEL,
+ SPECIES_SNORLAX,
+ SPECIES_SNUBBULL,
+ SPECIES_SPEAROW,
+ SPECIES_SPINARAK,
+ SPECIES_SQUIRTLE,
+ SPECIES_STANTLER,
+ SPECIES_STARMIE,
+ SPECIES_STARYU,
+ SPECIES_STEELIX,
+ SPECIES_SUDOWOODO,
+ SPECIES_SUICUNE,
+ SPECIES_SUNFLORA,
+ SPECIES_SUNKERN,
+ SPECIES_SWINUB,
+ SPECIES_TANGELA,
+ SPECIES_TAUROS,
+ SPECIES_TEDDIURSA,
+ SPECIES_TENTACOOL,
+ SPECIES_TENTACRUEL,
+ SPECIES_TOGEPI,
+ SPECIES_TOGETIC,
+ SPECIES_TOTODILE,
+ SPECIES_TYPHLOSION,
+ SPECIES_TYRANITAR,
+ SPECIES_TYROGUE,
+ SPECIES_UMBREON,
+ SPECIES_UNOWN,
+ SPECIES_URSARING,
+ SPECIES_VAPOREON,
+ SPECIES_VENOMOTH,
+ SPECIES_VENONAT,
+ SPECIES_VENUSAUR,
+ SPECIES_VICTREEBEL,
+ SPECIES_VILEPLUME,
+ SPECIES_VOLTORB,
+ SPECIES_VULPIX,
+ SPECIES_WARTORTLE,
+ SPECIES_WEEDLE,
+ SPECIES_WEEPINBELL,
+ SPECIES_WEEZING,
+ SPECIES_WIGGLYTUFF,
+ SPECIES_WOBBUFFET,
+ SPECIES_WOOPER,
+ SPECIES_XATU,
+ SPECIES_YANMA,
+ SPECIES_ZAPDOS,
+ SPECIES_ZUBAT,
+};
diff --git a/src/data/easy_chat/easy_chat_group_speech.h b/src/data/easy_chat/easy_chat_group_speech.h
new file mode 100755
index 000000000..013b454c0
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_speech.h
@@ -0,0 +1,363 @@
+const u8 gEasyChatWord_Listen[] = _("LISTEN");
+const u8 gEasyChatWord_NotVery[] = _("NOT VERY");
+const u8 gEasyChatWord_Mean[] = _("MEAN");
+const u8 gEasyChatWord_Lie[] = _("LIE");
+const u8 gEasyChatWord_Lay[] = _("LAY");
+const u8 gEasyChatWord_Recommend[] = _("RECOMMEND");
+const u8 gEasyChatWord_Nitwit[] = _("NITWIT");
+const u8 gEasyChatWord_Quite[] = _("QUITE");
+const u8 gEasyChatWord_From[] = _("FROM");
+const u8 gEasyChatWord_Feeling[] = _("FEELING");
+const u8 gEasyChatWord_But[] = _("BUT");
+const u8 gEasyChatWord_However[] = _("HOWEVER");
+const u8 gEasyChatWord_Case[] = _("CASE");
+const u8 gEasyChatWord_The[] = _("THE");
+const u8 gEasyChatWord_Miss[] = _("MISS");
+const u8 gEasyChatWord_How[] = _("HOW");
+const u8 gEasyChatWord_Hit[] = _("HIT");
+const u8 gEasyChatWord_Enough[] = _("ENOUGH");
+const u8 gEasyChatWord_ALot[] = _("A LOT");
+const u8 gEasyChatWord_ALittle[] = _("A LITTLE");
+const u8 gEasyChatWord_Absolutely[] = _("ABSOLUTELY");
+const u8 gEasyChatWord_And[] = _("AND");
+const u8 gEasyChatWord_Only[] = _("ONLY");
+const u8 gEasyChatWord_Around[] = _("AROUND");
+const u8 gEasyChatWord_Probably[] = _("PROBABLY");
+const u8 gEasyChatWord_If[] = _("IF");
+const u8 gEasyChatWord_Very[] = _("VERY");
+const u8 gEasyChatWord_ATinyBit[] = _("A TINY BIT");
+const u8 gEasyChatWord_Wild[] = _("WILD");
+const u8 gEasyChatWord_Thats[] = _("THAT'S");
+const u8 gEasyChatWord_Just[] = _("JUST");
+const u8 gEasyChatWord_EvenSo[] = _("EVEN SO,");
+const u8 gEasyChatWord_MustBe[] = _("MUST BE");
+const u8 gEasyChatWord_Naturally[] = _("NATURALLY");
+const u8 gEasyChatWord_ForNow[] = _("FOR NOW,");
+const u8 gEasyChatWord_Understood[] = _("UNDERSTOOD");
+const u8 gEasyChatWord_Joking[] = _("JOKING");
+const u8 gEasyChatWord_Ready[] = _("READY");
+const u8 gEasyChatWord_Something[] = _("SOMETHING");
+const u8 gEasyChatWord_Somehow[] = _("SOMEHOW");
+const u8 gEasyChatWord_Although[] = _("ALTHOUGH");
+const u8 gEasyChatWord_Also[] = _("ALSO");
+const u8 gEasyChatWord_Perfect[] = _("PERFECT");
+const u8 gEasyChatWord_AsMuchAs[] = _("AS MUCH AS");
+const u8 gEasyChatWord_Really[] = _("REALLY");
+const u8 gEasyChatWord_Truly[] = _("TRULY");
+const u8 gEasyChatWord_Seriously[] = _("SERIOUSLY");
+const u8 gEasyChatWord_Totally[] = _("TOTALLY");
+const u8 gEasyChatWord_Until[] = _("UNTIL");
+const u8 gEasyChatWord_AsIf[] = _("AS IF");
+const u8 gEasyChatWord_Mood[] = _("MOOD");
+const u8 gEasyChatWord_Rather[] = _("RATHER");
+const u8 gEasyChatWord_Awfully[] = _("AWFULLY");
+const u8 gEasyChatWord_Mode[] = _("MODE");
+const u8 gEasyChatWord_More[] = _("MORE");
+const u8 gEasyChatWord_TooLate[] = _("TOO LATE");
+const u8 gEasyChatWord_Finally[] = _("FINALLY");
+const u8 gEasyChatWord_Any[] = _("ANY");
+const u8 gEasyChatWord_Instead[] = _("INSTEAD");
+const u8 gEasyChatWord_Fantastic[] = _("FANTASTIC");
+
+const struct EasyChatWordInfo gEasyChatGroup_Speech[] = {
+ {
+ .text = gEasyChatWord_Listen,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NotVery,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mean,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lie,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lay,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Recommend,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nitwit,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Quite,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_From,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Feeling,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_But,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_However,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Case,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_The,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Miss,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_How,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hit,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Enough,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ALot,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ALittle,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Absolutely,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_And,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Only,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Around,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Probably,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_If,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Very,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ATinyBit,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wild,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thats,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Just,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EvenSo,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MustBe,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Naturally,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ForNow,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Understood,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Joking,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ready,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Something,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Somehow,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Although,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Also,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Perfect,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AsMuchAs,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Really,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Truly,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Seriously,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Totally,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Until,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AsIf,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mood,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rather,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Awfully,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mode,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_More,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_TooLate,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Finally,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Any,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Instead,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fantastic,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_status.h b/src/data/easy_chat/easy_chat_group_status.h
new file mode 100755
index 000000000..d4958c3ad
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_status.h
@@ -0,0 +1,657 @@
+const u8 gEasyChatWord_Dark[] = _("DARK");
+const u8 gEasyChatWord_Stench[] = _("STENCH");
+const u8 gEasyChatWord_ThickFat[] = _("THICK FAT");
+const u8 gEasyChatWord_RainDish[] = _("RAIN DISH");
+const u8 gEasyChatWord_Drizzle[] = _("DRIZZLE");
+const u8 gEasyChatWord_ArenaTrap[] = _("ARENA TRAP");
+const u8 gEasyChatWord_Intimidate[] = _("INTIMIDATE");
+const u8 gEasyChatWord_RockHead[] = _("ROCK HEAD");
+const u8 gEasyChatWord_Color[] = _("COLOR");
+const u8 gEasyChatWord_AltColor[] = _("ALT. COLOR");
+const u8 gEasyChatWord_Rock[] = _("ROCK");
+const u8 gEasyChatWord_Beautiful[] = _("BEAUTIFUL");
+const u8 gEasyChatWord_Beauty[] = _("BEAUTY");
+const u8 gEasyChatWord_AirLock[] = _("AIR LOCK");
+const u8 gEasyChatWord_Psychic[] = _("PSYCHIC");
+const u8 gEasyChatWord_HyperCutter[] = _("HYPER CUTTER");
+const u8 gEasyChatWord_Fighting[] = _("FIGHTING");
+const u8 gEasyChatWord_ShadowTag[] = _("SHADOW TAG");
+const u8 gEasyChatWord_Smart[] = _("SMART");
+const u8 gEasyChatWord_Smartness[] = _("SMARTNESS");
+const u8 gEasyChatWord_SpeedBoost[] = _("SPEED BOOST");
+const u8 gEasyChatWord_Cool[] = _("COOL");
+const u8 gEasyChatWord_Coolness[] = _("COOLNESS");
+const u8 gEasyChatWord_BattleArmor[] = _("BATTLE ARMOR");
+const u8 gEasyChatWord_Cute[] = _("CUTE");
+const u8 gEasyChatWord_Cuteness[] = _("CUTENESS");
+const u8 gEasyChatWord_Sturdy[] = _("STURDY");
+const u8 gEasyChatWord_SuctionCups[] = _("SUCTION CUPS");
+const u8 gEasyChatWord_Grass[] = _("GRASS");
+const u8 gEasyChatWord_ClearBody[] = _("CLEAR BODY");
+const u8 gEasyChatWord_Torrent[] = _("TORRENT");
+const u8 gEasyChatWord_Ghost[] = _("GHOST");
+const u8 gEasyChatWord_Ice[] = _("ICE");
+const u8 gEasyChatWord_Guts[] = _("GUTS");
+const u8 gEasyChatWord_RoughSkin[] = _("ROUGH SKIN");
+const u8 gEasyChatWord_ShellArmor[] = _("SHELL ARMOR");
+const u8 gEasyChatWord_NaturalCure[] = _("NATURAL CURE");
+const u8 gEasyChatWord_Damp[] = _("DAMP");
+const u8 gEasyChatWord_Ground[] = _("GROUND");
+const u8 gEasyChatWord_Limber[] = _("LIMBER");
+const u8 gEasyChatWord_MagnetPull[] = _("MAGNET PULL");
+const u8 gEasyChatWord_WhiteSmoke[] = _("WHITE SMOKE");
+const u8 gEasyChatWord_Synchronize[] = _("SYNCHRONIZE");
+const u8 gEasyChatWord_Overgrow[] = _("OVERGROW");
+const u8 gEasyChatWord_SwiftSwim[] = _("SWIFT SWIM");
+const u8 gEasyChatWord_SandStream[] = _("SAND STREAM");
+const u8 gEasyChatWord_SandVeil[] = _("SAND VEIL");
+const u8 gEasyChatWord_KeenEye[] = _("KEEN EYE");
+const u8 gEasyChatWord_InnerFocus[] = _("INNER FOCUS");
+const u8 gEasyChatWord_Static[] = _("STATIC");
+const u8 gEasyChatWord_Type[] = _("TYPE");
+const u8 gEasyChatWord_Tough[] = _("TOUGH");
+const u8 gEasyChatWord_Toughness[] = _("TOUGHNESS");
+const u8 gEasyChatWord_ShedSkin[] = _("SHED SKIN");
+const u8 gEasyChatWord_HugePower[] = _("HUGE POWER");
+const u8 gEasyChatWord_VoltAbsorb[] = _("VOLT ABSORB");
+const u8 gEasyChatWord_WaterAbsorb[] = _("WATER ABSORB");
+const u8 gEasyChatWord_Electric[] = _("ELECTRIC");
+const u8 gEasyChatWord_Forecast[] = _("FORECAST");
+const u8 gEasyChatWord_SereneGrace[] = _("SERENE GRACE");
+const u8 gEasyChatWord_Poison[] = _("POISON");
+const u8 gEasyChatWord_PoisonPoint[] = _("POISON POINT");
+const u8 gEasyChatWord_Dragon[] = _("DRAGON");
+const u8 gEasyChatWord_Trace[] = _("TRACE");
+const u8 gEasyChatWord_Oblivious[] = _("OBLIVIOUS");
+const u8 gEasyChatWord_Truant[] = _("TRUANT");
+const u8 gEasyChatWord_RunAway[] = _("RUN AWAY");
+const u8 gEasyChatWord_StickyHold[] = _("STICKY HOLD");
+const u8 gEasyChatWord_CloudNine[] = _("CLOUD NINE");
+const u8 gEasyChatWord_Normal[] = _("NORMAL");
+const u8 gEasyChatWord_Steel[] = _("STEEL");
+const u8 gEasyChatWord_Illuminate[] = _("ILLUMINATE");
+const u8 gEasyChatWord_EarlyBird[] = _("EARLY BIRD");
+const u8 gEasyChatWord_Hustle[] = _("HUSTLE");
+const u8 gEasyChatWord_Shine[] = _("SHINE");
+const u8 gEasyChatWord_Flying[] = _("FLYING");
+const u8 gEasyChatWord_Drought[] = _("DROUGHT");
+const u8 gEasyChatWord_Lightningrod[] = _("LIGHTNINGROD");
+const u8 gEasyChatWord_Compoundeyes[] = _("COMPOUNDEYES");
+const u8 gEasyChatWord_MarvelScale[] = _("MARVEL SCALE");
+const u8 gEasyChatWord_WonderGuard[] = _("WONDER GUARD");
+const u8 gEasyChatWord_Insomnia[] = _("INSOMNIA");
+const u8 gEasyChatWord_Levitate[] = _("LEVITATE");
+const u8 gEasyChatWord_Plus[] = _("PLUS");
+const u8 gEasyChatWord_Pressure[] = _("PRESSURE");
+const u8 gEasyChatWord_LiquidOoze[] = _("LIQUID OOZE");
+const u8 gEasyChatWord_ColorChange[] = _("COLOR CHANGE");
+const u8 gEasyChatWord_Soundproof[] = _("SOUNDPROOF");
+const u8 gEasyChatWord_EffectSpore[] = _("EFFECT SPORE");
+const u8 gEasyChatWord_Pkrs[] = _("{PK}RS");
+const u8 gEasyChatWord_Fire[] = _("FIRE");
+const u8 gEasyChatWord_FlameBody[] = _("FLAME BODY");
+const u8 gEasyChatWord_Minus[] = _("MINUS");
+const u8 gEasyChatWord_OwnTempo[] = _("OWN TEMPO");
+const u8 gEasyChatWord_MagmaArmor[] = _("MAGMA ARMOR");
+const u8 gEasyChatWord_Water[] = _("WATER");
+const u8 gEasyChatWord_WaterVeil[] = _("WATER VEIL");
+const u8 gEasyChatWord_Bug[] = _("BUG");
+const u8 gEasyChatWord_Swarm[] = _("SWARM");
+const u8 gEasyChatWord_CuteCharm[] = _("CUTE CHARM");
+const u8 gEasyChatWord_Immunity[] = _("IMMUNITY");
+const u8 gEasyChatWord_Blaze[] = _("BLAZE");
+const u8 gEasyChatWord_Pickup[] = _("PICKUP");
+const u8 gEasyChatWord_Pattern[] = _("PATTERN");
+const u8 gEasyChatWord_FlashFire[] = _("FLASH FIRE");
+const u8 gEasyChatWord_VitalSpirit[] = _("VITAL SPIRIT");
+const u8 gEasyChatWord_Chlorophyll[] = _("CHLOROPHYLL");
+const u8 gEasyChatWord_PurePower[] = _("PURE POWER");
+const u8 gEasyChatWord_ShieldDust[] = _("SHIELD DUST");
+
+const struct EasyChatWordInfo gEasyChatGroup_Status[] = {
+ {
+ .text = gEasyChatWord_Dark,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stench,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ThickFat,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RainDish,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drizzle,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ArenaTrap,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Intimidate,
+ .alphabeticalOrder = 101,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RockHead,
+ .alphabeticalOrder = 97,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Color,
+ .alphabeticalOrder = 106,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AltColor,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Rock,
+ .alphabeticalOrder = 68,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beautiful,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beauty,
+ .alphabeticalOrder = 86,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AirLock,
+ .alphabeticalOrder = 78,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Psychic,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HyperCutter,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fighting,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShadowTag,
+ .alphabeticalOrder = 99,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smart,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Smartness,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SpeedBoost,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cool,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Coolness,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_BattleArmor,
+ .alphabeticalOrder = 76,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cute,
+ .alphabeticalOrder = 72,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cuteness,
+ .alphabeticalOrder = 88,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sturdy,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SuctionCups,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Grass,
+ .alphabeticalOrder = 90,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ClearBody,
+ .alphabeticalOrder = 91,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Torrent,
+ .alphabeticalOrder = 104,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ghost,
+ .alphabeticalOrder = 75,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ice,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Guts,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RoughSkin,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShellArmor,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_NaturalCure,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Damp,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ground,
+ .alphabeticalOrder = 73,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Limber,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MagnetPull,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WhiteSmoke,
+ .alphabeticalOrder = 71,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Synchronize,
+ .alphabeticalOrder = 100,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Overgrow,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SwiftSwim,
+ .alphabeticalOrder = 81,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SandStream,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SandVeil,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_KeenEye,
+ .alphabeticalOrder = 82,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_InnerFocus,
+ .alphabeticalOrder = 77,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Static,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Type,
+ .alphabeticalOrder = 85,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tough,
+ .alphabeticalOrder = 94,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Toughness,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShedSkin,
+ .alphabeticalOrder = 79,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HugePower,
+ .alphabeticalOrder = 92,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_VoltAbsorb,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WaterAbsorb,
+ .alphabeticalOrder = 69,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Electric,
+ .alphabeticalOrder = 64,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forecast,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SereneGrace,
+ .alphabeticalOrder = 93,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Poison,
+ .alphabeticalOrder = 103,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PoisonPoint,
+ .alphabeticalOrder = 102,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dragon,
+ .alphabeticalOrder = 89,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trace,
+ .alphabeticalOrder = 83,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oblivious,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Truant,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_RunAway,
+ .alphabeticalOrder = 84,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_StickyHold,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CloudNine,
+ .alphabeticalOrder = 107,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Normal,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Steel,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Illuminate,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EarlyBird,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hustle,
+ .alphabeticalOrder = 66,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shine,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flying,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Drought,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lightningrod,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Compoundeyes,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MarvelScale,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WonderGuard,
+ .alphabeticalOrder = 108,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Insomnia,
+ .alphabeticalOrder = 74,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Levitate,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Plus,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pressure,
+ .alphabeticalOrder = 87,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_LiquidOoze,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ColorChange,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Soundproof,
+ .alphabeticalOrder = 70,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EffectSpore,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pkrs,
+ .alphabeticalOrder = 67,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fire,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_FlameBody,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Minus,
+ .alphabeticalOrder = 98,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OwnTempo,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MagmaArmor,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Water,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WaterVeil,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bug,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Swarm,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_CuteCharm,
+ .alphabeticalOrder = 63,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Immunity,
+ .alphabeticalOrder = 65,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Blaze,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pickup,
+ .alphabeticalOrder = 105,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pattern,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_FlashFire,
+ .alphabeticalOrder = 95,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_VitalSpirit,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Chlorophyll,
+ .alphabeticalOrder = 96,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_PurePower,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ShieldDust,
+ .alphabeticalOrder = 80,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_time.h b/src/data/easy_chat/easy_chat_group_time.h
new file mode 100755
index 000000000..691dde70c
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_time.h
@@ -0,0 +1,273 @@
+const u8 gEasyChatWord_Fall[] = _("FALL");
+const u8 gEasyChatWord_Morning[] = _("MORNING");
+const u8 gEasyChatWord_Tomorrow[] = _("TOMORROW");
+const u8 gEasyChatWord_Last[] = _("LAST");
+const u8 gEasyChatWord_Day[] = _("DAY");
+const u8 gEasyChatWord_Sometime[] = _("SOMETIME");
+const u8 gEasyChatWord_Always[] = _("ALWAYS");
+const u8 gEasyChatWord_Current[] = _("CURRENT");
+const u8 gEasyChatWord_Forever[] = _("FOREVER");
+const u8 gEasyChatWord_Days[] = _("DAYS");
+const u8 gEasyChatWord_End[] = _("END");
+const u8 gEasyChatWord_Tuesday[] = _("TUESDAY");
+const u8 gEasyChatWord_Yesterday[] = _("YESTERDAY");
+const u8 gEasyChatWord_Today[] = _("TODAY");
+const u8 gEasyChatWord_Friday[] = _("FRIDAY");
+const u8 gEasyChatWord_Monday[] = _("MONDAY");
+const u8 gEasyChatWord_Later[] = _("LATER");
+const u8 gEasyChatWord_Earlier[] = _("EARLIER");
+const u8 gEasyChatWord_Another[] = _("ANOTHER");
+const u8 gEasyChatWord_Time[] = _("TIME");
+const u8 gEasyChatWord_Finish[] = _("FINISH");
+const u8 gEasyChatWord_Wednesday[] = _("WEDNESDAY");
+const u8 gEasyChatWord_Soon[] = _("SOON");
+const u8 gEasyChatWord_Start[] = _("START");
+const u8 gEasyChatWord_Month[] = _("MONTH");
+const u8 gEasyChatWord_Stop[] = _("STOP");
+const u8 gEasyChatWord_Now[] = _("NOW");
+const u8 gEasyChatWord_Final[] = _("FINAL");
+const u8 gEasyChatWord_Next[] = _("NEXT");
+const u8 gEasyChatWord_Age[] = _("AGE");
+const u8 gEasyChatWord_Saturday[] = _("SATURDAY");
+const u8 gEasyChatWord_Summer[] = _("SUMMER");
+const u8 gEasyChatWord_Sunday[] = _("SUNDAY");
+const u8 gEasyChatWord_Beginning[] = _("BEGINNING");
+const u8 gEasyChatWord_Spring[] = _("SPRING");
+const u8 gEasyChatWord_Daytime[] = _("DAYTIME");
+const u8 gEasyChatWord_Winter[] = _("WINTER");
+const u8 gEasyChatWord_Daily[] = _("DAILY");
+const u8 gEasyChatWord_Olden[] = _("OLDEN");
+const u8 gEasyChatWord_Almost[] = _("ALMOST");
+const u8 gEasyChatWord_Nearly[] = _("NEARLY");
+const u8 gEasyChatWord_Thursday[] = _("THURSDAY");
+const u8 gEasyChatWord_Nighttime[] = _("NIGHTTIME");
+const u8 gEasyChatWord_Night[] = _("NIGHT");
+const u8 gEasyChatWord_Week[] = _("WEEK");
+
+const struct EasyChatWordInfo gEasyChatGroup_Time[] = {
+ {
+ .text = gEasyChatWord_Fall,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Morning,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tomorrow,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Last,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Day,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sometime,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Always,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Current,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Forever,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Days,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_End,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tuesday,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yesterday,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Today,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Friday,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Monday,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Later,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Earlier,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Another,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Time,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Finish,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wednesday,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Soon,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Start,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Month,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Stop,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Now,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Final,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Next,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Age,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Saturday,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Summer,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sunday,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Beginning,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Spring,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daytime,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Winter,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Daily,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Olden,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Almost,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nearly,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Thursday,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nighttime,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Night,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Week,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_trainer.h b/src/data/easy_chat/easy_chat_group_trainer.h
new file mode 100755
index 000000000..a4e1ddfd6
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_trainer.h
@@ -0,0 +1,165 @@
+const u8 gEasyChatWord_IChooseYou[] = _("I CHOOSE YOU");
+const u8 gEasyChatWord_Gotcha[] = _("GOTCHA");
+const u8 gEasyChatWord_Trade[] = _("TRADE");
+const u8 gEasyChatWord_Sapphire[] = _("SAPPHIRE");
+const u8 gEasyChatWord_Evolve[] = _("EVOLVE");
+const u8 gEasyChatWord_Encyclopedia[] = _("ENCYCLOPEDIA");
+const u8 gEasyChatWord_Nature[] = _("NATURE");
+const u8 gEasyChatWord_Center[] = _("CENTER");
+const u8 gEasyChatWord_Egg[] = _("EGG");
+const u8 gEasyChatWord_Link[] = _("LINK");
+const u8 gEasyChatWord_SpAbility[] = _("SP. ABILITY");
+const u8 gEasyChatWord_Trainer[] = _("TRAINER");
+const u8 gEasyChatWord_Version[] = _("VERSION");
+const u8 gEasyChatWord_Pokenav[] = _("POKéNAV");
+const u8 gEasyChatWord_Pokemon[] = _("POKéMON");
+const u8 gEasyChatWord_Get[] = _("GET");
+const u8 gEasyChatWord_Pokedex[] = _("POKéDEX");
+const u8 gEasyChatWord_Ruby[] = _("RUBY");
+const u8 gEasyChatWord_Level[] = _("LEVEL");
+const u8 gEasyChatWord_Red[] = _("RED");
+const u8 gEasyChatWord_Green[] = _("GREEN");
+const u8 gEasyChatWord_Bag[] = _("BAG");
+const u8 gEasyChatWord_Flame[] = _("FLAME");
+const u8 gEasyChatWord_Gold[] = _("GOLD");
+const u8 gEasyChatWord_Leaf[] = _("LEAF");
+const u8 gEasyChatWord_Silver[] = _("SILVER");
+const u8 gEasyChatWord_Emerald[] = _("EMERALD");
+
+const struct EasyChatWordInfo gEasyChatGroup_Trainer[] = {
+ {
+ .text = gEasyChatWord_IChooseYou,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gotcha,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trade,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sapphire,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Evolve,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Encyclopedia,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nature,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Center,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Egg,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Link,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SpAbility,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Trainer,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Version,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokenav,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokemon,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Get,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Pokedex,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ruby,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Level,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Red,
+ .alphabeticalOrder = 19,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Green,
+ .alphabeticalOrder = 17,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Bag,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flame,
+ .alphabeticalOrder = 25,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Gold,
+ .alphabeticalOrder = 10,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Leaf,
+ .alphabeticalOrder = 2,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Silver,
+ .alphabeticalOrder = 11,
+ .enabled = FALSE,
+ },
+ {
+ .text = gEasyChatWord_Emerald,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_trendy_saying.h b/src/data/easy_chat/easy_chat_group_trendy_saying.h
new file mode 100755
index 000000000..46ce1201a
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_trendy_saying.h
@@ -0,0 +1,201 @@
+const u8 gEasyChatWord_KthxBye[] = _("KTHX, BYE.");
+const u8 gEasyChatWord_YesSirExcl[] = _("YES, SIR!");
+const u8 gEasyChatWord_AvantGarde[] = _("AVANT GARDE");
+const u8 gEasyChatWord_Couple[] = _("COUPLE");
+const u8 gEasyChatWord_MuchObliged[] = _("MUCH OBLIGED");
+const u8 gEasyChatWord_YeehawExcl[] = _("YEEHAW!");
+const u8 gEasyChatWord_Mega[] = _("MEGA");
+const u8 gEasyChatWord_1HitKOExcl[] = _("1-HIT KO!");
+const u8 gEasyChatWord_Destiny[] = _("DESTINY");
+const u8 gEasyChatWord_Cancel[] = _("CANCEL");
+const u8 gEasyChatWord_New[] = _("NEW");
+const u8 gEasyChatWord_Flatten[] = _("FLATTEN");
+const u8 gEasyChatWord_Kidding[] = _("KIDDING");
+const u8 gEasyChatWord_Loser[] = _("LOSER");
+const u8 gEasyChatWord_Losing[] = _("LOSING");
+const u8 gEasyChatWord_Happening[] = _("HAPPENING");
+const u8 gEasyChatWord_HipAnd[] = _("HIP AND");
+const u8 gEasyChatWord_Shake[] = _("SHAKE");
+const u8 gEasyChatWord_Shady[] = _("SHADY");
+const u8 gEasyChatWord_Upbeat[] = _("UPBEAT");
+const u8 gEasyChatWord_Modern[] = _("MODERN");
+const u8 gEasyChatWord_SmellYa[] = _("SMELL YA");
+const u8 gEasyChatWord_Bang[] = _("BANG");
+const u8 gEasyChatWord_Knockout[] = _("KNOCKOUT");
+const u8 gEasyChatWord_Hassle[] = _("HASSLE");
+const u8 gEasyChatWord_Winner[] = _("WINNER");
+const u8 gEasyChatWord_Fever[] = _("FEVER");
+const u8 gEasyChatWord_Wannabe[] = _("WANNABE");
+const u8 gEasyChatWord_Baby[] = _("BABY");
+const u8 gEasyChatWord_Heart[] = _("HEART");
+const u8 gEasyChatWord_Old[] = _("OLD");
+const u8 gEasyChatWord_Young[] = _("YOUNG");
+const u8 gEasyChatWord_Ugly[] = _("UGLY");
+
+const struct EasyChatWordInfo gEasyChatGroup_TrendySaying[] = {
+ {
+ .text = gEasyChatWord_KthxBye,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YesSirExcl,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_AvantGarde,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Couple,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_MuchObliged,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_YeehawExcl,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mega,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_1HitKOExcl,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Destiny,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cancel,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_New,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Flatten,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Kidding,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Loser,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Losing,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Happening,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_HipAnd,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shake,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shady,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Upbeat,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Modern,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_SmellYa,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Bang,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Knockout,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hassle,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Winner,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fever,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wannabe,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Baby,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heart,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Old,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Young,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ugly,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_group_voices.h b/src/data/easy_chat/easy_chat_group_voices.h
new file mode 100755
index 000000000..6dad874ec
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_group_voices.h
@@ -0,0 +1,381 @@
+const u8 gEasyChatWord_Excl[] = _("!");
+const u8 gEasyChatWord_ExclExcl[] = _("!!");
+const u8 gEasyChatWord_QuesExcl[] = _("?!");
+const u8 gEasyChatWord_Ques[] = _("?");
+const u8 gEasyChatWord_Ellipsis[] = _("…");
+const u8 gEasyChatWord_EllipsisExcl[] = _("…!");
+const u8 gEasyChatWord_EllipsisEllipsisEllipsis[] = _("………");
+const u8 gEasyChatWord_Dash[] = _("-");
+const u8 gEasyChatWord_DashDashDash[] = _("- - -");
+const u8 gEasyChatWord_UhOh[] = _("UH-OH");
+const u8 gEasyChatWord_Waaah[] = _("WAAAH");
+const u8 gEasyChatWord_Ahaha[] = _("AHAHA");
+const u8 gEasyChatWord_OhQues[] = _("OH?");
+const u8 gEasyChatWord_Nope[] = _("NOPE");
+const u8 gEasyChatWord_Urgh[] = _("URGH");
+const u8 gEasyChatWord_Hmm[] = _("HMM");
+const u8 gEasyChatWord_Whoah[] = _("WHOAH");
+const u8 gEasyChatWord_WroooaarExcl[] = _("WROOOAAR!");
+const u8 gEasyChatWord_Wow[] = _("WOW");
+const u8 gEasyChatWord_Giggle[] = _("GIGGLE");
+const u8 gEasyChatWord_Sigh[] = _("SIGH");
+const u8 gEasyChatWord_Unbelievable[] = _("UNBELIEVABLE");
+const u8 gEasyChatWord_Cries[] = _("CRIES");
+const u8 gEasyChatWord_Agree[] = _("AGREE");
+const u8 gEasyChatWord_EhQues[] = _("EH?");
+const u8 gEasyChatWord_Cry[] = _("CRY");
+const u8 gEasyChatWord_Ehehe[] = _("EHEHE");
+const u8 gEasyChatWord_OiOiOi[] = _("OI, OI, OI");
+const u8 gEasyChatWord_OhYeah[] = _("OH, YEAH");
+const u8 gEasyChatWord_Oh[] = _("OH");
+const u8 gEasyChatWord_Oops[] = _("OOPS");
+const u8 gEasyChatWord_Shocked[] = _("SHOCKED");
+const u8 gEasyChatWord_Eek[] = _("EEK");
+const u8 gEasyChatWord_Graaah[] = _("GRAAAH");
+const u8 gEasyChatWord_Gwahahaha[] = _("GWAHAHAHA");
+const u8 gEasyChatWord_Way[] = _("WAY");
+const u8 gEasyChatWord_Tch[] = _("TCH");
+const u8 gEasyChatWord_Hehe[] = _("HEHE");
+const u8 gEasyChatWord_Hah[] = _("HAH");
+const u8 gEasyChatWord_Yup[] = _("YUP");
+const u8 gEasyChatWord_Hahaha[] = _("HAHAHA");
+const u8 gEasyChatWord_Aiyeeh[] = _("AIYEEH");
+const u8 gEasyChatWord_Hiyah[] = _("HIYAH");
+const u8 gEasyChatWord_Fufufu[] = _("FUFUFU");
+const u8 gEasyChatWord_Lol[] = _("LOL");
+const u8 gEasyChatWord_Snort[] = _("SNORT");
+const u8 gEasyChatWord_Humph[] = _("HUMPH");
+const u8 gEasyChatWord_Hehehe[] = _("HEHEHE");
+const u8 gEasyChatWord_Heh[] = _("HEH");
+const u8 gEasyChatWord_Hohoho[] = _("HOHOHO");
+const u8 gEasyChatWord_UhHuh[] = _("UH-HUH");
+const u8 gEasyChatWord_OhDear[] = _("OH, DEAR");
+const u8 gEasyChatWord_Arrgh[] = _("ARRGH");
+const u8 gEasyChatWord_Mufufu[] = _("MUFUFU");
+const u8 gEasyChatWord_Mmm[] = _("MMM");
+const u8 gEasyChatWord_OhKay[] = _("OH-KAY");
+const u8 gEasyChatWord_Okay[] = _("OKAY");
+const u8 gEasyChatWord_Lalala[] = _("LALALA");
+const u8 gEasyChatWord_Yay[] = _("YAY");
+const u8 gEasyChatWord_Aww[] = _("AWW");
+const u8 gEasyChatWord_Wowee[] = _("WOWEE");
+const u8 gEasyChatWord_Gwah[] = _("GWAH");
+const u8 gEasyChatWord_Wahahaha[] = _("WAHAHAHA");
+
+const struct EasyChatWordInfo gEasyChatGroup_Voices[] = {
+ {
+ .text = gEasyChatWord_Excl,
+ .alphabeticalOrder = 0,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_ExclExcl,
+ .alphabeticalOrder = 1,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_QuesExcl,
+ .alphabeticalOrder = 7,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ques,
+ .alphabeticalOrder = 8,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ellipsis,
+ .alphabeticalOrder = 4,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EllipsisExcl,
+ .alphabeticalOrder = 5,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EllipsisEllipsisEllipsis,
+ .alphabeticalOrder = 6,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Dash,
+ .alphabeticalOrder = 3,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_DashDashDash,
+ .alphabeticalOrder = 2,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UhOh,
+ .alphabeticalOrder = 23,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Waaah,
+ .alphabeticalOrder = 11,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ahaha,
+ .alphabeticalOrder = 41,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhQues,
+ .alphabeticalOrder = 52,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Nope,
+ .alphabeticalOrder = 59,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Urgh,
+ .alphabeticalOrder = 22,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hmm,
+ .alphabeticalOrder = 25,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Whoah,
+ .alphabeticalOrder = 32,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_WroooaarExcl,
+ .alphabeticalOrder = 24,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wow,
+ .alphabeticalOrder = 26,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Giggle,
+ .alphabeticalOrder = 43,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Sigh,
+ .alphabeticalOrder = 19,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Unbelievable,
+ .alphabeticalOrder = 33,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cries,
+ .alphabeticalOrder = 61,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Agree,
+ .alphabeticalOrder = 34,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_EhQues,
+ .alphabeticalOrder = 38,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Cry,
+ .alphabeticalOrder = 40,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Ehehe,
+ .alphabeticalOrder = 48,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OiOiOi,
+ .alphabeticalOrder = 37,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhYeah,
+ .alphabeticalOrder = 47,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oh,
+ .alphabeticalOrder = 42,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Oops,
+ .alphabeticalOrder = 15,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Shocked,
+ .alphabeticalOrder = 49,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Eek,
+ .alphabeticalOrder = 46,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Graaah,
+ .alphabeticalOrder = 57,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gwahahaha,
+ .alphabeticalOrder = 44,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Way,
+ .alphabeticalOrder = 54,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Tch,
+ .alphabeticalOrder = 53,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hehe,
+ .alphabeticalOrder = 13,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hah,
+ .alphabeticalOrder = 29,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yup,
+ .alphabeticalOrder = 51,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hahaha,
+ .alphabeticalOrder = 28,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aiyeeh,
+ .alphabeticalOrder = 55,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hiyah,
+ .alphabeticalOrder = 12,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Fufufu,
+ .alphabeticalOrder = 27,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lol,
+ .alphabeticalOrder = 56,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Snort,
+ .alphabeticalOrder = 30,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Humph,
+ .alphabeticalOrder = 31,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hehehe,
+ .alphabeticalOrder = 20,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Heh,
+ .alphabeticalOrder = 45,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Hohoho,
+ .alphabeticalOrder = 36,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_UhHuh,
+ .alphabeticalOrder = 50,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhDear,
+ .alphabeticalOrder = 9,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Arrgh,
+ .alphabeticalOrder = 21,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mufufu,
+ .alphabeticalOrder = 14,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Mmm,
+ .alphabeticalOrder = 10,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_OhKay,
+ .alphabeticalOrder = 62,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Okay,
+ .alphabeticalOrder = 35,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Lalala,
+ .alphabeticalOrder = 16,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Yay,
+ .alphabeticalOrder = 18,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Aww,
+ .alphabeticalOrder = 60,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wowee,
+ .alphabeticalOrder = 17,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Gwah,
+ .alphabeticalOrder = 58,
+ .enabled = TRUE,
+ },
+ {
+ .text = gEasyChatWord_Wahahaha,
+ .alphabeticalOrder = 39,
+ .enabled = TRUE,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_groups.h b/src/data/easy_chat/easy_chat_groups.h
new file mode 100755
index 000000000..df114d980
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_groups.h
@@ -0,0 +1,137 @@
+#include "easy_chat.h"
+
+#include "easy_chat_group_pokemon.h"
+#include "easy_chat_group_trainer.h"
+#include "easy_chat_group_status.h"
+#include "easy_chat_group_battle.h"
+#include "easy_chat_group_greetings.h"
+#include "easy_chat_group_people.h"
+#include "easy_chat_group_voices.h"
+#include "easy_chat_group_speech.h"
+#include "easy_chat_group_endings.h"
+#include "easy_chat_group_feelings.h"
+#include "easy_chat_group_conditions.h"
+#include "easy_chat_group_actions.h"
+#include "easy_chat_group_lifestyle.h"
+#include "easy_chat_group_hobbies.h"
+#include "easy_chat_group_time.h"
+#include "easy_chat_group_misc.h"
+#include "easy_chat_group_adjectives.h"
+#include "easy_chat_group_events.h"
+#include "easy_chat_group_move_1.h"
+#include "easy_chat_group_move_2.h"
+#include "easy_chat_group_trendy_saying.h"
+#include "easy_chat_group_pokemon2.h"
+
+const struct EasyChatGroup gEasyChatGroups[] = {
+ {
+ .wordData = {.valueList = gEasyChatGroup_Pokemon},
+ .numWords = 202,
+ .numEnabledWords = 202,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Trainer},
+ .numWords = 27,
+ .numEnabledWords = 21,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Status},
+ .numWords = 109,
+ .numEnabledWords = 109,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Battle},
+ .numWords = 63,
+ .numEnabledWords = 63,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Greetings},
+ .numWords = 42,
+ .numEnabledWords = 42,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_People},
+ .numWords = 75,
+ .numEnabledWords = 75,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Voices},
+ .numWords = 63,
+ .numEnabledWords = 63,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Speech},
+ .numWords = 60,
+ .numEnabledWords = 60,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Endings},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Feelings},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Conditions},
+ .numWords = 69,
+ .numEnabledWords = 69,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Actions},
+ .numWords = 78,
+ .numEnabledWords = 78,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Lifestyle},
+ .numWords = 45,
+ .numEnabledWords = 45,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Hobbies},
+ .numWords = 54,
+ .numEnabledWords = 54,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Time},
+ .numWords = 45,
+ .numEnabledWords = 45,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Misc},
+ .numWords = 42,
+ .numEnabledWords = 42,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Adjectives},
+ .numWords = 36,
+ .numEnabledWords = 36,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_Events},
+ .numWords = 29,
+ .numEnabledWords = 29,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Move1},
+ .numWords = 154,
+ .numEnabledWords = 154,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Move2},
+ .numWords = 200,
+ .numEnabledWords = 200,
+ },
+ {
+ .wordData = {.words = gEasyChatGroup_TrendySaying},
+ .numWords = 33,
+ .numEnabledWords = 33,
+ },
+ {
+ .wordData = {.valueList = gEasyChatGroup_Pokemon2},
+ .numWords = 251,
+ .numEnabledWords = 251,
+ },
+};
diff --git a/src/data/easy_chat/easy_chat_words_by_letter.h b/src/data/easy_chat/easy_chat_words_by_letter.h
new file mode 100755
index 000000000..927b9db2f
--- /dev/null
+++ b/src/data/easy_chat/easy_chat_words_by_letter.h
@@ -0,0 +1,2750 @@
+#include "easy_chat.h"
+#include "constants/easy_chat.h"
+
+const u16 gEasyChatWordsByLetter_Others[] = {
+ EC_WORD_EXCL,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_DASH,
+ EC_WORD_DASH_DASH_DASH,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_ELLIPSIS_EXCL,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_1_HIT_KO_EXCL,
+ EC_WORD_QUES,
+ EC_WORD_QUES_EXCL,
+};
+
+const u16 gEasyChatWordsByLetter_A[] = {
+ EC_WORD_A,
+ EC_WORD_A_LITTLE,
+ EC_WORD_A_LOT,
+ EC_WORD_A_TINY_BIT,
+ EC_WORD_ABOUT,
+ EC_WORD_ABOVE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ABRA),
+ EC_POKEMON2(ABRA),
+ EC_WORD_ABSENT,
+ EC_POKEMON(ABSOL),
+ EC_WORD_ABSOLUTELY,
+ EC_MOVE(ABSORB),
+ EC_WORD_ACCEPT,
+ EC_MOVE2(ACID),
+ EC_MOVE2(ACID_ARMOR),
+ EC_WORD_ADORE,
+ EC_WORD_ADULT,
+ EC_WORD_ADVENTURE,
+ EC_MOVE2(AERIAL_ACE),
+ EC_MOVE(AEROBLAST),
+ EC_POKEMON2(AERODACTYL),
+ EC_WORD_AFTER,
+ EC_WORD_AGE,
+ EC_POKEMON(AGGRON),
+ EC_MOVE(AGILITY),
+ EC_WORD_AGREE,
+ EC_WORD_AHAHA,
+ EC_WORD_AIM,
+ EC_POKEMON2(AIPOM),
+ EC_MOVE(AIR_CUTTER),
+ EC_WORD_AIR_LOCK,
+ EC_WORD_AIYEEH,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(ALAKAZAM),
+ EC_WORD_ALL,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_ALLOW,
+ EC_WORD_ALLOWANCE,
+ EC_WORD_ALLY,
+ EC_WORD_ALMOST,
+ EC_WORD_ALONE,
+ EC_WORD_ALSO,
+ EC_WORD_ALT_COLOR,
+ EC_POKEMON(ALTARIA),
+ EC_WORD_ALTHOUGH,
+ EC_WORD_ALWAYS,
+ EC_WORD_AM,
+ EC_MOVE2(AMNESIA),
+ EC_POKEMON2(AMPHAROS),
+ EC_WORD_AMUSING,
+ EC_WORD_AN,
+ EC_MOVE(ANCIENT_POWER),
+ EC_WORD_AND,
+ EC_WORD_ANGER,
+ EC_WORD_ANGERS,
+ EC_WORD_ANGRY,
+ EC_WORD_ANIME,
+ EC_POKEMON(ANORITH),
+ EC_WORD_ANOTHER,
+ EC_WORD_ANTICIPATION,
+ EC_WORD_ANY,
+ EC_WORD_ANYWHERE,
+ EC_WORD_APOLOGIZE,
+ EC_WORD_APPEAL,
+ EC_WORD_APPEAR,
+ EC_WORD_APPEARS,
+ EC_WORD_APPRECIATE,
+ EC_WORD_APPROVED,
+ EC_POKEMON2(ARBOK),
+ EC_POKEMON2(ARCANINE),
+ EC_WORD_ARE,
+ EC_WORD_AREN_T,
+ EC_WORD_ARENA_TRAP,
+ EC_POKEMON2(ARIADOS),
+ EC_MOVE2(ARM_THRUST),
+ EC_POKEMON(ARMALDO),
+ EC_MOVE(AROMATHERAPY),
+ EC_POKEMON(ARON),
+ EC_WORD_AROUND,
+ EC_WORD_ARRGH,
+ EC_POKEMON2(ARTICUNO),
+ EC_WORD_AS,
+ EC_WORD_AS_IF,
+ EC_WORD_AS_MUCH_AS,
+ EC_MOVE2(ASSIST),
+ EC_MOVE(ASTONISH),
+ EC_WORD_AT,
+ EC_WORD_ATTACK,
+ EC_MOVE2(ATTRACT),
+ EC_WORD_AUNT,
+ EC_MOVE(AURORA_BEAM),
+ EC_WORD_AVANT_GARDE,
+ EC_WORD_AWAY,
+ EC_WORD_AWESOME,
+ EC_WORD_AWFUL,
+ EC_WORD_AWFULLY,
+ EC_WORD_AWW,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(AZUMARILL),
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZURILL),
+};
+
+const u16 gEasyChatWordsByLetter_B[] = {
+ EC_WORD_BABE,
+ EC_WORD_BABY,
+ EC_WORD_BACK,
+ EC_WORD_BAD,
+ EC_WORD_BADLY,
+ EC_WORD_BAG,
+ EC_POKEMON(BAGON),
+ EC_WORD_BALL,
+ EC_POKEMON(BALTOY),
+ EC_POKEMON(BANETTE),
+ EC_WORD_BANG,
+ EC_POKEMON(BARBOACH),
+ EC_MOVE2(BARRAGE),
+ EC_MOVE2(BARRIER),
+ EC_WORD_BATH,
+ EC_MOVE2(BATON_PASS),
+ EC_WORD_BATTLE,
+ EC_WORD_BATTLE_ARMOR,
+ EC_WORD_BATTLE_ROOM,
+ EC_WORD_BATTLE_TOWER,
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_BE,
+ EC_WORD_BEAT,
+ EC_MOVE2(BEAT_UP),
+ EC_POKEMON(BEAUTIFLY),
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_BEAUTY,
+ EC_WORD_BECOMES,
+ EC_POKEMON2(BEEDRILL),
+ EC_WORD_BEEN,
+ EC_WORD_BEFORE,
+ EC_WORD_BEGINNING,
+ EC_WORD_BEING,
+ EC_POKEMON(BELDUM),
+ EC_WORD_BELIEVE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(BELLOSSOM),
+ EC_POKEMON2(BELLOSSOM),
+ EC_POKEMON2(BELLSPROUT),
+ EC_MOVE2(BELLY_DRUM),
+ EC_WORD_BELONGS_TO,
+ EC_WORD_BELOW,
+ EC_WORD_BERRY,
+ EC_WORD_BESIDE,
+ EC_WORD_BEST,
+ EC_WORD_BETTER,
+ EC_MOVE(BIDE),
+ EC_WORD_BIG,
+ EC_WORD_BIKE,
+ EC_MOVE(BIND),
+ EC_MOVE(BITE),
+ EC_MOVE2(BLAST_BURN),
+ EC_POKEMON2(BLASTOISE),
+ EC_WORD_BLAZE,
+ EC_MOVE2(BLAZE_KICK),
+ EC_POKEMON(BLAZIKEN),
+ EC_WORD_BLEND,
+ EC_POKEMON2(BLISSEY),
+ EC_MOVE2(BLIZZARD),
+ EC_MOVE2(BLOCK),
+ EC_WORD_BOARD,
+ EC_MOVE2(BODY_SLAM),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONE_RUSH),
+ EC_MOVE2(BONEMERANG),
+ EC_WORD_BOOK,
+ EC_WORD_BORED,
+ EC_WORD_BORING,
+ EC_MOVE2(BOUNCE),
+ EC_WORD_BOY,
+ EC_WORD_BRAG,
+ EC_WORD_BREAK,
+ EC_POKEMON(BRELOOM),
+ EC_MOVE(BRICK_BREAK),
+ EC_WORD_BROTHER,
+ EC_MOVE(BUBBLE),
+ EC_MOVE2(BUBBLE_BEAM),
+ EC_WORD_BUG,
+ EC_POKEMON2(BULBASAUR),
+ EC_MOVE2(BULK_UP),
+ EC_MOVE2(BULLET_SEED),
+ EC_WORD_BUSY,
+ EC_WORD_BUT,
+ EC_POKEMON2(BUTTERFREE),
+ EC_WORD_BYE_BYE,
+};
+
+const u16 gEasyChatWordsByLetter_C[] = {
+ EC_POKEMON(CACNEA),
+ EC_POKEMON(CACTURNE),
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_CAME,
+ EC_WORD_CAMERA,
+ EC_POKEMON(CAMERUPT),
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_CAN,
+ EC_WORD_CAN_WIN,
+ EC_WORD_CAN_T,
+ EC_WORD_CAN_T_WIN,
+ EC_WORD_CANCEL,
+ EC_WORD_CAPABLE,
+ EC_WORD_CARDS,
+ EC_WORD_CARE,
+ EC_WORD_CARES,
+ EC_POKEMON(CARVANHA),
+ EC_POKEMON(CASCOON),
+ EC_WORD_CASE,
+ EC_POKEMON(CASTFORM),
+ EC_POKEMON2(CATERPIE),
+ EC_WORD_CAUSE,
+ EC_POKEMON2(CELEBI),
+ EC_WORD_CENTER,
+ EC_WORD_CHALLENGE,
+ EC_WORD_CHANGE,
+ EC_WORD_CHANNEL,
+ EC_POKEMON2(CHANSEY),
+ EC_MOVE(CHARGE),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE(CHARM),
+ EC_POKEMON2(CHARMANDER),
+ EC_POKEMON2(CHARMELEON),
+ EC_WORD_CHAT,
+ EC_POKEMON2(CHIKORITA),
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_CHILDREN,
+ EC_POKEMON(CHIMECHO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CHINCHOU),
+ EC_POKEMON2(CHINCHOU),
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_CHOICE,
+ EC_WORD_CHOOSE,
+ EC_WORD_CHORES,
+ EC_MOVE(CLAMP),
+ EC_POKEMON(CLAMPERL),
+ EC_WORD_CLASS,
+ EC_POKEMON(CLAYDOL),
+ EC_WORD_CLEAR_BODY,
+ EC_POKEMON2(CLEFABLE),
+ EC_POKEMON2(CLEFAIRY),
+ EC_POKEMON2(CLEFFA),
+ EC_WORD_CLOSE,
+ EC_WORD_CLOUD_NINE,
+ EC_POKEMON2(CLOYSTER),
+ EC_WORD_COLD,
+ EC_WORD_COLLECT,
+ EC_WORD_COLLECTION,
+ EC_WORD_COLOR,
+ EC_WORD_COLOR_CHANGE,
+ EC_POKEMON(COMBUSKEN),
+ EC_WORD_COME,
+ EC_WORD_COME_ON,
+ EC_WORD_COME_OVER,
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_COMICS,
+ EC_WORD_COMMEMORATE,
+ EC_WORD_COMPLETE,
+ EC_WORD_COMPOUNDEYES,
+ EC_WORD_CONCEDE,
+ EC_MOVE(CONFUSE_RAY),
+ EC_WORD_CONFUSED,
+ EC_MOVE2(CONFUSION),
+ EC_WORD_CONGRATS,
+ EC_MOVE(CONSTRICT),
+ EC_WORD_CONTEST,
+ EC_WORD_CONVERSATION,
+ EC_MOVE2(CONVERSION),
+ EC_MOVE2(CONVERSION_2),
+ EC_WORD_COOL,
+ EC_WORD_COOLNESS,
+ EC_POKEMON(CORPHISH),
+ EC_WORD_CORRECT,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CORSOLA),
+ EC_POKEMON2(CORSOLA),
+ EC_MOVE(COSMIC_POWER),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_COULD,
+ EC_WORD_COULDN_T,
+ EC_WORD_COUNT_ON,
+ EC_MOVE(COUNTER),
+ EC_WORD_COUPLE,
+ EC_MOVE2(COVET),
+ EC_MOVE(CRABHAMMER),
+ EC_POKEMON(CRADILY),
+ EC_POKEMON(CRAWDAUNT),
+ EC_WORD_CRIES,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(CROBAT),
+ EC_POKEMON2(CROBAT),
+ EC_POKEMON2(CROCONAW),
+ EC_MOVE(CROSS_CHOP),
+ EC_MOVE(CRUNCH),
+ EC_WORD_CRUSH,
+ EC_MOVE2(CRUSH_CLAW),
+ EC_WORD_CRY,
+ EC_POKEMON2(CUBONE),
+ EC_WORD_CURRENT,
+ EC_MOVE2(CURSE),
+ EC_MOVE(CUT),
+ EC_WORD_CUTE,
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_CUTENESS,
+ EC_POKEMON2(CYNDAQUIL),
+};
+
+const u16 gEasyChatWordsByLetter_D[] = {
+ EC_WORD_DAILY,
+ EC_WORD_DAMP,
+ EC_WORD_DANCE,
+ EC_WORD_DANGER,
+ EC_WORD_DARK,
+ EC_WORD_DARN,
+ EC_WORD_DATE,
+ EC_WORD_DAUGHTER,
+ EC_WORD_DAY,
+ EC_WORD_DAYS,
+ EC_WORD_DAYTIME,
+ EC_WORD_DECIDE,
+ EC_WORD_DECIDED,
+ EC_WORD_DEEP,
+ EC_WORD_DEFEATED,
+ EC_MOVE2(DEFENSE_CURL),
+ EC_POKEMON(DELCATTY),
+ EC_POKEMON2(DELIBIRD),
+ EC_POKEMON(DEOXYS),
+ EC_WORD_DEPT_STORE,
+ EC_WORD_DESIGN,
+ EC_WORD_DESTINY,
+ EC_MOVE2(DESTINY_BOND),
+ EC_WORD_DESTROYED,
+ EC_MOVE2(DETECT),
+ EC_POKEMON2(DEWGONG),
+ EC_WORD_DID,
+ EC_WORD_DIDN_T,
+ EC_WORD_DIET,
+ EC_WORD_DIFFERENT,
+ EC_MOVE(DIG),
+ EC_WORD_DIGITAL,
+ EC_POKEMON2(DIGLETT),
+ EC_WORD_DIRECT,
+ EC_MOVE(DISABLE),
+ EC_WORD_DISAPPEAR,
+ EC_WORD_DISAPPOINT,
+ EC_WORD_DISAPPOINTED,
+ EC_WORD_DISAPPOINTS,
+ EC_WORD_DISASTER,
+ EC_WORD_DISLIKE,
+ EC_WORD_DISLIKES,
+ EC_POKEMON2(DITTO),
+ EC_MOVE2(DIVE),
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_WORD_DO,
+ EC_WORD_DOCILE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DODRIO),
+ EC_POKEMON2(DODRIO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DODUO),
+ EC_POKEMON2(DODUO),
+ EC_WORD_DOES,
+ EC_WORD_DOESN_T,
+ EC_WORD_DON_T,
+ EC_WORD_DONE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(DONPHAN),
+ EC_POKEMON2(DONPHAN),
+ EC_MOVE2(DOOM_DESIRE),
+ EC_MOVE2(DOUBLE_KICK),
+ EC_MOVE(DOUBLE_TEAM),
+ EC_MOVE(DOUBLE_EDGE),
+ EC_MOVE(DOUBLE_SLAP),
+ EC_WORD_DOWN,
+ EC_WORD_DOWNCAST,
+ EC_WORD_DRAGON,
+ EC_MOVE2(DRAGON_CLAW),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_MOVE2(DRAGON_RAGE),
+ EC_POKEMON2(DRAGONAIR),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_POKEMON2(DRAGONITE),
+ EC_POKEMON2(DRATINI),
+ EC_WORD_DREAM,
+ EC_MOVE2(DREAM_EATER),
+ EC_MOVE2(DRILL_PECK),
+ EC_WORD_DRINK,
+ EC_WORD_DRINKS,
+ EC_WORD_DRIZZLE,
+ EC_WORD_DROOLING,
+ EC_WORD_DROUGHT,
+ EC_POKEMON2(DROWZEE),
+ EC_WORD_DUDE,
+ EC_POKEMON2(DUGTRIO),
+ EC_POKEMON2(DUNSPARCE),
+ EC_POKEMON(DUSCLOPS),
+ EC_POKEMON(DUSKULL),
+ EC_POKEMON(DUSTOX),
+ EC_MOVE2(DYNAMIC_PUNCH),
+};
+
+const u16 gEasyChatWordsByLetter_E[] = {
+ EC_WORD_EARLIER,
+ EC_WORD_EARLY_BIRD,
+ EC_MOVE(EARTHQUAKE),
+ EC_WORD_EASY,
+ EC_WORD_EAT,
+ EC_WORD_EATS,
+ EC_WORD_EEK,
+ EC_POKEMON2(EEVEE),
+ EC_WORD_EFFECT_SPORE,
+ EC_WORD_EGG,
+ EC_MOVE2(EGG_BOMB),
+ EC_WORD_EH_QUES,
+ EC_WORD_EHEHE,
+ EC_POKEMON2(EKANS),
+ EC_POKEMON2(ELECTABUZZ),
+ EC_WORD_ELECTRIC,
+ EC_POKEMON(ELECTRIKE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ELECTRODE),
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON2(ELEKID),
+ EC_WORD_ELSE,
+ EC_MOVE2(EMBER),
+ EC_WORD_EMERALD,
+ EC_MOVE(ENCORE),
+ EC_WORD_ENCYCLOPEDIA,
+ EC_WORD_END,
+ EC_MOVE(ENDEAVOR),
+ EC_MOVE(ENDURE),
+ EC_WORD_ENJOY,
+ EC_WORD_ENJOYS,
+ EC_WORD_ENOUGH,
+ EC_POKEMON2(ENTEI),
+ EC_WORD_ENTERTAINING,
+ EC_MOVE2(ERUPTION),
+ EC_WORD_ESCAPE,
+ EC_POKEMON2(ESPEON),
+ EC_WORD_EVEN_SO,
+ EC_WORD_EVENT,
+ EC_WORD_EVENTS,
+ EC_WORD_EVER,
+ EC_WORD_EVERY,
+ EC_WORD_EVOLUTION,
+ EC_WORD_EVOLVE,
+ EC_WORD_EXCELLENT,
+ EC_WORD_EXCESS,
+ EC_WORD_EXCITE,
+ EC_WORD_EXCITING,
+ EC_WORD_EXCUSE,
+ EC_WORD_EXCUSE_ME,
+ EC_POKEMON2(EXEGGCUTE),
+ EC_POKEMON2(EXEGGUTOR),
+ EC_WORD_EXISTS,
+ EC_WORD_EXPENSIVE,
+ EC_MOVE2(EXPLOSION),
+ EC_POKEMON(EXPLOUD),
+ EC_MOVE(EXTRASENSORY),
+ EC_MOVE(EXTREME_SPEED),
+};
+
+const u16 gEasyChatWordsByLetter_F[] = {
+ EC_WORD_FABULOUS,
+ EC_MOVE(FACADE),
+ EC_WORD_FAINT,
+ EC_MOVE2(FAINT_ATTACK),
+ EC_WORD_FAINTED,
+ EC_MOVE2(FAKE_OUT),
+ EC_MOVE(FAKE_TEARS),
+ EC_WORD_FALL,
+ EC_MOVE2(FALSE_SWIPE),
+ EC_WORD_FAMILY,
+ EC_WORD_FANTASTIC,
+ EC_WORD_FAR,
+ EC_POKEMON2(FARFETCHD),
+ EC_WORD_FASHION,
+ EC_WORD_FAST,
+ EC_WORD_FATHER,
+ EC_WORD_FEAR,
+ EC_POKEMON2(FEAROW),
+ EC_MOVE2(FEATHER_DANCE),
+ EC_POKEMON(FEEBAS),
+ EC_WORD_FEELING,
+ EC_POKEMON2(FERALIGATR),
+ EC_WORD_FESTIVAL,
+ EC_WORD_FEVER,
+ EC_WORD_FIERY,
+ EC_WORD_FIGHT,
+ EC_WORD_FIGHTING,
+ EC_WORD_FIGHTS,
+ EC_WORD_FINAL,
+ EC_WORD_FINALLY,
+ EC_WORD_FINISH,
+ EC_WORD_FIRE,
+ EC_MOVE2(FIRE_BLAST),
+ EC_MOVE2(FIRE_PUNCH),
+ EC_MOVE2(FIRE_SPIN),
+ EC_WORD_FISHING,
+ EC_MOVE(FISSURE),
+ EC_POKEMON2(FLAAFFY),
+ EC_MOVE(FLAIL),
+ EC_WORD_FLAME,
+ EC_WORD_FLAME_BODY,
+ EC_MOVE(FLAME_WHEEL),
+ EC_MOVE(FLAMETHROWER),
+ EC_POKEMON2(FLAREON),
+ EC_MOVE2(FLASH),
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_FLATTEN,
+ EC_MOVE(FLATTER),
+ EC_WORD_FLOWERS,
+ EC_MOVE(FLY),
+ EC_POKEMON(FLYGON),
+ EC_WORD_FLYING,
+ EC_MOVE(FOCUS_ENERGY),
+ EC_MOVE(FOCUS_PUNCH),
+ EC_WORD_FOE,
+ EC_MOVE(FOLLOW_ME),
+ EC_WORD_FOR,
+ EC_WORD_FOR_NOW,
+ EC_WORD_FORECAST,
+ EC_MOVE2(FORESIGHT),
+ EC_WORD_FOREVER,
+ EC_WORD_FORGET,
+ EC_WORD_FORGETS,
+ EC_WORD_FORGIVE,
+ EC_POKEMON2(FORRETRESS),
+ EC_MOVE2(FRENZY_PLANT),
+ EC_WORD_FRIDAY,
+ EC_WORD_FRIEND,
+ EC_WORD_FROM,
+ EC_WORD_FRONT,
+ EC_WORD_FRONTIER,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_FUFUFU,
+ EC_WORD_FULL,
+ EC_WORD_FUNNY,
+ EC_POKEMON2(FURRET),
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE2(FURY_CUTTER),
+ EC_MOVE2(FURY_SWIPES),
+ EC_MOVE2(FUTURE_SIGHT),
+};
+
+const u16 gEasyChatWordsByLetter_G[] = {
+ EC_WORD_GAME,
+ EC_POKEMON(GARDEVOIR),
+ EC_POKEMON2(GASTLY),
+ EC_POKEMON2(GENGAR),
+ EC_WORD_GENIUS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GEODUDE),
+ EC_POKEMON2(GEODUDE),
+ EC_WORD_GET,
+ EC_WORD_GETS,
+ EC_WORD_GHOST,
+ EC_WORD_GIDDY,
+ EC_MOVE(GIGA_DRAIN),
+ EC_WORD_GIGGLE,
+ EC_WORD_GIMME,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GIRAFARIG),
+ EC_POKEMON2(GIRAFARIG),
+ EC_WORD_GIRL,
+ EC_WORD_GIVE,
+ EC_WORD_GIVE_ME,
+ EC_WORD_GIVE_UP,
+ EC_WORD_GIVES,
+ EC_POKEMON(GLALIE),
+ EC_MOVE2(GLARE),
+ EC_POKEMON2(GLIGAR),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GLOOM),
+ EC_POKEMON2(GLOOM),
+ EC_WORD_GO,
+ EC_WORD_GO_AHEAD,
+ EC_WORD_GO_EASY,
+ EC_WORD_GO_HOME,
+ EC_WORD_GOES,
+ EC_WORD_GOING,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLBAT),
+ EC_POKEMON2(GOLBAT),
+ EC_WORD_GOLD,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLDEEN),
+ EC_POKEMON2(GOLDEEN),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLDUCK),
+ EC_POKEMON2(GOLDUCK),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GOLEM),
+ EC_POKEMON2(GOLEM),
+ EC_WORD_GOOD,
+ EC_WORD_GOOD_BYE,
+ EC_POKEMON(GOREBYSS),
+ EC_WORD_GOT,
+ EC_WORD_GOTCHA,
+ EC_WORD_GOURMET,
+ EC_WORD_GRAAAH,
+ EC_POKEMON2(GRANBULL),
+ EC_WORD_GRANDFATHER,
+ EC_WORD_GRANDMOTHER,
+ EC_WORD_GRASS,
+ EC_MOVE(GRASS_WHISTLE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GRAVELER),
+ EC_POKEMON2(GRAVELER),
+ EC_WORD_GREAT,
+ EC_WORD_GREEN,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GRIMER),
+ EC_POKEMON2(GRIMER),
+ EC_POKEMON(GROUDON),
+ EC_WORD_GROUND,
+ EC_WORD_GROUP,
+ EC_POKEMON(GROVYLE),
+ EC_MOVE2(GROWL),
+ EC_POKEMON2(GROWLITHE),
+ EC_MOVE(GROWTH),
+ EC_MOVE(GRUDGE),
+ EC_POKEMON(GRUMPIG),
+ EC_WORD_GUARD,
+ EC_MOVE2(GUILLOTINE),
+ EC_POKEMON(GULPIN),
+ EC_MOVE(GUST),
+ EC_WORD_GUTS,
+ EC_WORD_GUTSY,
+ EC_WORD_GWAH,
+ EC_WORD_GWAHAHAHA,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(GYARADOS),
+ EC_POKEMON2(GYARADOS),
+};
+
+const u16 gEasyChatWordsByLetter_H[] = {
+ EC_WORD_HABIT,
+ EC_WORD_HAH,
+ EC_WORD_HAHAHA,
+ EC_MOVE(HAIL),
+ EC_WORD_HALL_OF_FAME,
+ EC_WORD_HAPPENING,
+ EC_WORD_HAPPILY,
+ EC_WORD_HAPPINESS,
+ EC_WORD_HAPPY,
+ EC_WORD_HARD,
+ EC_MOVE(HARDEN),
+ EC_POKEMON(HARIYAMA),
+ EC_WORD_HAS,
+ EC_WORD_HASSLE,
+ EC_POKEMON2(HAUNTER),
+ EC_WORD_HAVE,
+ EC_WORD_HAVEN_T,
+ EC_MOVE(HAZE),
+ EC_WORD_HE,
+ EC_WORD_HE_S,
+ EC_MOVE(HEADBUTT),
+ EC_MOVE(HEAL_BELL),
+ EC_WORD_HEALTHY,
+ EC_WORD_HEAR,
+ EC_WORD_HEARING,
+ EC_WORD_HEARS,
+ EC_WORD_HEART,
+ EC_MOVE2(HEAT_WAVE),
+ EC_WORD_HEH,
+ EC_WORD_HEHE,
+ EC_WORD_HEHEHE,
+ EC_WORD_HELLO,
+ EC_MOVE2(HELPING_HAND),
+ EC_WORD_HER,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON2(HERACROSS),
+ EC_WORD_HERE,
+ EC_WORD_HERE_GOES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_HERE_IT_IS,
+ EC_WORD_HERO,
+ EC_WORD_HEROINE,
+ EC_WORD_HERS,
+ EC_WORD_HEY,
+ EC_WORD_HEY_THERE,
+ EC_WORD_HEY_QUES,
+ EC_WORD_HI,
+ EC_MOVE2(HI_JUMP_KICK),
+ EC_WORD_HIDDEN,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_HIGH,
+ EC_WORD_HIGHS,
+ EC_WORD_HIM,
+ EC_WORD_HIP_AND,
+ EC_WORD_HIS,
+ EC_WORD_HIT,
+ EC_POKEMON2(HITMONCHAN),
+ EC_POKEMON2(HITMONLEE),
+ EC_POKEMON2(HITMONTOP),
+ EC_WORD_HIYAH,
+ EC_WORD_HMM,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_HOBBY,
+ EC_WORD_HOHOHO,
+ EC_WORD_HOLIDAY,
+ EC_WORD_HOME,
+ EC_WORD_HOO_HAH,
+ EC_POKEMON2(HOOTHOOT),
+ EC_WORD_HOPELESS,
+ EC_POKEMON2(HOPPIP),
+ EC_MOVE2(HORN_ATTACK),
+ EC_MOVE2(HORN_DRILL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(HORSEA),
+ EC_POKEMON2(HORSEA),
+ EC_WORD_HOT,
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(HOUNDOUR),
+ EC_WORD_HOW,
+ EC_WORD_HOW_DO,
+ EC_WORD_HOWEVER,
+ EC_MOVE2(HOWL),
+ EC_WORD_HUGE_POWER,
+ EC_WORD_HUH_QUES,
+ EC_WORD_HUMPH,
+ EC_WORD_HUNGRY,
+ EC_POKEMON(HUNTAIL),
+ EC_WORD_HURRIED,
+ EC_WORD_HUSTLE,
+ EC_MOVE2(HYDRO_CANNON),
+ EC_MOVE2(HYDRO_PUMP),
+ EC_WORD_HYPER,
+ EC_MOVE2(HYPER_BEAM),
+ EC_WORD_HYPER_CUTTER,
+ EC_MOVE2(HYPER_FANG),
+ EC_MOVE2(HYPER_VOICE),
+ EC_POKEMON2(HYPNO),
+ EC_MOVE(HYPNOSIS),
+};
+
+const u16 gEasyChatWordsByLetter_I[] = {
+ EC_WORD_I,
+ EC_WORD_I_AM,
+ EC_WORD_I_CHOOSE_YOU,
+ EC_WORD_I_WAS,
+ EC_WORD_I_VE,
+ EC_WORD_I_VE_ARRIVED,
+ EC_WORD_ICE,
+ EC_MOVE(ICE_BALL),
+ EC_MOVE2(ICE_BEAM),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE2(ICICLE_SPEAR),
+ EC_MOVE(ICY_WIND),
+ EC_WORD_IDOL,
+ EC_WORD_IF,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_IF_I_WIN,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(IGGLYBUFF),
+ EC_POKEMON2(IGGLYBUFF),
+ EC_WORD_IGNORANT,
+ EC_WORD_ILLUMINATE,
+ EC_POKEMON(ILLUMISE),
+ EC_WORD_IMMUNITY,
+ EC_WORD_IMPORTANT,
+ EC_WORD_IMPOSSIBLE,
+ EC_MOVE2(IMPRISON),
+ EC_WORD_IN,
+ EC_WORD_INCREASING,
+ EC_WORD_INCREDIBLE,
+ EC_WORD_INFORMATION,
+ EC_MOVE2(INGRAIN),
+ EC_WORD_INNER_FOCUS,
+ EC_WORD_INSIDE,
+ EC_WORD_INSOMNIA,
+ EC_WORD_INSTEAD,
+ EC_WORD_INTIMIDATE,
+ EC_WORD_INVINCIBLE,
+ EC_MOVE2(IRON_DEFENSE),
+ EC_MOVE(IRON_TAIL),
+ EC_WORD_IS,
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_ISN_T,
+ EC_WORD_ISN_T_IT_QUES,
+ EC_WORD_IT,
+ EC_WORD_IT_S,
+ EC_WORD_ITEM,
+ EC_POKEMON2(IVYSAUR),
+};
+
+const u16 gEasyChatWordsByLetter_J[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_POKEMON(JIRACHI),
+ EC_WORD_JOKING,
+ EC_POKEMON2(JOLTEON),
+ EC_WORD_JOY,
+ EC_WORD_JUDGE,
+ EC_MOVE2(JUMP_KICK),
+ EC_POKEMON2(JUMPLUFF),
+ EC_WORD_JUST,
+ EC_POKEMON2(JYNX),
+};
+
+const u16 gEasyChatWordsByLetter_K[] = {
+ EC_POKEMON2(KABUTO),
+ EC_POKEMON2(KABUTOPS),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KADABRA),
+ EC_POKEMON2(KADABRA),
+ EC_POKEMON2(KAKUNA),
+ EC_POKEMON2(KANGASKHAN),
+ EC_MOVE(KARATE_CHOP),
+ EC_POKEMON(KECLEON),
+ EC_WORD_KEEN_EYE,
+ EC_WORD_KID,
+ EC_WORD_KIDDING,
+ EC_WORD_KIND,
+ EC_WORD_KINDERGARTEN,
+ EC_MOVE(KINESIS),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KINGDRA),
+ EC_POKEMON2(KINGDRA),
+ EC_POKEMON2(KINGLER),
+ EC_POKEMON(KIRLIA),
+ EC_MOVE2(KNOCK_OFF),
+ EC_WORD_KNOCKOUT,
+ EC_WORD_KNOW,
+ EC_WORD_KNOWS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(KOFFING),
+ EC_POKEMON2(KOFFING),
+ EC_POKEMON2(KRABBY),
+ EC_WORD_KTHX_BYE,
+ EC_POKEMON(KYOGRE),
+};
+
+const u16 gEasyChatWordsByLetter_L[] = {
+ EC_WORD_LACKING,
+ EC_WORD_LACKS,
+ EC_WORD_LADY,
+ EC_POKEMON(LAIRON),
+ EC_WORD_LALALA,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(LANTURN),
+ EC_POKEMON2(LANTURN),
+ EC_POKEMON2(LAPRAS),
+ EC_POKEMON2(LARVITAR),
+ EC_WORD_LAST,
+ EC_WORD_LATE,
+ EC_WORD_LATER,
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_WORD_LAVISH,
+ EC_WORD_LAY,
+ EC_WORD_LEADER,
+ EC_WORD_LEADERS,
+ EC_WORD_LEAF,
+ EC_MOVE2(LEAF_BLADE),
+ EC_WORD_LEARN,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_MOVE(LEECH_LIFE),
+ EC_MOVE2(LEECH_SEED),
+ EC_MOVE2(LEER),
+ EC_WORD_LEFT,
+ EC_WORD_LEGEND,
+ EC_WORD_LESS,
+ EC_WORD_LESSONS,
+ EC_WORD_LET_ME_WIN,
+ EC_WORD_LET_S,
+ EC_WORD_LETTER,
+ EC_WORD_LEVEL,
+ EC_WORD_LEVITATE,
+ EC_MOVE(LICK),
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_LIE,
+ EC_WORD_LIFE,
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_WORD_LIGHTNINGROD,
+ EC_WORD_LIKE,
+ EC_WORD_LIKELY_TO,
+ EC_WORD_LIKES,
+ EC_POKEMON(LILEEP),
+ EC_WORD_LIMBER,
+ EC_WORD_LINK,
+ EC_POKEMON(LINOONE),
+ EC_WORD_LIQUID_OOZE,
+ EC_WORD_LISTEN,
+ EC_WORD_LISTENING,
+ EC_WORD_LISTENS,
+ EC_WORD_LIVING,
+ EC_MOVE2(LOCK_ON),
+ EC_WORD_LOCOMOTIVE,
+ EC_WORD_LOL,
+ EC_WORD_LOLLING,
+ EC_POKEMON(LOMBRE),
+ EC_WORD_LONESOME,
+ EC_WORD_LOOK,
+ EC_WORD_LOOKS,
+ EC_WORD_LOSE,
+ EC_WORD_LOSER,
+ EC_WORD_LOSING,
+ EC_WORD_LOSS,
+ EC_WORD_LOST,
+ EC_POKEMON(LOTAD),
+ EC_POKEMON(LOUDRED),
+ EC_WORD_LOUSY,
+ EC_MOVE(LOVELY_KISS),
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_LOW,
+ EC_MOVE(LOW_KICK),
+ EC_WORD_LOWS,
+ EC_POKEMON(LUDICOLO),
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LUKEWARM,
+ EC_POKEMON(LUNATONE),
+ EC_MOVE2(LUSTER_PURGE),
+ EC_POKEMON(LUVDISC),
+};
+
+const u16 gEasyChatWordsByLetter_M[] = {
+ EC_MOVE2(MACH_PUNCH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHAMP),
+ EC_POKEMON2(MACHAMP),
+ EC_WORD_MACHINE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHOKE),
+ EC_POKEMON2(MACHOKE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MACHOP),
+ EC_POKEMON2(MACHOP),
+ EC_WORD_MAGAZINE,
+ EC_POKEMON2(MAGBY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGCARGO),
+ EC_POKEMON2(MAGCARGO),
+ EC_MOVE2(MAGIC_COAT),
+ EC_MOVE2(MAGICAL_LEAF),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGIKARP),
+ EC_POKEMON2(MAGIKARP),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(MAGMAR),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGNEMITE),
+ EC_POKEMON2(MAGNEMITE),
+ EC_WORD_MAGNET_PULL,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MAGNETON),
+ EC_POKEMON2(MAGNETON),
+ EC_MOVE2(MAGNITUDE),
+ EC_WORD_MAIL,
+ EC_WORD_MAKE,
+ EC_WORD_MAKING,
+ EC_POKEMON(MAKUHITA),
+ EC_WORD_MAN,
+ EC_POKEMON(MANECTRIC),
+ EC_POKEMON2(MANKEY),
+ EC_POKEMON2(MANTINE),
+ EC_POKEMON2(MAREEP),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MARILL),
+ EC_POKEMON2(MARILL),
+ EC_POKEMON2(MAROWAK),
+ EC_POKEMON(MARSHTOMP),
+ EC_WORD_MARVEL_SCALE,
+ EC_POKEMON(MASQUERAIN),
+ EC_WORD_MASTER,
+ EC_WORD_MATCH,
+ EC_WORD_MATCH_UP,
+ EC_POKEMON(MAWILE),
+ EC_WORD_MAYBE,
+ EC_WORD_MC,
+ EC_WORD_ME,
+ EC_WORD_MEAN,
+ EC_MOVE(MEAN_LOOK),
+ EC_POKEMON(MEDICHAM),
+ EC_MOVE2(MEDITATE),
+ EC_POKEMON(MEDITITE),
+ EC_WORD_MEET,
+ EC_WORD_MEET_YOU,
+ EC_WORD_MEETS,
+ EC_WORD_MEGA,
+ EC_MOVE2(MEGA_DRAIN),
+ EC_MOVE2(MEGA_KICK),
+ EC_MOVE2(MEGA_PUNCH),
+ EC_MOVE2(MEGAHORN),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE(MEMENTO),
+ EC_POKEMON2(MEOWTH),
+ EC_WORD_MESSAGE,
+ EC_POKEMON(METAGROSS),
+ EC_MOVE2(METAL_CLAW),
+ EC_MOVE(METAL_SOUND),
+ EC_POKEMON(METANG),
+ EC_POKEMON2(METAPOD),
+ EC_MOVE(METEOR_MASH),
+ EC_MOVE2(METRONOME),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_POKEMON(MIGHTYENA),
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON(MILOTIC),
+ EC_POKEMON2(MILTANK),
+ EC_MOVE2(MIMIC),
+ EC_MOVE(MIND_READER),
+ EC_MOVE2(MINIMIZE),
+ EC_POKEMON(MINUN),
+ EC_WORD_MINUS,
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE(MIRROR_MOVE),
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_MISHEARD,
+ EC_WORD_MISS,
+ EC_MOVE(MIST),
+ EC_MOVE2(MIST_BALL),
+ EC_WORD_MISTAKE,
+ EC_WORD_MMM,
+ EC_WORD_MODE,
+ EC_WORD_MODERN,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_MOMENTUM,
+ EC_WORD_MONDAY,
+ EC_WORD_MONEY,
+ EC_WORD_MONTH,
+ EC_WORD_MOOD,
+ EC_MOVE2(MOONLIGHT),
+ EC_WORD_MORE,
+ EC_WORD_MORNING,
+ EC_MOVE(MORNING_SUN),
+ EC_WORD_MOTHER,
+ EC_WORD_MOVE,
+ EC_WORD_MOVIE,
+ EC_WORD_MR,
+ EC_POKEMON2(MR_MIME),
+ EC_WORD_MRS,
+ EC_WORD_MUCH,
+ EC_WORD_MUCH_OBLIGED,
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MUD_SPORT),
+ EC_MOVE2(MUD_SLAP),
+ EC_MOVE2(MUDDY_WATER),
+ EC_POKEMON(MUDKIP),
+ EC_WORD_MUFUFU,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(MUK),
+ EC_POKEMON2(MUK),
+ EC_POKEMON2(MURKROW),
+ EC_WORD_MUSIC,
+ EC_WORD_MUST_BE,
+ EC_WORD_MY,
+ EC_WORD_MYSELF,
+ EC_WORD_MYSTERY,
+};
+
+const u16 gEasyChatWordsByLetter_N[] = {
+ EC_WORD_NAME,
+ EC_WORD_NAP,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(NATU),
+ EC_POKEMON2(NATU),
+ EC_WORD_NATURAL,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_NATURALLY,
+ EC_WORD_NATURE,
+ EC_MOVE(NATURE_POWER),
+ EC_WORD_NEAR,
+ EC_WORD_NEARLY,
+ EC_WORD_NEED,
+ EC_MOVE2(NEEDLE_ARM),
+ EC_WORD_NEGATIVE,
+ EC_WORD_NEVER,
+ EC_WORD_NEW,
+ EC_WORD_NEWS,
+ EC_WORD_NEXT,
+ EC_WORD_NICE,
+ EC_POKEMON2(NIDOKING),
+ EC_POKEMON2(NIDOQUEEN),
+ EC_POKEMON2(NIDORAN_F),
+ EC_POKEMON2(NIDORAN_M),
+ EC_POKEMON2(NIDORINA),
+ EC_POKEMON2(NIDORINO),
+ EC_WORD_NIGHT,
+ EC_MOVE2(NIGHT_SHADE),
+ EC_MOVE(NIGHTMARE),
+ EC_WORD_NIGHTTIME,
+ EC_POKEMON(NINCADA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(NINETALES),
+ EC_POKEMON2(NINETALES),
+ EC_POKEMON(NINJASK),
+ EC_WORD_NITWIT,
+ EC_WORD_NO,
+ EC_WORD_NO_MATCH,
+ EC_WORD_NO_1,
+ EC_POKEMON2(NOCTOWL),
+ EC_WORD_NOISY,
+ EC_WORD_NON_STOP,
+ EC_WORD_NONE,
+ EC_WORD_NOPE,
+ EC_WORD_NORMAL,
+ EC_POKEMON(NOSEPASS),
+ EC_WORD_NOT,
+ EC_WORD_NOT_VERY,
+ EC_WORD_NOTHING,
+ EC_WORD_NOW,
+ EC_POKEMON(NUMEL),
+ EC_POKEMON(NUZLEAF),
+};
+
+const u16 gEasyChatWordsByLetter_O[] = {
+ EC_WORD_OBLIVIOUS,
+ EC_MOVE(OCTAZOOKA),
+ EC_POKEMON2(OCTILLERY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ODDISH),
+ EC_POKEMON2(ODDISH),
+ EC_MOVE(ODOR_SLEUTH),
+ EC_WORD_OF,
+ EC_WORD_OFF,
+ EC_WORD_OFFENSIVE,
+ EC_WORD_OH,
+ EC_WORD_OH_DEAR,
+ EC_WORD_OH_YEAH,
+ EC_WORD_OH_KAY,
+ EC_WORD_OH_QUES,
+ EC_WORD_OI,
+ EC_WORD_OI_OI_OI,
+ EC_WORD_OK_QUES,
+ EC_WORD_OKAY,
+ EC_WORD_OLD,
+ EC_WORD_OLDEN,
+ EC_POKEMON2(OMANYTE),
+ EC_POKEMON2(OMASTAR),
+ EC_WORD_ON,
+ EC_WORD_ONCE,
+ EC_POKEMON2(ONIX),
+ EC_WORD_ONLY,
+ EC_WORD_OOPS,
+ EC_WORD_OPPONENT,
+ EC_WORD_OPPOSITE,
+ EC_WORD_OR,
+ EC_WORD_OTHER,
+ EC_WORD_OUR,
+ EC_WORD_OUT,
+ EC_MOVE(OUTRAGE),
+ EC_WORD_OUTSIDE,
+ EC_WORD_OVER,
+ EC_WORD_OVERDO,
+ EC_WORD_OVERGROW,
+ EC_MOVE(OVERHEAT),
+ EC_WORD_OVERWHELMING,
+ EC_WORD_OWN,
+ EC_WORD_OWN_TEMPO,
+};
+
+const u16 gEasyChatWordsByLetter_P[] = {
+ EC_MOVE(PAIN_SPLIT),
+ EC_POKEMON2(PARAS),
+ EC_POKEMON2(PARASECT),
+ EC_WORD_PARDON,
+ EC_WORD_PARENT,
+ EC_WORD_PARTNER,
+ EC_WORD_PARTY,
+ EC_WORD_PATTERN,
+ EC_MOVE2(PAY_DAY),
+ EC_WORD_PC,
+ EC_MOVE2(PECK),
+ EC_POKEMON(PELIPPER),
+ EC_WORD_PERFECT,
+ EC_WORD_PERFECTION,
+ EC_MOVE2(PERISH_SONG),
+ EC_POKEMON2(PERSIAN),
+ EC_WORD_PERSON,
+ EC_MOVE2(PETAL_DANCE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PHANPY),
+ EC_POKEMON2(PHANPY),
+ EC_WORD_PHONE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PICHU),
+ EC_POKEMON2(PICHU),
+ EC_WORD_PICKUP,
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEOTTO),
+ EC_POKEMON2(PIDGEY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PIKACHU),
+ EC_POKEMON2(PIKACHU),
+ EC_POKEMON2(PILOSWINE),
+ EC_MOVE2(PIN_MISSILE),
+ EC_POKEMON2(PINECO),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PINSIR),
+ EC_POKEMON2(PINSIR),
+ EC_WORD_PKRS,
+ EC_WORD_PLACE,
+ EC_WORD_PLANS,
+ EC_WORD_PLAY,
+ EC_WORD_PLAYED,
+ EC_WORD_PLAYS,
+ EC_WORD_PLEASE,
+ EC_WORD_PLUS,
+ EC_WORD_PLUSH_DOLL,
+ EC_POKEMON(PLUSLE),
+ EC_WORD_POINTS,
+ EC_WORD_POISON,
+ EC_MOVE2(POISON_FANG),
+ EC_MOVE2(POISON_GAS),
+ EC_WORD_POISON_POINT,
+ EC_MOVE2(POISON_STING),
+ EC_MOVE2(POISON_TAIL),
+ EC_MOVE2(POISON_POWDER),
+ EC_WORD_POKEBLOCK,
+ EC_WORD_POKEDEX,
+ EC_WORD_POKEMON,
+ EC_WORD_POKENAV,
+ EC_POKEMON2(POLITOED),
+ EC_POKEMON2(POLIWAG),
+ EC_POKEMON2(POLIWHIRL),
+ EC_POKEMON2(POLIWRATH),
+ EC_POKEMON2(PONYTA),
+ EC_POKEMON(POOCHYENA),
+ EC_WORD_POPULAR,
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_MOVE2(POUND),
+ EC_MOVE(POWDER_SNOW),
+ EC_WORD_POWER,
+ EC_WORD_PRAISE,
+ EC_WORD_PREPOSTEROUS,
+ EC_MOVE2(PRESENT),
+ EC_WORD_PRESSURE,
+ EC_WORD_PRETEND,
+ EC_WORD_PRETTY,
+ EC_POKEMON2(PRIMEAPE),
+ EC_WORD_PROBABLY,
+ EC_WORD_PROMISE,
+ EC_MOVE2(PROTECT),
+ EC_MOVE(PSYBEAM),
+ EC_MOVE(PSYCH_UP),
+ -1, 2, // Doubled pokemon species name
+ EC_WORD_PSYCHIC,
+ EC_MOVE(PSYCHIC),
+ EC_MOVE(PSYCHO_BOOST),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(PSYDUCK),
+ EC_POKEMON2(PSYDUCK),
+ EC_MOVE(PSYWAVE),
+ EC_POKEMON2(PUPITAR),
+ EC_WORD_PURE_POWER,
+ EC_MOVE(PURSUIT),
+ EC_WORD_PUSHOVER,
+};
+
+const u16 gEasyChatWordsByLetter_Q[] = {
+ EC_POKEMON2(QUAGSIRE),
+ EC_WORD_QUESTION,
+ EC_MOVE2(QUICK_ATTACK),
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_QUITE,
+ EC_POKEMON2(QWILFISH),
+};
+
+const u16 gEasyChatWordsByLetter_R[] = {
+ EC_WORD_RADIO,
+ EC_MOVE(RAGE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RAICHU),
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON2(RAIKOU),
+ EC_MOVE(RAIN_DANCE),
+ EC_WORD_RAIN_DISH,
+ EC_POKEMON(RALTS),
+ EC_WORD_RANK,
+ EC_MOVE(RAPID_SPIN),
+ EC_POKEMON2(RAPIDASH),
+ EC_WORD_RARE,
+ EC_WORD_RATHER,
+ EC_POKEMON2(RATICATE),
+ EC_POKEMON2(RATTATA),
+ EC_POKEMON(RAYQUAZA),
+ EC_MOVE2(RAZOR_LEAF),
+ EC_MOVE(RAZOR_WIND),
+ EC_WORD_READY,
+ EC_WORD_REALLY,
+ EC_WORD_REAR,
+ EC_WORD_RECEIVED,
+ EC_WORD_RECOMMEND,
+ EC_MOVE(RECOVER),
+ EC_MOVE2(RECYCLE),
+ EC_WORD_RED,
+ EC_MOVE2(REFLECT),
+ EC_MOVE2(REFRESH),
+ EC_WORD_REFRESHING,
+ EC_WORD_REFUSE,
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(REGISTEEL),
+ EC_WORD_REJECT,
+ EC_WORD_RELEASE,
+ EC_POKEMON(RELICANTH),
+ EC_POKEMON2(REMORAID),
+ EC_WORD_RENTAL,
+ EC_MOVE2(REST),
+ EC_WORD_RESUSCITATE,
+ EC_MOVE(RETURN),
+ EC_MOVE2(REVENGE),
+ EC_MOVE(REVERSAL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RHYDON),
+ EC_POKEMON2(RHYDON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(RHYHORN),
+ EC_POKEMON2(RHYHORN),
+ EC_WORD_RIBBON,
+ EC_WORD_RICKETY,
+ EC_WORD_RIGHT,
+ EC_WORD_RIPPED,
+ EC_WORD_RIVAL,
+ EC_MOVE2(ROAR),
+ EC_WORD_ROCK,
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_ROCK_HEAD,
+ EC_MOVE(ROCK_SLIDE),
+ EC_MOVE(ROCK_SMASH),
+ EC_MOVE(ROCK_THROW),
+ EC_MOVE(ROCK_TOMB),
+ EC_WORD_ROCK_SOLID,
+ EC_MOVE2(ROLE_PLAY),
+ EC_MOVE2(ROLLING_KICK),
+ EC_MOVE(ROLLOUT),
+ EC_WORD_ROMANTIC,
+ EC_WORD_ROOM,
+ EC_POKEMON(ROSELIA),
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_RPG,
+ EC_WORD_RUBY,
+ EC_WORD_RULE,
+ EC_WORD_RUN,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_RUNS,
+};
+
+const u16 gEasyChatWordsByLetter_S[] = {
+ EC_POKEMON(SABLEYE),
+ EC_MOVE(SACRED_FIRE),
+ EC_WORD_SAD,
+ EC_WORD_SADLY,
+ EC_MOVE(SAFEGUARD),
+ EC_WORD_SAID,
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_SAND_STREAM,
+ EC_MOVE(SAND_TOMB),
+ EC_WORD_SAND_VEIL,
+ EC_MOVE(SAND_ATTACK),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SANDSHREW),
+ EC_POKEMON2(SANDSHREW),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SANDSLASH),
+ EC_POKEMON2(SANDSLASH),
+ EC_MOVE(SANDSTORM),
+ EC_WORD_SAPPHIRE,
+ EC_WORD_SATISFIED,
+ EC_WORD_SATURDAY,
+ EC_WORD_SAYS,
+ EC_WORD_SCARY,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_SCATTER,
+ EC_POKEMON(SCEPTILE),
+ EC_WORD_SCHOOL,
+ EC_POKEMON2(SCIZOR),
+ EC_MOVE2(SCRATCH),
+ EC_MOVE(SCREECH),
+ EC_POKEMON2(SCYTHER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SEADRA),
+ EC_POKEMON2(SEADRA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SEAKING),
+ EC_POKEMON2(SEAKING),
+ EC_POKEMON(SEALEO),
+ EC_WORD_SEARCH,
+ EC_WORD_SECRET,
+ EC_WORD_SECRET_BASE,
+ EC_MOVE2(SECRET_POWER),
+ EC_WORD_SEE,
+ EC_WORD_SEE_YA,
+ EC_POKEMON(SEEDOT),
+ EC_WORD_SEEK,
+ EC_POKEMON2(SEEL),
+ EC_WORD_SEEMS,
+ EC_WORD_SEES,
+ EC_MOVE2(SEISMIC_TOSS),
+ EC_MOVE(SELF_DESTRUCT),
+ EC_WORD_SENSE,
+ EC_POKEMON2(SENTRET),
+ EC_WORD_SERENE_GRACE,
+ EC_WORD_SERIOUS,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_SERVICE,
+ EC_POKEMON(SEVIPER),
+ EC_MOVE(SHADOW_BALL),
+ EC_MOVE(SHADOW_PUNCH),
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_SHADY,
+ EC_WORD_SHAKE,
+ EC_WORD_SHAKY,
+ EC_WORD_SHALLOW,
+ EC_POKEMON(SHARPEDO),
+ EC_MOVE(SHARPEN),
+ EC_WORD_SHE,
+ EC_WORD_SHE_IS,
+ EC_WORD_SHE_WAS,
+ EC_WORD_SHED_SKIN,
+ EC_POKEMON(SHEDINJA),
+ EC_MOVE(SHEER_COLD),
+ EC_POKEMON(SHELGON),
+ EC_WORD_SHELL_ARMOR,
+ EC_POKEMON2(SHELLDER),
+ EC_WORD_SHIELD_DUST,
+ EC_POKEMON(SHIFTRY),
+ EC_WORD_SHINE,
+ EC_MOVE2(SHOCK_WAVE),
+ EC_WORD_SHOCKED,
+ EC_WORD_SHOPPING,
+ EC_WORD_SHOULD,
+ EC_WORD_SHOW,
+ EC_WORD_SHREDDED,
+ EC_POKEMON(SHROOMISH),
+ EC_POKEMON2(SHUCKLE),
+ EC_POKEMON(SHUPPET),
+ EC_WORD_SIBLINGS,
+ EC_WORD_SIGH,
+ EC_MOVE(SIGNAL_BEAM),
+ EC_POKEMON(SILCOON),
+ EC_WORD_SILKY,
+ EC_WORD_SILVER,
+ EC_MOVE(SILVER_WIND),
+ EC_WORD_SIMPLE,
+ EC_WORD_SINCE,
+ EC_MOVE(SING),
+ EC_WORD_SINK,
+ EC_WORD_SISTER,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SKARMORY),
+ EC_POKEMON2(SKARMORY),
+ EC_MOVE(SKETCH),
+ EC_WORD_SKILL,
+ EC_MOVE(SKILL_SWAP),
+ EC_WORD_SKILLED,
+ EC_POKEMON2(SKIPLOOM),
+ EC_POKEMON(SKITTY),
+ EC_MOVE2(SKULL_BASH),
+ EC_MOVE(SKY_ATTACK),
+ EC_MOVE(SKY_UPPERCUT),
+ EC_MOVE2(SLACK_OFF),
+ EC_POKEMON(SLAKING),
+ EC_POKEMON(SLAKOTH),
+ EC_MOVE2(SLAM),
+ EC_MOVE(SLASH),
+ EC_WORD_SLEEP,
+ EC_MOVE2(SLEEP_POWDER),
+ EC_MOVE2(SLEEP_TALK),
+ EC_WORD_SLEPT,
+ EC_WORD_SLIDE,
+ EC_WORD_SLIMY,
+ EC_POKEMON2(SLOWBRO),
+ EC_POKEMON2(SLOWKING),
+ EC_POKEMON2(SLOWPOKE),
+ EC_MOVE2(SLUDGE),
+ EC_MOVE2(SLUDGE_BOMB),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(SLUGMA),
+ EC_POKEMON2(SLUGMA),
+ EC_WORD_SMACK,
+ EC_WORD_SMALL,
+ EC_WORD_SMART,
+ EC_WORD_SMARTNESS,
+ EC_POKEMON2(SMEARGLE),
+ EC_WORD_SMELL,
+ EC_WORD_SMELL_YA,
+ EC_MOVE(SMELLING_SALT),
+ EC_WORD_SMITE,
+ EC_MOVE(SMOG),
+ EC_MOVE(SMOKESCREEN),
+ EC_POKEMON2(SMOOCHUM),
+ EC_WORD_SMOOTH,
+ EC_MOVE2(SNATCH),
+ EC_POKEMON2(SNEASEL),
+ EC_MOVE(SNORE),
+ EC_POKEMON2(SNORLAX),
+ EC_WORD_SNORT,
+ EC_POKEMON(SNORUNT),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SO,
+ EC_MOVE2(SOFT_BOILED),
+ EC_WORD_SOFTWARE,
+ EC_MOVE(SOLAR_BEAM),
+ EC_POKEMON(SOLROCK),
+ EC_WORD_SOME,
+ EC_WORD_SOMEHOW,
+ EC_WORD_SOMEONE,
+ EC_WORD_SOMETHING,
+ EC_WORD_SOMETIME,
+ EC_WORD_SON,
+ EC_WORD_SONG,
+ EC_WORD_SONGS,
+ EC_MOVE(SONIC_BOOM),
+ EC_WORD_SOON,
+ EC_WORD_SORRY,
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_SP_ABILITY,
+ EC_MOVE(SPARK),
+ EC_POKEMON2(SPEAROW),
+ EC_WORD_SPECTATOR,
+ EC_WORD_SPEED_BOOST,
+ EC_POKEMON(SPHEAL),
+ EC_MOVE(SPIDER_WEB),
+ EC_MOVE2(SPIKE_CANNON),
+ EC_MOVE2(SPIKES),
+ EC_POKEMON2(SPINARAK),
+ EC_POKEMON(SPINDA),
+ EC_WORD_SPIRALING,
+ EC_WORD_SPIRIT,
+ EC_MOVE2(SPIT_UP),
+ EC_MOVE(SPITE),
+ EC_MOVE2(SPLASH),
+ EC_POKEMON(SPOINK),
+ EC_MOVE(SPORE),
+ EC_WORD_SPORTS,
+ EC_WORD_SPRING,
+ EC_POKEMON2(SQUIRTLE),
+ EC_WORD_STAGE,
+ EC_POKEMON2(STANTLER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(STARMIE),
+ EC_POKEMON2(STARMIE),
+ EC_WORD_START,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(STARYU),
+ EC_POKEMON2(STARYU),
+ EC_WORD_STATIC,
+ EC_WORD_STAY_AT_HOME,
+ EC_WORD_STEEL,
+ EC_MOVE2(STEEL_WING),
+ EC_POKEMON2(STEELIX),
+ EC_WORD_STENCH,
+ EC_WORD_STICKY_HOLD,
+ EC_MOVE2(STOCKPILE),
+ EC_MOVE2(STOMP),
+ EC_WORD_STOP,
+ EC_WORD_STORE,
+ EC_WORD_STORES,
+ EC_WORD_STORY,
+ EC_WORD_STRATEGY,
+ EC_MOVE(STRENGTH),
+ EC_MOVE(STRING_SHOT),
+ EC_WORD_STRONG,
+ EC_MOVE2(STRUGGLE),
+ EC_WORD_STUDY,
+ EC_MOVE(STUN_SPORE),
+ EC_WORD_STURDY,
+ EC_MOVE(SUBMISSION),
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_SUCTION_CUPS,
+ EC_POKEMON2(SUDOWOODO),
+ EC_POKEMON2(SUICUNE),
+ EC_WORD_SUMMER,
+ EC_WORD_SUNDAY,
+ EC_POKEMON2(SUNFLORA),
+ EC_POKEMON2(SUNKERN),
+ EC_MOVE2(SUNNY_DAY),
+ EC_WORD_SUPER,
+ EC_MOVE(SUPER_FANG),
+ EC_MOVE2(SUPERPOWER),
+ EC_MOVE2(SUPERSONIC),
+ EC_MOVE2(SURF),
+ EC_WORD_SURPRISE,
+ EC_WORD_SURRENDER,
+ EC_POKEMON(SURSKIT),
+ EC_POKEMON(SWABLU),
+ EC_MOVE(SWAGGER),
+ EC_MOVE2(SWALLOW),
+ EC_POKEMON(SWALOT),
+ EC_POKEMON(SWAMPERT),
+ EC_WORD_SWARM,
+ EC_MOVE2(SWEET_KISS),
+ EC_MOVE(SWEET_SCENT),
+ EC_WORD_SWEETS,
+ EC_POKEMON(SWELLOW),
+ EC_MOVE(SWIFT),
+ EC_WORD_SWIFT_SWIM,
+ EC_POKEMON2(SWINUB),
+ EC_MOVE2(SWORDS_DANCE),
+ EC_WORD_SYNCHRONIZE,
+ EC_MOVE(SYNTHESIS),
+ EC_WORD_SYSTEM,
+};
+
+const u16 gEasyChatWordsByLetter_T[] = {
+ EC_MOVE2(TACKLE),
+ EC_MOVE2(TAIL_GLOW),
+ EC_MOVE(TAIL_WHIP),
+ EC_POKEMON(TAILLOW),
+ EC_WORD_TAKE,
+ EC_MOVE2(TAKE_DOWN),
+ EC_WORD_TAKE_THAT,
+ EC_WORD_TALENT,
+ EC_WORD_TALK,
+ EC_WORD_TALKING,
+ EC_POKEMON2(TANGELA),
+ EC_WORD_TASTY,
+ EC_MOVE2(TAUNT),
+ EC_POKEMON2(TAUROS),
+ EC_WORD_TCH,
+ EC_WORD_TEACH,
+ EC_WORD_TEACHER,
+ EC_WORD_TEACHES,
+ EC_POKEMON2(TEDDIURSA),
+ EC_MOVE2(TEETER_DANCE),
+ EC_MOVE2(TELEPORT),
+ EC_WORD_TELEVISION,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(TENTACOOL),
+ EC_POKEMON2(TENTACOOL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(TENTACRUEL),
+ EC_POKEMON2(TENTACRUEL),
+ EC_WORD_TERRIBLE,
+ EC_WORD_TEST,
+ EC_WORD_THAN,
+ EC_WORD_THANK_YOU,
+ EC_WORD_THANKS,
+ EC_WORD_THAT,
+ EC_WORD_THAT_WAS,
+ EC_WORD_THAT_S,
+ EC_WORD_THAT_S_IT_EXCL,
+ EC_WORD_THE,
+ EC_WORD_THEIR,
+ EC_WORD_THERE,
+ EC_WORD_THESE,
+ EC_WORD_THESE_WERE,
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_THICK,
+ EC_WORD_THICK_FAT,
+ EC_MOVE2(THIEF),
+ EC_WORD_THIN,
+ EC_WORD_THING,
+ EC_WORD_THINGS,
+ EC_WORD_THINK,
+ EC_WORD_THINKS,
+ EC_WORD_THIRSTY,
+ EC_WORD_THIS,
+ EC_WORD_THIS_IS_IT_EXCL,
+ EC_WORD_THOSE,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_THOSE_WERE,
+ EC_MOVE(THRASH),
+ EC_WORD_THROW,
+ EC_MOVE(THUNDER),
+ EC_MOVE2(THUNDER_WAVE),
+ EC_MOVE(THUNDERBOLT),
+ EC_MOVE(THUNDER_PUNCH),
+ EC_MOVE2(THUNDER_SHOCK),
+ EC_WORD_THURSDAY,
+ EC_MOVE(TICKLE),
+ EC_WORD_TICKLISH,
+ EC_WORD_TIGHT,
+ EC_WORD_TIME,
+ EC_WORD_TIMES,
+ EC_WORD_TIRED,
+ EC_WORD_TO,
+ EC_WORD_TO_HER,
+ EC_WORD_TO_ME,
+ EC_WORD_TO_THEM,
+ EC_WORD_TO_US,
+ EC_WORD_TO_WHOM,
+ EC_WORD_TODAY,
+ EC_POKEMON2(TOGEPI),
+ EC_WORD_TOGETHER,
+ EC_POKEMON2(TOGETIC),
+ EC_WORD_TOMORROW,
+ EC_WORD_TOO,
+ EC_WORD_TOO_LATE,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_TOP,
+ EC_POKEMON(TORCHIC),
+ EC_POKEMON(TORKOAL),
+ EC_MOVE(TORMENT),
+ EC_WORD_TORRENT,
+ EC_WORD_TOTALLY,
+ EC_POKEMON2(TOTODILE),
+ EC_WORD_TOUGH,
+ EC_WORD_TOUGHNESS,
+ EC_WORD_TOURNAMENT,
+ EC_WORD_TOWER,
+ EC_MOVE2(TOXIC),
+ EC_WORD_TOYS,
+ EC_WORD_TRACE,
+ EC_WORD_TRADE,
+ EC_WORD_TRAIN,
+ EC_WORD_TRAINER,
+ EC_WORD_TRAINS,
+ EC_MOVE2(TRANSFORM),
+ EC_POKEMON(TRAPINCH),
+ EC_WORD_TRAVEL,
+ EC_WORD_TREASURE,
+ EC_POKEMON(TREECKO),
+ EC_WORD_TRENDY,
+ EC_MOVE2(TRI_ATTACK),
+ EC_MOVE2(TRICK),
+ EC_WORD_TRIES,
+ EC_MOVE2(TRIPLE_KICK),
+ EC_POKEMON(TROPIUS),
+ EC_WORD_TRUANT,
+ EC_WORD_TRULY,
+ EC_WORD_TRUMP_CARD,
+ EC_WORD_TRUST,
+ EC_WORD_TRY,
+ EC_WORD_TUESDAY,
+ EC_MOVE2(TWINEEDLE),
+ EC_WORD_TWIRLING,
+ EC_MOVE2(TWISTER),
+ EC_WORD_TYPE,
+ EC_POKEMON2(TYPHLOSION),
+ EC_POKEMON2(TYRANITAR),
+ EC_POKEMON2(TYROGUE),
+};
+
+const u16 gEasyChatWordsByLetter_U[] = {
+ EC_WORD_UGLY,
+ EC_WORD_UH_HUH,
+ EC_WORD_UH_OH,
+ EC_WORD_UM,
+ EC_POKEMON2(UMBREON),
+ EC_WORD_UNAVOIDABLE,
+ EC_WORD_UNBELIEVABLE,
+ EC_WORD_UNCLE,
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_UNDERSTOOD,
+ EC_WORD_UNION,
+ EC_POKEMON2(UNOWN),
+ EC_WORD_UNTIL,
+ EC_WORD_UP,
+ EC_WORD_UPBEAT,
+ EC_MOVE(UPROAR),
+ EC_WORD_UPSIDE_DOWN,
+ EC_WORD_URGH,
+ EC_POKEMON2(URSARING),
+ EC_WORD_USE,
+ EC_WORD_USELESS,
+ EC_WORD_USES,
+ EC_WORD_USING,
+};
+
+const u16 gEasyChatWordsByLetter_V[] = {
+ EC_WORD_VACATION,
+ EC_POKEMON2(VAPOREON),
+ EC_POKEMON2(VENOMOTH),
+ EC_POKEMON2(VENONAT),
+ EC_POKEMON2(VENUSAUR),
+ EC_WORD_VERSION,
+ EC_WORD_VERSUS,
+ EC_WORD_VERY,
+ EC_POKEMON(VIBRAVA),
+ EC_MOVE2(VICE_GRIP),
+ EC_WORD_VICTORY,
+ EC_POKEMON2(VICTREEBEL),
+ EC_WORD_VIEWING,
+ EC_POKEMON(VIGOROTH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VILEPLUME),
+ EC_POKEMON2(VILEPLUME),
+ EC_MOVE2(VINE_WHIP),
+ EC_WORD_VITAL_SPIRIT,
+ EC_MOVE(VITAL_THROW),
+ EC_POKEMON(VOLBEAT),
+ EC_WORD_VOLT_ABSORB,
+ EC_MOVE2(VOLT_TACKLE),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VOLTORB),
+ EC_POKEMON2(VOLTORB),
+ EC_WORD_VORACIOUS,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(VULPIX),
+ EC_POKEMON2(VULPIX),
+};
+
+const u16 gEasyChatWordsByLetter_W[] = {
+ EC_WORD_WAAAH,
+ EC_WORD_WAHAHAHA,
+ EC_POKEMON(WAILMER),
+ EC_POKEMON(WAILORD),
+ EC_WORD_WAIT,
+ EC_WORD_WAKE_UP,
+ EC_WORD_WAKES_UP,
+ EC_WORD_WALK,
+ EC_WORD_WALKING,
+ EC_WORD_WALKS,
+ EC_POKEMON(WALREIN),
+ EC_WORD_WANDERING,
+ EC_WORD_WANNABE,
+ EC_WORD_WANT,
+ EC_WORD_WANTS,
+ EC_POKEMON2(WARTORTLE),
+ EC_WORD_WAS,
+ EC_WORD_WASN_T,
+ EC_WORD_WATER,
+ EC_WORD_WATER_ABSORB,
+ EC_MOVE2(WATER_GUN),
+ EC_MOVE2(WATER_PULSE),
+ EC_MOVE2(WATER_SPORT),
+ EC_MOVE(WATER_SPOUT),
+ EC_WORD_WATER_VEIL,
+ EC_MOVE2(WATERFALL),
+ EC_WORD_WAY,
+ EC_WORD_WE,
+ EC_WORD_WE_RE,
+ EC_WORD_WE_VE,
+ EC_WORD_WEAK,
+ EC_WORD_WEAKENED,
+ EC_MOVE(WEATHER_BALL),
+ EC_WORD_WEDNESDAY,
+ EC_POKEMON2(WEEDLE),
+ EC_WORD_WEEK,
+ EC_POKEMON2(WEEPINBELL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WEEZING),
+ EC_POKEMON2(WEEZING),
+ EC_WORD_WEIRD,
+ EC_WORD_WELCOME,
+ EC_WORD_WELL,
+ EC_WORD_WELL_THEN,
+ EC_WORD_WENT,
+ EC_WORD_WERE,
+ EC_WORD_WEREN_T,
+ EC_WORD_WHAT,
+ EC_WORD_WHAT_S_UP_QUES,
+ EC_WORD_WHEN,
+ EC_WORD_WHEN_I_WIN,
+ EC_WORD_WHERE,
+ EC_WORD_WHICH,
+ EC_WORD_WHILE,
+ EC_MOVE(WHIRLPOOL),
+ EC_MOVE2(WHIRLWIND),
+ EC_POKEMON(WHISCASH),
+ EC_POKEMON(WHISMUR),
+ EC_WORD_WHITE_SMOKE,
+ EC_WORD_WHO,
+ EC_WORD_WHO_IS,
+ EC_WORD_WHO_WAS,
+ EC_WORD_WHOAH,
+ EC_WORD_WHOM,
+ EC_WORD_WHOSE,
+ EC_WORD_WHY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WIGGLYTUFF),
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_WORD_WILD,
+ EC_WORD_WILL,
+ EC_WORD_WILL_BE_HERE,
+ EC_MOVE(WILL_O_WISP),
+ EC_WORD_WIMPY,
+ EC_WORD_WIN,
+ EC_MOVE2(WING_ATTACK),
+ EC_POKEMON(WINGULL),
+ EC_WORD_WINNER,
+ EC_WORD_WINS,
+ EC_WORD_WINTER,
+ EC_WORD_WIRELESS,
+ EC_MOVE2(WISH),
+ EC_WORD_WITH,
+ EC_MOVE(WITHDRAW),
+ EC_WORD_WITHOUT,
+ EC_WORD_WOBBLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(WOBBUFFET),
+ EC_POKEMON2(WOBBUFFET),
+ EC_WORD_WOMAN,
+ EC_WORD_WON,
+ EC_WORD_WON_T,
+ EC_WORD_WONDER,
+ EC_WORD_WONDER_GUARD,
+ EC_POKEMON2(WOOPER),
+ EC_WORD_WORD,
+ EC_WORD_WORK,
+ EC_WORD_WORKING,
+ EC_WORD_WORKS,
+ EC_WORD_WORLD,
+ EC_WORD_WORRY,
+ EC_WORD_WOULD,
+ EC_WORD_WOW,
+ EC_WORD_WOWEE,
+ EC_MOVE2(WRAP),
+ EC_WORD_WROOOAAR_EXCL,
+ EC_POKEMON(WURMPLE),
+ EC_POKEMON(WYNAUT),
+};
+
+const u16 gEasyChatWordsByLetter_X[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(XATU),
+ EC_POKEMON2(XATU),
+};
+
+const u16 gEasyChatWordsByLetter_Y[] = {
+ EC_WORD_YAHOO,
+ EC_POKEMON2(YANMA),
+ EC_MOVE(YAWN),
+ EC_WORD_YAY,
+ EC_WORD_YEAH,
+ EC_WORD_YEAH_YEAH,
+ EC_WORD_YEEHAW_EXCL,
+ EC_WORD_YES,
+ EC_WORD_YES_SIR_EXCL,
+ EC_WORD_YESTERDAY,
+ EC_WORD_YET,
+ EC_WORD_YO,
+ EC_WORD_YOU,
+ EC_WORD_YOU_RE,
+ EC_WORD_YOU_VE,
+ EC_WORD_YOUNG,
+ EC_WORD_YOUR,
+ EC_WORD_YOURS,
+ EC_WORD_YUP,
+};
+
+const u16 gEasyChatWordsByLetter_Z[] = {
+ EC_POKEMON(ZANGOOSE),
+ EC_MOVE2(ZAP_CANNON),
+ EC_POKEMON2(ZAPDOS),
+ EC_POKEMON(ZIGZAGOON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON(ZUBAT),
+ EC_POKEMON2(ZUBAT),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHi[] = {
+ EC_POKEMON2(CLEFFA),
+ EC_WORD_AIYEEH,
+ EC_POKEMON2(WEEDLE),
+ EC_WORD_HERO,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(PIKACHU),
+ EC_POKEMON(PIKACHU),
+ EC_MOVE2(LIGHT_SCREEN),
+ EC_WORD_SHINE,
+ EC_WORD_LOW,
+ EC_POKEMON2(CLEFABLE),
+ EC_WORD_FLYING,
+ EC_POKEMON2(PIDGEOT),
+ EC_POKEMON2(PIDGEOTTO),
+ EC_WORD_LEFT,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(PICHU),
+ EC_POKEMON(PICHU),
+ EC_MOVE2(SCRATCH),
+ EC_WORD_SURPRISE,
+ EC_MOVE2(HYPER_FANG),
+ EC_POKEMON2(CLEFAIRY),
+ EC_WORD_DROUGHT,
+ EC_WORD_HIDDEN,
+ EC_WORD_PERSON,
+ EC_WORD_AWFUL,
+ EC_POKEMON2(CHARMANDER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(STARYU),
+ EC_POKEMON(STARYU),
+ EC_WORD_ALONE,
+ EC_POKEMON2(CYNDAQUIL),
+ EC_MOVE2(EMBER),
+ EC_POKEMON(VIBRAVA),
+ EC_WORD_BORED,
+ EC_POKEMON2(SUNKERN),
+ EC_WORD_SECRET,
+ EC_WORD_SECRET_BASE,
+ EC_MOVE2(SECRET_POWER),
+ EC_POKEMON2(TEDDIURSA),
+ EC_WORD_HIYAH,
+ EC_MOVE2(DIZZY_PUNCH),
+ EC_WORD_LIGHTNINGROD,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VOLTORB),
+ EC_POKEMON(VOLTORB),
+ EC_WORD_DAYTIME,
+ EC_MOVE2(BULK_UP),
+ EC_WORD_NAP,
+ EC_WORD_HEROINE,
+ EC_POKEMON(FEEBAS),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseFu[] = {
+ EC_WORD_FIGHT,
+ EC_POKEMON2(MOLTRES),
+ EC_WORD_FASHION,
+ EC_WORD_FEAR,
+ EC_WORD_FEVER,
+ EC_MOVE2(IMPRISON),
+ EC_POKEMON2(FLAREON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(ALAKAZAM),
+ EC_POKEMON(ALAKAZAM),
+ EC_POKEMON2(MAGMAR),
+ EC_POKEMON(GRUMPIG),
+ EC_MOVE2(FEATHER_DANCE),
+ EC_POKEMON2(FORRETRESS),
+ EC_MOVE2(WHIRLWIND),
+ EC_WORD_COMPOUNDEYES,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(WIGGLYTUFF),
+ EC_POKEMON(WIGGLYTUFF),
+ EC_MOVE2(BEAT_UP),
+ EC_WORD_MYSTERY,
+ EC_POKEMON2(IVYSAUR),
+ EC_POKEMON2(BULBASAUR),
+ EC_WORD_MARVEL_SCALE,
+ EC_WORD_WONDER_GUARD,
+ EC_POKEMON2(VENUSAUR),
+ EC_WORD_LACKS,
+ EC_WORD_RESUSCITATE,
+ EC_WORD_SMACK,
+ EC_WORD_FUFUFU,
+ EC_POKEMON2(AERODACTYL),
+ EC_WORD_WIMPY,
+ EC_POKEMON2(MAGBY),
+ EC_WORD_LOL,
+ EC_MOVE2(BLIZZARD),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(IGGLYBUFF),
+ EC_POKEMON(IGGLYBUFF),
+ EC_WORD_SNORT,
+ EC_MOVE2(STOMP),
+ EC_WORD_INSOMNIA,
+ EC_WORD_WINTER,
+ EC_WORD_LEVITATE,
+ EC_POKEMON(FLYGON),
+ EC_WORD_PLUS,
+ EC_MOVE2(BLAST_BURN),
+ EC_POKEMON(PLUSLE),
+ EC_POKEMON2(UMBREON),
+ EC_MOVE2(FLASH),
+ EC_WORD_WOBBLY,
+ EC_MOVE2(TEETER_DANCE),
+ EC_WORD_PRETEND,
+ EC_POKEMON2(ARTICUNO),
+ EC_WORD_WANNABE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(JIGGLYPUFF),
+ EC_POKEMON(JIGGLYPUFF),
+ EC_POKEMON2(SNUBBULL),
+ EC_WORD_SHAKY,
+ EC_MOVE2(CRUSH_CLAW),
+ EC_MOVE2(BLAZE_KICK),
+ EC_MOVE2(PRESENT),
+ EC_WORD_PRESSURE,
+ EC_WORD_BLEND,
+ EC_WORD_FRONTIER,
+ EC_WORD_HUMPH,
+ EC_MOVE2(ERUPTION),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHe[] = {
+ EC_WORD_HEY,
+ EC_POKEMON(CORPHISH),
+ EC_WORD_BABY,
+ EC_POKEMON2(BAYLEEF),
+ EC_WORD_BEST,
+ EC_WORD_LOUSY,
+ EC_WORD_HEHEHE,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(GRIMER),
+ EC_POKEMON(GRIMER),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MUK),
+ EC_POKEMON(MUK),
+ EC_WORD_LIQUID_OOZE,
+ EC_MOVE2(SLUDGE),
+ EC_MOVE2(SLUDGE_BOMB),
+ EC_MOVE2(GLARE),
+ EC_WORD_HEH,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(HERACROSS),
+ EC_POKEMON(HERACROSS),
+ EC_POKEMON(PELIPPER),
+ EC_POKEMON2(HOUNDOOM),
+ EC_POKEMON2(PERSIAN),
+ EC_WORD_RIPPED,
+ EC_POKEMON2(LICKITUNG),
+ EC_WORD_STUDY,
+ EC_WORD_COLOR_CHANGE,
+ EC_MOVE2(TRANSFORM),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseHo[] = {
+ EC_MOVE2(POISON_TAIL),
+ EC_WORD_POINTS,
+ EC_POKEMON2(HO_OH),
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_ADVENTURE,
+ EC_WORD_EFFECT_SPORE,
+ EC_MOVE2(ROAR),
+ EC_POKEMON(WAILORD),
+ EC_POKEMON(WAILMER),
+ EC_WORD_DUDE,
+ EC_WORD_BOARD,
+ EC_POKEMON2(HOOTHOOT),
+ EC_POKEMON(SALAMENCE),
+ EC_WORD_BALL,
+ EC_MOVE2(BONE_RUSH),
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_TO_THEM,
+ EC_WORD_THEIR,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_POKENAV,
+ EC_WORD_POKEMON,
+ EC_WORD_GET,
+ EC_WORD_POKEDEX,
+ EC_WORD_PKRS,
+ EC_MOVE2(CAMOUFLAGE),
+ EC_WORD_WANT,
+ EC_MOVE2(COVET),
+ EC_POKEMON(AGGRON),
+ EC_MOVE2(TAIL_GLOW),
+ EC_POKEMON(POOCHYENA),
+ EC_POKEMON2(PIDGEY),
+ EC_WORD_AS_MUCH_AS,
+ EC_POKEMON2(PONYTA),
+ EC_MOVE2(BONE_CLUB),
+ EC_MOVE2(BONEMERANG),
+ EC_WORD_FIRE,
+ EC_MOVE2(FIRE_SPIN),
+ EC_WORD_FLAME_BODY,
+ EC_MOVE2(FIRE_PUNCH),
+ EC_POKEMON2(SKIPLOOM),
+ EC_WORD_HOHOHO,
+ EC_WORD_PRAISE,
+ EC_WORD_UH_HUH,
+ EC_POKEMON2(PORYGON),
+ EC_POKEMON2(PORYGON2),
+ EC_MOVE2(VOLT_TACKLE),
+ EC_WORD_POKEBLOCK,
+ EC_MOVE2(PERISH_SONG),
+ EC_WORD_SHREDDED,
+ EC_POKEMON(CASTFORM),
+ EC_WORD_BOOK,
+ EC_WORD_SERIOUS,
+ EC_WORD_REALLY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMa[] = {
+ EC_WORD_OH_DEAR,
+ EC_WORD_IN,
+ EC_WORD_GIVE_UP,
+ EC_WORD_MINUS,
+ EC_POKEMON(MINUN),
+ EC_WORD_DAILY,
+ EC_WORD_OWN_TEMPO,
+ EC_MOVE2(WRAP),
+ EC_MOVE2(SPIKES),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MAGCARGO),
+ EC_POKEMON(MAGCARGO),
+ EC_MOVE2(MAGNITUDE),
+ EC_POKEMON(MAKUHITA),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(SLUGMA),
+ EC_POKEMON(SLUGMA),
+ EC_WORD_MAGMA_ARMOR,
+ EC_POKEMON2(QUILAVA),
+ EC_WORD_OVERDO,
+ EC_WORD_LOSS,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_LOST,
+ EC_WORD_LOSE,
+ EC_WORD_TRULY,
+ EC_WORD_SERIOUSLY,
+ EC_MOVE2(MAGICAL_LEAF),
+ EC_MOVE2(MAGIC_COAT),
+ EC_WORD_MACHINE,
+ EC_WORD_OUT,
+ EC_WORD_MASTER,
+ EC_WORD_INCREASING,
+ EC_WORD_TOO,
+ EC_WORD_LIKE,
+ EC_POKEMON2(BELLSPROUT),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(WEEZING),
+ EC_POKEMON(WEEZING),
+ EC_WORD_SMELL,
+ EC_WORD_YET,
+ EC_WORD_MISTAKE,
+ EC_POKEMON(LINOONE),
+ EC_WORD_TOTALLY,
+ EC_MOVE2(MUD_SHOT),
+ EC_MOVE2(MACH_PUNCH),
+ EC_WORD_FESTIVAL,
+ EC_WORD_UNTIL,
+ EC_WORD_WAIT,
+ EC_WORD_GUARD,
+ EC_MOVE2(PROTECT),
+ EC_POKEMON(CASCOON),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MARILL),
+ EC_POKEMON(MARILL),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(AZUMARILL),
+ EC_POKEMON(AZUMARILL),
+ EC_MOVE2(DEFENSE_CURL),
+ EC_WORD_AS_IF,
+ EC_POKEMON(SWALOT),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(ELECTRODE),
+ EC_POKEMON(ELECTRODE),
+ EC_MOVE2(ROLLING_KICK),
+ EC_WORD_COMICS,
+ EC_POKEMON2(MANKEY),
+ EC_WORD_SATISFIED,
+ EC_POKEMON2(MANTINE),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMi[] = {
+ EC_WORD_PARTNER,
+ EC_MOVE2(SUBSTITUTE),
+ EC_WORD_RIGHT,
+ EC_MOVE2(DETECT),
+ EC_MOVE2(PIN_MISSILE),
+ EC_WORD_WATER,
+ EC_MOVE2(WATER_SPORT),
+ EC_POKEMON(MUDKIP),
+ EC_MOVE2(WATER_GUN),
+ EC_MOVE2(MIST_BALL),
+ EC_MOVE2(WATER_PULSE),
+ EC_WORD_WATER_VEIL,
+ EC_WORD_SHOW,
+ EC_WORD_SEE,
+ EC_WORD_DID,
+ EC_MOVE2(FURY_ATTACK),
+ EC_MOVE2(FURY_SWIPES),
+ EC_MOVE2(DESTINY_BOND),
+ EC_WORD_LOOKS,
+ EC_WORD_REJECT,
+ EC_WORD_ACCEPT,
+ EC_POKEMON2(DRATINI),
+ EC_MOVE2(FALSE_SWIPE),
+ EC_MOVE2(FORESIGHT),
+ EC_POKEMON2(MEW),
+ EC_POKEMON2(MEWTWO),
+ EC_MOVE2(MIRROR_COAT),
+ EC_MOVE2(FUTURE_SIGHT),
+ EC_WORD_SEES,
+ EC_MOVE2(MILK_DRINK),
+ EC_POKEMON2(MILTANK),
+ EC_POKEMON(MILOTIC),
+ EC_WORD_WE,
+ EC_WORD_BEEN,
+ EC_WORD_TO_US,
+ EC_WORD_OUR,
+ EC_WORD_WE_RE,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMu[] = {
+ EC_WORD_MOOD,
+ EC_POKEMON2(MISDREAVUS),
+ EC_WORD_OLDEN,
+ EC_WORD_ARRGH,
+ EC_WORD_BUG,
+ EC_WORD_SWARM,
+ EC_WORD_RATHER,
+ EC_POKEMON2(SMOOCHUM),
+ EC_WORD_INVINCIBLE,
+ EC_WORD_HEART,
+ EC_WORD_MUFUFU,
+ EC_WORD_MMM,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMe[] = {
+ EC_MOVE2(CALM_MIND),
+ EC_WORD_MAIL,
+ EC_MOVE2(MEGA_DRAIN),
+ EC_MOVE2(MEGA_KICK),
+ EC_MOVE2(MEGA_PUNCH),
+ EC_POKEMON2(MEGANIUM),
+ EC_MOVE2(MEGAHORN),
+ EC_WORD_SEEK,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_RARE,
+ EC_POKEMON(METAGROSS),
+ EC_POKEMON2(DITTO),
+ EC_MOVE2(METAL_CLAW),
+ EC_POKEMON(METANG),
+ EC_WORD_DESTROYED,
+ EC_WORD_MESSAGE,
+ EC_WORD_AWFULLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(TENTACOOL),
+ EC_POKEMON(TENTACOOL),
+ EC_WORD_FIERY,
+ EC_POKEMON2(MAREEP),
+ EC_MOVE2(ATTRACT),
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_IMMUNITY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseMo[] = {
+ EC_WORD_ALMOST,
+ EC_WORD_BLAZE,
+ EC_WORD_NEARLY,
+ EC_WORD_MODE,
+ EC_WORD_OLD,
+ EC_WORD_THURSDAY,
+ EC_POKEMON2(FLAAFFY),
+ EC_WORD_LISTENING,
+ EC_WORD_OWN,
+ EC_WORD_MORE,
+ EC_WORD_DIDN_T,
+ EC_WORD_PICKUP,
+ EC_MOVE2(MIMIC),
+ EC_WORD_TOO_LATE,
+ EC_WORD_PATTERN,
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_RECEIVED,
+ EC_POKEMON2(VENOMOTH),
+ EC_WORD_DOESN_T,
+ EC_POKEMON2(TANGELA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYa[] = {
+ EC_WORD_HOO_HAH,
+ EC_WORD_PROMISE,
+ EC_WORD_KIND,
+ EC_POKEMON(BALTOY),
+ EC_WORD_HOLIDAY,
+ EC_WORD_NEGATIVE,
+ EC_MOVE2(FRUSTRATION),
+ EC_WORD_DONE,
+ EC_WORD_FINALLY,
+ EC_WORD_ANY,
+ EC_WORD_YAHOO,
+ EC_POKEMON2(SLOWKING),
+ EC_POKEMON2(SLOWBRO),
+ EC_MOVE2(LEECH_SEED),
+ EC_POKEMON2(SLOWPOKE),
+ EC_WORD_DANGER,
+ EC_POKEMON2(MURKROW),
+ EC_POKEMON(SABLEYE),
+ EC_WORD_DEFEATED,
+ EC_WORD_BEAT,
+ EC_WORD_VITAL_SPIRIT,
+ EC_POKEMON(VIGOROTH),
+ EC_WORD_YOUNG,
+ EC_POKEMON2(YANMA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYu[] = {
+ EC_POKEMON(SNORUNT),
+ EC_WORD_TAKE,
+ EC_WORD_UNION,
+ EC_MOVE2(METRONOME),
+ EC_WORD_DREAM,
+ EC_MOVE2(DREAM_EATER),
+ EC_WORD_ALLOW,
+ EC_WORD_FORGET,
+ EC_POKEMON(CRADILY),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(KADABRA),
+ EC_POKEMON(KADABRA),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseYo[] = {
+ EC_WORD_WITHOUT,
+ EC_WORD_YO,
+ EC_MOVE2(ACID),
+ EC_WORD_COME_OVER,
+ EC_WORD_KINDERGARTEN,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_AFTER,
+ EC_POKEMON2(LARVITAR),
+ EC_WORD_OH_KAY,
+ EC_WORD_BEFORE,
+ EC_WORD_GREAT,
+ EC_MOVE2(MEDITATE),
+ EC_WORD_PURE_POWER,
+ EC_WORD_WELL,
+ EC_MOVE2(SNATCH),
+ EC_WORD_OKAY,
+ EC_WORD_PLANS,
+ EC_WORD_NIGHTTIME,
+ EC_WORD_WHILE,
+ EC_POKEMON(DUSKULL),
+ EC_WORD_EASY,
+ EC_WORD_INSTEAD,
+ EC_WORD_NIGHT,
+ EC_POKEMON2(NOCTOWL),
+ EC_WORD_COUNT_ON,
+ EC_WORD_WEAK,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_WEAKENED,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRa[] = {
+ EC_POKEMON2(RAIKOU),
+ EC_WORD_WEEK,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(RAICHU),
+ EC_POKEMON(RAICHU),
+ EC_WORD_RIVAL,
+ EC_WORD_LIFE,
+ EC_POKEMON(MANECTRIC),
+ EC_WORD_SIMPLE,
+ EC_WORD_PUSHOVER,
+ EC_POKEMON(SWAMPERT),
+ EC_POKEMON(ELECTRIKE),
+ EC_WORD_SEEMS,
+ EC_WORD_RADIO,
+ EC_MOVE2(LUSTER_PURGE),
+ EC_POKEMON2(CHANSEY),
+ EC_POKEMON2(RATICATE),
+ EC_POKEMON(LATIAS),
+ EC_POKEMON(LATIOS),
+ EC_POKEMON(LUVDISC),
+ EC_POKEMON2(LAPRAS),
+ EC_WORD_LOVEY_DOVEY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VILEPLUME),
+ EC_POKEMON(VILEPLUME),
+ EC_WORD_LALALA,
+ EC_POKEMON(RALTS),
+ EC_WORD_FORGETS,
+ EC_WORD_APPEARS,
+ EC_WORD_RANK,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(LANTURN),
+ EC_POKEMON(LANTURN),
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRi[] = {
+ EC_WORD_LEADER,
+ EC_MOVE2(LEAF_BLADE),
+ EC_POKEMON2(CHARMELEON),
+ EC_POKEMON2(CHARIZARD),
+ EC_MOVE2(RECYCLE),
+ EC_MOVE2(REFLECT),
+ EC_MOVE2(REFRESH),
+ EC_MOVE2(REVENGE),
+ EC_WORD_RIBBON,
+ EC_WORD_TRENDY,
+ EC_MOVE2(DRAGON_RAGE),
+ EC_MOVE2(DRAGON_BREATH),
+ EC_MOVE2(DRAGON_DANCE),
+ EC_WORD_VACATION,
+ EC_POKEMON(LILEEP),
+ EC_POKEMON2(URSARING),
+ EC_WORD_SHIELD_DUST,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRu[] = {
+ EC_POKEMON2(JYNX),
+ EC_WORD_ROOM,
+ EC_WORD_RULE,
+ EC_POKEMON2(LUGIA),
+ EC_WORD_LOOK,
+ EC_POKEMON(LUNATONE),
+ EC_WORD_RUBY,
+ EC_WORD_THAN,
+ EC_POKEMON(AZURILL),
+ EC_POKEMON(LUDICOLO),
+ EC_WORD_HAPPILY,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRe[] = {
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MAGNETON),
+ EC_POKEMON(MAGNETON),
+ EC_MOVE2(ICE_PUNCH),
+ EC_MOVE2(ICE_BEAM),
+ EC_POKEMON(REGICE),
+ EC_POKEMON(REGISTEEL),
+ EC_POKEMON(REGIROCK),
+ EC_POKEMON(RAYQUAZA),
+ EC_WORD_UGLY,
+ EC_POKEMON2(LEDIAN),
+ EC_POKEMON2(LEDYBA),
+ EC_WORD_FANTASTIC,
+ EC_WORD_LEVEL,
+ EC_MOVE2(FURY_CUTTER),
+ EC_MOVE2(COMET_PUNCH),
+ EC_WORD_RENTAL,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseRo[] = {
+ EC_MOVE2(SKULL_BASH),
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(VULPIX),
+ EC_POKEMON(VULPIX),
+ EC_POKEMON(ROSELIA),
+ EC_MOVE2(LOCK_ON),
+ EC_MOVE2(ROCK_BLAST),
+ EC_WORD_ROMANTIC,
+ EC_WORD_QUESTION,
+};
+
+const u16 gEasyChatWordsByLetter_UnusedJapaneseWa[] = {
+ EC_WORD_YAY,
+ EC_WORD_WORLD,
+ EC_WORD_AWW,
+ EC_WORD_WIRELESS,
+ EC_WORD_WOWEE,
+ EC_POKEMON(COMBUSKEN),
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS,
+ EC_WORD_FAINT,
+ EC_WORD_ANTICIPATION,
+ EC_WORD_ONCE,
+ EC_WORD_MOVE,
+ EC_WORD_WE_VE,
+ EC_WORD_FAINTED,
+ EC_WORD_WOMAN,
+ EC_WORD_SHE,
+ EC_WORD_SHE_WAS,
+ EC_WORD_TO_HER,
+ EC_WORD_HERS,
+ EC_WORD_SHE_IS,
+ EC_WORD_SOME,
+ EC_POKEMON2(JUMPLUFF),
+ EC_MOVE2(COTTON_SPORE),
+ EC_WORD_GWAH,
+ EC_POKEMON2(TOTODILE),
+ EC_WORD_WAHAHAHA,
+ EC_WORD_ANYWHERE,
+ EC_MOVE2(STRUGGLE),
+ EC_WORD_BADLY,
+ -1, 2, // Doubled pokemon species name
+ EC_POKEMON2(MACHOP),
+ EC_POKEMON(MACHOP),
+};
+
+const struct EasyChatWordsByLetter gEasyChatWordsByLetterPointers[] = {
+ {
+ .words = gEasyChatWordsByLetter_Others,
+ .numWords = 10,
+ },
+ {
+ .words = gEasyChatWordsByLetter_A,
+ .numWords = 106,
+ },
+ {
+ .words = gEasyChatWordsByLetter_B,
+ .numWords = 86,
+ },
+ {
+ .words = gEasyChatWordsByLetter_C,
+ .numWords = 119,
+ },
+ {
+ .words = gEasyChatWordsByLetter_D,
+ .numWords = 94,
+ },
+ {
+ .words = gEasyChatWordsByLetter_E,
+ .numWords = 59,
+ },
+ {
+ .words = gEasyChatWordsByLetter_F,
+ .numWords = 80,
+ },
+ {
+ .words = gEasyChatWordsByLetter_G,
+ .numWords = 98,
+ },
+ {
+ .words = gEasyChatWordsByLetter_H,
+ .numWords = 101,
+ },
+ {
+ .words = gEasyChatWordsByLetter_I,
+ .numWords = 48,
+ },
+ {
+ .words = gEasyChatWordsByLetter_J,
+ .numWords = 13,
+ },
+ {
+ .words = gEasyChatWordsByLetter_K,
+ .numWords = 33,
+ },
+ {
+ .words = gEasyChatWordsByLetter_L,
+ .numWords = 82,
+ },
+ {
+ .words = gEasyChatWordsByLetter_M,
+ .numWords = 142,
+ },
+ {
+ .words = gEasyChatWordsByLetter_N,
+ .numWords = 54,
+ },
+ {
+ .words = gEasyChatWordsByLetter_O,
+ .numWords = 44,
+ },
+ {
+ .words = gEasyChatWordsByLetter_P,
+ .numWords = 102,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Q,
+ .numWords = 6,
+ },
+ {
+ .words = gEasyChatWordsByLetter_R,
+ .numWords = 80,
+ },
+ {
+ .words = gEasyChatWordsByLetter_S,
+ .numWords = 262,
+ },
+ {
+ .words = gEasyChatWordsByLetter_T,
+ .numWords = 133,
+ },
+ {
+ .words = gEasyChatWordsByLetter_U,
+ .numWords = 24,
+ },
+ {
+ .words = gEasyChatWordsByLetter_V,
+ .numWords = 33,
+ },
+ {
+ .words = gEasyChatWordsByLetter_W,
+ .numWords = 111,
+ },
+ {
+ .words = gEasyChatWordsByLetter_X,
+ .numWords = 4,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Y,
+ .numWords = 19,
+ },
+ {
+ .words = gEasyChatWordsByLetter_Z,
+ .numWords = 8,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHi,
+ .numWords = 55,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseFu,
+ .numWords = 71,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHe,
+ .numWords = 32,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseHo,
+ .numWords = 55,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMa,
+ .numWords = 74,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMi,
+ .numWords = 37,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMu,
+ .numWords = 12,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMe,
+ .numWords = 26,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseMo,
+ .numWords = 20,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYa,
+ .numWords = 24,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYu,
+ .numWords = 13,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseYo,
+ .numWords = 28,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRa,
+ .numWords = 36,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRi,
+ .numWords = 17,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRu,
+ .numWords = 11,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRe,
+ .numWords = 18,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseRo,
+ .numWords = 10,
+ },
+ {
+ .words = gEasyChatWordsByLetter_UnusedJapaneseWa,
+ .numWords = 33,
+ },
+};
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 5f5d20e16..afc4c6c5b 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -1,25 +1,37 @@
-
-// Includes
#include "global.h"
#include "alloc.h"
+#include "bard_music.h"
+#include "bg.h"
+#include "data2.h"
+#include "decompress.h"
#include "dewford_trend.h"
#include "dynamic_placeholder_text_util.h"
#include "easy_chat.h"
#include "event_data.h"
+#include "event_object_movement.h"
+#include "field_message_box.h"
#include "field_weather.h"
+#include "gpu_regs.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "link.h"
#include "main.h"
#include "menu.h"
#include "overworld.h"
#include "palette.h"
+#include "pokedex.h"
+#include "random.h"
#include "sound.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "text_window.h"
#include "window.h"
+#include "constants/easy_chat.h"
+#include "constants/event_objects.h"
#include "constants/flags.h"
#include "constants/songs.h"
+#include "constants/species.h"
#define EZCHAT_TASK_STATE 0
#define EZCHAT_TASK_KIND 1
@@ -28,51 +40,9 @@
#define EZCHAT_TASK_UNK06 6
#define EZCHAT_TASK_SIZE 7
-struct EasyChatScreenTemplate
-{
- u8 unk_00;
- u8 numColumns;
- u8 numRows;
- u8 unk_03_0:7;
- u8 unk_03_7:1;
- const u8 *titleText;
- const u8 *instructionsText1;
- const u8 *instructionsText2;
- const u8 *confirmText1;
- const u8 *confirmText2;
-};
-
-struct EasyChatScreen
-{
- /*0x00*/ u8 kind;
- /*0x01*/ u8 templateId;
- /*0x02*/ u8 numColumns;
- /*0x03*/ u8 numRows;
- /*0x04*/ u8 state;
- /*0x05*/ s8 mainCursorColumn;
- /*0x06*/ s8 mainCursorRow;
- /*0x07*/ u8 unk_07;
- /*0x08*/ u8 unk_08;
- /*0x09*/ u8 unk_09;
- /*0x0A*/ s8 unk_0a;
- /*0x0B*/ s8 unk_0b;
- /*0x0C*/ u8 unk_0c;
- /*0x0D*/ u8 unk_0d;
- /*0x0E*/ u8 unk_0e;
- /*0x0F*/ u8 unk_0f;
- /*0x10*/ s8 unk_10;
- /*0x11*/ s8 unk_11;
- /*0x12*/ u8 sizeParam;
- /*0x13*/ u8 unk_13;
- /*0x14*/ u8 unk_14[0x20];
- /*0x34*/ const u8 *titleText;
- /*0x38*/ u16 *words;
- /*0x3C*/ u16 ecWordBuffer[9];
-};
-
EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL;
-EWRAM_DATA void *gUnknown_0203A11C = 0;
-EWRAM_DATA void *gUnknown_0203A120 = 0;
+EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0;
+EWRAM_DATA struct Unk203A120 *gUnknown_0203A120 = 0;
static void sub_811A2C0(u8);
static void sub_811A278(void);
@@ -81,7 +51,6 @@ static void sub_811A2FC(u8);
static void sub_811A4D0(MainCallback);
static bool32 sub_811A88C(u16);
static void sub_811A8A4(u16);
-void sub_811A8F0(void);
static bool8 EasyChat_AllocateResources(u8, u16 *, u8);
static void EasyChat_FreeResources(void);
static u16 sub_811AAAC(void);
@@ -97,22 +66,22 @@ static u16 sub_811B0BC(void);
static u16 sub_811B0E8(void);
static u16 sub_811B0F8(void);
static u16 sub_811B150(void);
-u16 sub_811B1B4(void);
-u8 sub_811BA68(void);
+static u16 sub_811B1B4(void);
+static u8 sub_811BA68(void);
static u8 sub_811BCC8(u8);
static void sub_811BDF0(u8 *);
-void sub_811BF78(void);
+static void sub_811BF78(void);
static bool8 sub_811BF8C(void);
-bool8 sub_811BFA4(void);
-void sub_811C13C(void);
-/*static*/ void sub_811C158(u16);
-/*static*/ bool8 sub_811C170(void);
-bool8 sub_811F28C(void);
-void sub_811F2B8(void);
-u8 sub_811F3AC(void);
-int sub_811BA3C(void);
-int sub_811B184(void);
-int sub_811B264(void);
+static bool8 sub_811BFA4(void);
+static void sub_811C13C(void);
+static void sub_811C158(u16);
+static bool8 sub_811C170(void);
+static bool8 sub_811F28C(void);
+static void sub_811F2B8(void);
+static u8 sub_811F3AC(void);
+static int sub_811BA3C(void);
+static int sub_811B184(void);
+static int sub_811B264(void);
static int sub_811B32C(void);
static int sub_811B2B0(void);
static int sub_811B33C(void);
@@ -129,16 +98,16 @@ static void sub_811B454(void);
static int sub_811BD64(void);
static int sub_811BDB0(void);
static int sub_811BD2C(void);
-int sub_811BCF4(void);
+static int sub_811BCF4(void);
static u16 sub_811B8E8(void);
-int sub_811F3B8(u8);
-void sub_811F548(int, u16);
+static u8 sub_811F3B8(u8);
+static void sub_811F548(int, u16);
static int sub_811B908(void);
-u16 sub_811F5B0(void);
+static u16 sub_811F5B0(void);
static void sub_811B488(u16);
-u16 sub_811B940(void);
-u16 sub_811F578(u16);
-int sub_811BF88(int);
+static u16 sub_811B940(void);
+static u16 sub_811F578(u16);
+static int sub_811BF88(int);
static u16 sub_811B8C8(void);
static int sub_811B568(u32);
static int sub_811B634(u32);
@@ -152,18 +121,961 @@ static void sub_811B9A0(void);
static u8 sub_811BA1C(void);
static int sub_811BF20(void);
static u16 sub_811BF40(void);
-u8 sub_811CE94(void);
-u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
-
-extern const struct {
+static bool8 sub_811CE94(void);
+static void sub_811CF64(void);
+static void sub_811CF04(void);
+static void sub_811D60C(void);
+static void sub_811D424(u16 *);
+static void sub_811D230(void);
+static void sub_811E948(void);
+static void sub_811CFCC(void);
+static void sub_811D0BC(void);
+static void sub_811D2C8(void);
+static void sub_811D684(void);
+static void sub_811DE90(void);
+static void sub_811DEC4(void);
+static void sub_811DF28(struct Sprite *);
+static void sub_811DE5C(u8, u8, u8, u8);
+static void sub_811E5D4(void);
+static void sub_811E720(void);
+static void sub_811E828(void);
+static bool8 sub_811C2D4(void);
+static bool8 sub_811C30C(void);
+static bool8 sub_811C3E4(void);
+static bool8 sub_811C48C(void);
+static bool8 sub_811C404(void);
+static bool8 sub_811C448(void);
+static bool8 sub_811C4D0(void);
+static bool8 sub_811C518(void);
+static bool8 sub_811C554(void);
+static bool8 sub_811C620(void);
+static bool8 sub_811C830(void);
+static bool8 sub_811C8F0(void);
+static bool8 sub_811C99C(void);
+static bool8 sub_811CA5C(void);
+static bool8 sub_811C780(void);
+static bool8 sub_811C78C(void);
+static bool8 sub_811C7D4(void);
+static bool8 sub_811CB18(void);
+static bool8 sub_811CB98(void);
+static bool8 sub_811CB24(void);
+static bool8 sub_811CC90(void);
+static bool8 sub_811CC08(void);
+static bool8 sub_811C6C0(void);
+static bool8 sub_811CD14(void);
+static bool8 sub_811CD54(void);
+static bool8 sub_811CD94(void);
+static bool8 sub_811CDD4(void);
+static bool8 sub_811CE14(void);
+static bool8 sub_811CE54(void);
+static void sub_811DF60(u8, u8);
+static int sub_811E920(int);
+static void sub_811DF90(void);
+static void sub_811D104(u8);
+static void sub_811D214(u8);
+static void sub_811DFB0(void);
+static void sub_811D6D4(void);
+static void sub_811D9CC(int);
+static void sub_811E3AC(void);
+static bool8 sub_811E418(void);
+static void sub_811DFC8(void);
+static void sub_811E6E0(int);
+static bool8 sub_811DAA4(void);
+static void sub_811E64C(void);
+static void sub_811E050(void);
+static void sub_811E4AC(void);
+static void sub_811E6B0(void);
+static void sub_811E55C(void);
+static bool8 sub_811E4D0(void);
+static bool8 sub_811E5B8(void);
+static void sub_811E578(void);
+static void sub_811E088(void);
+static void sub_811DDAC(s16, u8);
+static bool8 sub_811DE10(void);
+static void sub_811D9B4(void);
+static void sub_811D698(u32);
+static void sub_811E288(void);
+static void sub_811E794(void);
+static void sub_811E380(void);
+static void sub_811E7F8(void);
+static void sub_811E30C(void);
+static void sub_811D7A4(void);
+static void sub_811D7C8(void);
+static int sub_811DE48(void);
+static void sub_811D7EC(void);
+static void sub_811D830(void);
+static void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
+static void sub_811DD84(void);
+static void sub_811D6F4(void);
+static void sub_811D758(void);
+static void sub_811D794(void);
+static const u8 *GetEasyChatWordGroupName(u8);
+static void sub_811D864(u8, u8);
+static void sub_811D950(u8, u8);
+static void sub_811DADC(u8);
+static void sub_811DC28(int, int, int, int);
+static void sub_811E0EC(s8, s8);
+static void sub_811E1A4(s8, s8);
+static void sub_811E2DC(struct Sprite *);
+static void sub_811E34C(u8, u8);
+static bool8 sub_811F0F8(void);
+static u16 sub_811F108(void);
+static void sub_811F2D4(void);
+static void sub_811F46C(void);
+static u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
+static u8 sub_811F860(u16);
+static u16 sub_811F5C4(u16);
+static u16 sub_811F6B8(u16);
+static bool8 sub_811F764(u16, u8);
+static int sub_811F838(u16);
+static void sub_811A8CC(void);
+static void sub_811A8F0(void);
+static void sub_811A914(void);
+static void sub_811A938(void);
+
+struct Unk8597530
+{
u16 word;
MainCallback callback;
-} gUnknown_08597530[4];
+};
+
+static const struct Unk8597530 sUnknown_08597530[] = {
+ {
+ .word = 26,
+ .callback = sub_811A8CC,
+ },
+ {
+ .word = 25,
+ .callback = sub_811A8F0,
+ },
+ {
+ .word = 28,
+ .callback = sub_811A914,
+ },
+ {
+ .word = 27,
+ .callback = sub_811A938,
+ },
+};
+static const struct EasyChatScreenTemplate gEasyChatScreenTemplates[] = {
+ {
+ .unk_00 = 0,
+ .numColumns = 2,
+ .numRows = 2,
+ .unk_03_0 = 0,
+ .unk_03_7 = 0,
+ .titleText = gText_Profile,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeYourProfile,
+ .confirmText1 = gText_YourProfile,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 1,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_AtTheBattlesStart,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_YourFeelingAtTheBattlesStart,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 2,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_UponWinningABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouWin,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 3,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_UponLosingABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouLose,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 4,
+ .numColumns = 2,
+ .numRows = 5,
+ .unk_03_0 = 2,
+ .unk_03_7 = 0,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage2,
+ .confirmText1 = gText_TheMailMessage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 5,
+ .numColumns = 2,
+ .numRows = 2,
+ .unk_03_0 = 5,
+ .unk_03_7 = 0,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_LetsReplyToTheInterview,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 6,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 7,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 4,
+ .unk_03_7 = 0,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 9,
+ .numColumns = 2,
+ .numRows = 1,
+ .unk_03_0 = 3,
+ .unk_03_7 = 0,
+ .titleText = gText_WhatsHipAndHappening,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeATrendySaying,
+ .confirmText1 = gText_TheTrendySaying,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 16,
+ .numColumns = 2,
+ .numRows = 5,
+ .unk_03_0 = 7,
+ .unk_03_7 = 1,
+ .titleText = NULL,
+ .instructionsText1 = gText_AfterYouHaveReadTheQuiz,
+ .instructionsText2 = gText_QuestionPressTheAButton,
+ .confirmText1 = NULL,
+ .confirmText2 = NULL,
+ },
+ {
+ .unk_00 = 15,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 6,
+ .unk_03_7 = 1,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_OutOfTheListedChoices,
+ .instructionsText2 = gText_SelectTheAnswerToTheQuiz,
+ .confirmText1 = gText_TheAnswerColon,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 17,
+ .numColumns = 2,
+ .numRows = 5,
+ .unk_03_0 = 8,
+ .unk_03_7 = 1,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndCreateAQuiz,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .unk_00 = 18,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 6,
+ .unk_03_7 = 1,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_PickAWordOrPhraseAnd,
+ .instructionsText2 = gText_SetTheQuizAnswer,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .unk_00 = 6,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 19,
+ .numColumns = 2,
+ .numRows = 3,
+ .unk_03_0 = 1,
+ .unk_03_7 = 0,
+ .titleText = gText_ApprenticesPhrase,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_ApprenticePhrase,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 13,
+ .numColumns = 2,
+ .numRows = 1,
+ .unk_03_0 = 3,
+ .unk_03_7 = 0,
+ .titleText = gText_GoodSaying,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases2,
+ .instructionsText2 = gText_ToTeachHerAGoodSaying,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 10,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 4,
+ .unk_03_7 = 0,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 12,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 4,
+ .unk_03_7 = 0,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 11,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 4,
+ .unk_03_7 = 0,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 14,
+ .numColumns = 1,
+ .numRows = 1,
+ .unk_03_0 = 4,
+ .unk_03_7 = 0,
+ .titleText = gText_FansQuestion,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_TheImage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .unk_00 = 20,
+ .numColumns = 2,
+ .numRows = 2,
+ .unk_03_0 = 0,
+ .unk_03_7 = 0,
+ .titleText = gText_Questionnaire,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_AndFillOutTheQuestionnaire,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+};
+
+static const u8 sUnknown_08597748[][7] = {
+ { 1, 2, 3, 4, 5, 6, 0},
+ { 7, 8, 9, 10, 11, 12, 0},
+ {13, 14, 15, 16, 17, 18, 19},
+ {20, 21, 22, 23, 24, 25, 26},
+};
+
+static const u16 sMysteryGiftPhrase[] = {
+ EC_WORD_LINK,
+ EC_WORD_TOGETHER,
+ EC_WORD_WITH,
+ EC_WORD_ALL,
+};
+
+static const u16 sBerryMasterWifePhrases[][2] = {
+ {EC_WORD_GREAT, EC_WORD_BATTLE},
+ {EC_WORD_CHALLENGE, EC_WORD_CONTEST},
+ {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)},
+ {EC_WORD_COOL, EC_POKEMON(LATIOS)},
+ {EC_WORD_SUPER, EC_WORD_HUSTLE},
+};
+
+static const u16 sUnknown_08597780[] = INCBIN_U16("graphics/misc/interview_triangle_cursor.gbapal");
+static const u32 sUnknown_085977A0[] = INCBIN_U32("graphics/misc/interview_triangle_cursor.4bpp");
+static const u32 sUnknown_085977C0[] = INCBIN_U32("graphics/misc/interview_arrow.4bpp");
+static const u32 sUnknown_085978C0[] = INCBIN_U32("graphics/misc/interview_buttons.4bpp");
+static const u16 sUnknown_085979C0[] = INCBIN_U16("graphics/misc/interview_frame.gbapal");
+static const u32 sUnknown_085979E0[] = INCBIN_U32("graphics/misc/interview_frame.4bpp.lz");
+static const u16 sUnknown_08597B14[] = INCBIN_U16("graphics/misc/interview_frame_orange.gbapal");
+static const u16 sUnknown_08597B34[] = INCBIN_U16("graphics/misc/interview_frame_green.gbapal");
+static const u32 sUnknown_08597B54[] = INCBIN_U32("graphics/misc/interview_frame_2.4bpp.lz");
+static const u16 sUnknown_08597C1C[] = INCBIN_U16("graphics/misc/8597C1C.gbapal");
+static const u16 sUnknown_08597C24[] = INCBIN_U16("graphics/misc/8597C24.gbapal");
+
+static const struct Unk08597C30 gUnknown_08597C30[] = {
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 4,
+ .unk1 = 24,
+ .unk2 = 4,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 3,
+ .unk1 = 24,
+ .unk2 = 6,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 0,
+ .unk1 = 24,
+ .unk2 = 10,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 5,
+ .unk1 = 24,
+ .unk2 = 2,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 16,
+ .unk0_5 = 5,
+ .unk1 = 12,
+ .unk2 = 2,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 4,
+ .unk1 = 24,
+ .unk2 = 4,
+ .unk3 = 0,
+ },
+ {
+ .unk0_0 = 9,
+ .unk0_5 = 4,
+ .unk1 = 12,
+ .unk2 = 2,
+ .unk3 = 1,
+ },
+ {
+ .unk0_0 = 5,
+ .unk0_5 = 3,
+ .unk1 = 0x14,
+ .unk2 = 10,
+ .unk3 = 3,
+ },
+ {
+ .unk0_0 = 3,
+ .unk0_5 = 0,
+ .unk1 = 24,
+ .unk2 = 10,
+ .unk3 = 2,
+ },
+};
+
+static const struct BgTemplate sEasyChatBgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x80,
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0,
+ },
+};
+
+static const struct WindowTemplate sEasyChatWindowTemplates[] = {
+ {
+ .bg = 1,
+ .tilemapLeft = 6,
+ .tilemapTop = 0,
+ .width = 18,
+ .height = 2,
+ .paletteNum = 10,
+ .baseBlock = 0x10,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 15,
+ .width = 24,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0xA,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 0,
+ .width = 28,
+ .height = 32,
+ .paletteNum = 3,
+ .baseBlock = 0,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate sEasyChatYesNoWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x6A,
+};
+
+static const u8 sText_Clear17[] = _("{CLEAR 17}");
+
+static const u8 *const sUnknown_08597C90[] = {
+ gUnknown_862B810,
+ gUnknown_862B832,
+ gUnknown_862B84B,
+ gUnknown_862B86C,
+};
+
+static const struct SpriteSheet sUnknown_08597CA0[] = {
+ {
+ .data = sUnknown_085977A0,
+ .size = 0x0020,
+ .tag = 0
+ },
+ {
+ .data = sUnknown_085977C0,
+ .size = 0x0100,
+ .tag = 2
+ },
+ {
+ .data = sUnknown_085978C0,
+ .size = 0x0100,
+ .tag = 3
+ },
+ {0}
+};
+
+static const struct SpritePalette sUnknown_08597CC0[] = {
+ {
+ .data = sUnknown_08597780,
+ .tag = 0,
+ },
+ {
+ .data = gEasyChatCursor_Pal,
+ .tag = 1,
+ },
+ {
+ .data = gEasyChatRightWindow_Pal,
+ .tag = 2,
+ },
+ {
+ .data = sUnknown_085979C0,
+ .tag = 3,
+ },
+ {0}
+};
-extern const struct EasyChatScreenTemplate gEasyChatScreenTemplates[21];
-extern const u8 gUnknown_08597748[][7];
-extern const u16 gUnknown_08597764[];
-extern const u16 gUnknown_0859776C[][2];
+static const struct CompressedSpriteSheet sUnknown_08597CE8[] = {
+ {
+ .data = sUnknown_085979E0,
+ .size = 0x0800,
+ .tag = 5,
+ },
+ {
+ .data = gEasyChatCursor_Gfx,
+ .size = 0x1000,
+ .tag = 1,
+ },
+ {
+ .data = gEasyChatRightWindow_Gfx,
+ .size = 0x0800,
+ .tag = 6,
+ },
+ {
+ .data = gEasyChatMode_Gfx,
+ .size = 0x1000,
+ .tag = 4,
+ },
+};
+
+static const u8 sUnknown_08597D08[] = {0, 12, 24, 56, 68, 80, 92};
+
+static const struct OamData sOamData_8597D10 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sUnknown_08597D18 = {
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_8597D10,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811DF28,
+};
+
+static const struct OamData sUnknown_08597D30 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597D38[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D40[] = {
+ ANIMCMD_FRAME(32, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D48[] = {
+ ANIMCMD_FRAME(64, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D50[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597D58[] = {
+ sUnknown_08597D38,
+ sUnknown_08597D40,
+ sUnknown_08597D48,
+ sUnknown_08597D50,
+};
+
+static const struct SpriteTemplate sUnknown_08597D68 = {
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &sUnknown_08597D30,
+ .anims = sUnknown_08597D58,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811DF28,
+};
+
+static const struct OamData sUnknown_08597D80 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597D88[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D90[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597D9C[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597DA8[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597DB4[] = {
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597DBC[] = {
+ sUnknown_08597D88,
+ sUnknown_08597D90,
+ sUnknown_08597D9C,
+ sUnknown_08597DA8,
+ sUnknown_08597DB4,
+};
+
+static const struct SpriteTemplate sUnknown_08597DD0 = {
+ .tileTag = 4,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597D80,
+ .anims = sUnknown_08597DBC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sUnknown_08597DE8 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sUnknown_08597DF0 = {
+ .tileTag = 6,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597DE8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sUnknown_08597E08 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_08597E10 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sUnknown_08597E18[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sUnknown_08597E20[] = {
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sUnknown_08597E28[] = {
+ sUnknown_08597E18,
+ sUnknown_08597E20,
+};
+
+static const struct SpriteTemplate sUnknown_08597E30 = {
+ .tileTag = 3,
+ .paletteTag = 2,
+ .oam = &sUnknown_08597E08,
+ .anims = sUnknown_08597E28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate sUnknown_08597E48 = {
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &gUnknown_08597E10,
+ .anims = sUnknown_08597E28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u8 sUnknown_08597E60[][4] = {
+ {16, 111, 196, 0},
+ {16, 78, 130, 160},
+ {16, 80, 134, 170},
+};
+
+static const u8 *const sFooterTextOptions[][4] = {
+ {gText_DelAll, gText_Cancel5, gText_Ok2, NULL},
+ {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Quiz},
+ {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Answer},
+};
+
+#include "data/easy_chat/easy_chat_groups.h"
+#include "data/easy_chat/easy_chat_words_by_letter.h"
+
+const u8 *const gEasyChatGroupNamePointers[] = {
+ [EC_GROUP_POKEMON] = gEasyChatGroupName_Pokemon,
+ [EC_GROUP_TRAINER] = gEasyChatGroupName_Trainer,
+ [EC_GROUP_STATUS] = gEasyChatGroupName_Status,
+ [EC_GROUP_BATTLE] = gEasyChatGroupName_Battle,
+ [EC_GROUP_GREETINGS] = gEasyChatGroupName_Greetings,
+ [EC_GROUP_PEOPLE] = gEasyChatGroupName_People,
+ [EC_GROUP_VOICES] = gEasyChatGroupName_Voices,
+ [EC_GROUP_SPEECH] = gEasyChatGroupName_Speech,
+ [EC_GROUP_ENDINGS] = gEasyChatGroupName_Endings,
+ [EC_GROUP_FEELINGS] = gEasyChatGroupName_Feelings,
+ [EC_GROUP_CONDITIONS] = gEasyChatGroupName_Conditions,
+ [EC_GROUP_ACTIONS] = gEasyChatGroupName_Actions,
+ [EC_GROUP_LIFESTYLE] = gEasyChatGroupName_Lifestyle,
+ [EC_GROUP_HOBBIES] = gEasyChatGroupName_Hobbies,
+ [EC_GROUP_TIME] = gEasyChatGroupName_Time,
+ [EC_GROUP_MISC] = gEasyChatGroupName_Misc,
+ [EC_GROUP_ADJECTIVES] = gEasyChatGroupName_Adjectives,
+ [EC_GROUP_EVENTS] = gEasyChatGroupName_Events,
+ [EC_GROUP_MOVE_1] = gEasyChatGroupName_Move1,
+ [EC_GROUP_MOVE_2] = gEasyChatGroupName_Move2,
+ [EC_GROUP_TRENDY_SAYING] = gEasyChatGroupName_TrendySaying,
+ [EC_GROUP_POKEMON_2] = gEasyChatGroupName_Pokemon2,
+};
+
+static const u16 sUnknown_0859E62C[] = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_POKEMON,
+ EC_WORD_FRIEND,
+};
+
+static const u16 sUnknown_0859E634[] = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_QUES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_EXCL,
+};
+
+static const u16 sUnknown_0859E640[] = {
+ EC_WORD_YAY,
+ EC_WORD_YAY,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_I_VE,
+ EC_WORD_WON,
+ EC_WORD_EXCL_EXCL,
+};
+
+static const u16 sUnknown_0859E64C[] = {
+ EC_WORD_TOO,
+ EC_WORD_BAD,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_WE,
+ EC_WORD_LOST,
+ EC_WORD_ELLIPSIS,
+};
+
+static const u16 sUnknown_0859E658[] = {
+ SPECIES_DEOXYS,
+};
void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
{
@@ -455,9 +1367,9 @@ static int sub_811A868(u16 word)
{
int i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_08597530); i ++)
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597530); i ++)
{
- if (word == gUnknown_08597530[i].word)
+ if (word == sUnknown_08597530[i].word)
return i;
}
return -1;
@@ -474,25 +1386,25 @@ static void sub_811A8A4(u16 word)
i = sub_811A868(word);
ResetTasks();
- sub_811A4D0(gUnknown_08597530[i].callback);
+ sub_811A4D0(sUnknown_08597530[i].callback);
}
-void sub_811A8CC(void)
+static void sub_811A8CC(void)
{
sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3);
}
-void sub_811A8F0(void)
+static void sub_811A8F0(void)
{
sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
}
-void sub_811A914(void)
+static void sub_811A914(void)
{
sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3);
}
-void sub_811A938(void)
+static void sub_811A938(void)
{
sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
}
@@ -598,47 +1510,51 @@ bool32 sub_811AB44(void)
return FALSE;
}
-#ifdef NONMATCHING
static u16 sub_811AB68(void)
{
- if (gMain.newKeys & A_BUTTON)
- {
- sub_811BF78();
- gEasyChatScreen->state = 2;
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b = 0;
- gEasyChatScreen->unk_0c = 0;
- return 9;
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- return sub_811B150();
- }
- else if (gMain.newKeys & START_BUTTON)
- {
- return sub_811B1B4();
- }
- else if (gMain.newKeys & DPAD_UP)
- {
- gEasyChatScreen->mainCursorRow--;
- }
- else if (gMain.newKeys & DPAD_LEFT)
- {
- gEasyChatScreen->mainCursorColumn--;
- }
- else if (gMain.newKeys & DPAD_DOWN)
- {
- gEasyChatScreen->mainCursorRow++;
- }
- else if (gMain.newKeys & DPAD_RIGHT)
- {
- gEasyChatScreen->mainCursorColumn++;
- }
- else
+ do
{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_811BF78();
+ gEasyChatScreen->state = 2;
+ gEasyChatScreen->unk_0a = 0;
+ gEasyChatScreen->unk_0b = 0;
+ gEasyChatScreen->unk_0c = 0;
+ return 9;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return sub_811B150();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ return sub_811B1B4();
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ gEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gEasyChatScreen->mainCursorRow++;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
return 0;
- }
-
+ } while (0);
+
if (gEasyChatScreen->mainCursorRow < 0)
gEasyChatScreen->mainCursorRow = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows;
@@ -665,238 +1581,61 @@ static u16 sub_811AB68(void)
return 2;
}
-#else
-NAKED
-static u16 sub_811AB68(void)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- ldr r0, =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0811ABB8\n\
- bl sub_811BF78\n\
- ldr r1, =gEasyChatScreen\n\
- ldr r3, [r1]\n\
- movs r2, 0\n\
- movs r0, 0x2\n\
- strb r0, [r3, 0x4]\n\
- ldr r0, [r1]\n\
- strb r2, [r0, 0xA]\n\
- ldr r0, [r1]\n\
- strb r2, [r0, 0xB]\n\
- ldr r0, [r1]\n\
- strb r2, [r0, 0xC]\n\
- movs r0, 0x9\n\
- b RETURN\n\
- .pool\n\
-_0811AB9C:\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0811AC68_dpad_left\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0811AC58_dpad_down\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0811AC48_dpad_right\n\
- movs r0, 0\n\
- b RETURN\n\
-_0811ABB8:\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0811AC78_b_button\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0811AC7E_start_button\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0811AB9C\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x6]\n\
- subs r0, 0x1\n\
-_0811ABD8:\n\
- strb r0, [r1, 0x6]\n\
-_0811ABDA:\n\
- adds r7, r2, 0\n\
- adds r4, r7, 0\n\
- ldr r2, [r4]\n\
- movs r0, 0x6\n\
- ldrsb r0, [r2, r0]\n\
- ldr r6, =gEasyChatScreenTemplates\n\
- cmp r0, 0\n\
- bge _0811ABF8\n\
- ldrb r0, [r2, 0x1]\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- ldrb r0, [r1, 0x2]\n\
- strb r0, [r2, 0x6]\n\
-_0811ABF8:\n\
- ldr r3, [r4]\n\
- movs r2, 0x6\n\
- ldrsb r2, [r3, r2]\n\
- adds r5, r6, 0\n\
- ldrb r1, [r3, 0x1]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r5\n\
- ldrb r0, [r0, 0x2]\n\
- cmp r2, r0\n\
- ble _0811AC14\n\
- movs r0, 0\n\
- strb r0, [r3, 0x6]\n\
-_0811AC14:\n\
- ldr r3, [r4]\n\
- movs r2, 0x6\n\
- ldrsb r2, [r3, r2]\n\
- ldrb r1, [r3, 0x1]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r1, r0, r5\n\
- ldrb r0, [r1, 0x2]\n\
- cmp r2, r0\n\
- bne _0811AC88\n\
- movs r0, 0x5\n\
- ldrsb r0, [r3, r0]\n\
- cmp r0, 0x2\n\
- ble _0811AC36\n\
- movs r0, 0x2\n\
- strb r0, [r3, 0x5]\n\
-_0811AC36:\n\
- ldr r1, [r4]\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x4]\n\
- movs r0, 0x3\n\
- b RETURN\n\
- .pool\n\
-_0811AC48_dpad_right:\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x5]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x5]\n\
- b _0811ABDA\n\
- .pool\n\
-_0811AC58_dpad_down:\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x6]\n\
- adds r0, 0x1\n\
- b _0811ABD8\n\
- .pool\n\
-_0811AC68_dpad_left:\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x5]\n\
- subs r0, 0x1\n\
- strb r0, [r1, 0x5]\n\
- b _0811ABDA\n\
- .pool\n\
-_0811AC78_b_button:\n\
- bl sub_811B150\n\
- b _0811AC82\n\
-_0811AC7E_start_button:\n\
- bl sub_811B1B4\n\
-_0811AC82:\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- b RETURN\n\
-_0811AC88:\n\
- movs r0, 0x5\n\
- ldrsb r0, [r3, r0]\n\
- cmp r0, 0\n\
- bge _0811AC96\n\
- ldrb r0, [r1, 0x1]\n\
- subs r0, 0x1\n\
- strb r0, [r3, 0x5]\n\
-_0811AC96:\n\
- ldr r3, [r4]\n\
- movs r2, 0x5\n\
- ldrsb r2, [r3, r2]\n\
- ldrb r1, [r3, 0x1]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r2, r0\n\
- blt _0811ACB0\n\
- movs r0, 0\n\
- strb r0, [r3, 0x5]\n\
-_0811ACB0:\n\
- bl sub_811AB44\n\
- cmp r0, 0\n\
- beq _0811ACCA\n\
- ldr r2, [r7]\n\
- ldr r0, [r2, 0x4]\n\
- ldr r1, =0x00ffff00\n\
- ands r0, r1\n\
- ldr r1, =0x00040100\n\
- cmp r0, r1\n\
- bne _0811ACCA\n\
- movs r0, 0\n\
- strb r0, [r2, 0x5]\n\
-_0811ACCA:\n\
- movs r0, 0x2\n\
-RETURN:\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
-
-#ifdef NONMATCHING
+
static u16 sub_811ACDC(void)
{
- int numFooterColumns;
-
- if (gMain.newKeys & A_BUTTON)
+ do
{
- switch (gEasyChatScreen->mainCursorColumn)
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (gEasyChatScreen->mainCursorColumn)
+ {
+ case 0:
+ return sub_811B184();
+ case 1:
+ return sub_811B150();
+ case 2:
+ return sub_811B1B4();
+ case 3:
+ return sub_811B264();
+ }
+ }
+
+ if (gMain.newKeys & B_BUTTON)
{
- case 0:
- return sub_811B184();
- case 1:
return sub_811B150();
- case 2:
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
return sub_811B1B4();
- case 3:
- return sub_811B264();
}
- }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ gEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gEasyChatScreen->mainCursorRow = 0;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ gEasyChatScreen->mainCursorColumn++;
+ break;
+ }
- if (gMain.newKeys & B_BUTTON)
- return sub_811B150();
- else if (gMain.newKeys & START_BUTTON)
- return sub_811B1B4();
- else if (gMain.newKeys & DPAD_UP)
- gEasyChatScreen->mainCursorRow--;
- else if (gMain.newKeys & DPAD_LEFT)
- gEasyChatScreen->mainCursorColumn--;
- else if (gMain.newKeys & DPAD_DOWN)
- gEasyChatScreen->mainCursorRow = 0;
- else if (gMain.newKeys & DPAD_RIGHT)
- gEasyChatScreen->mainCursorColumn++;
- else
return 0;
+ } while (0);
if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
{
- numFooterColumns = sub_811BA3C() ? 4 : 3;
+ int numFooterColumns = sub_811BA3C() ? 4 : 3;
if (gEasyChatScreen->mainCursorColumn < 0)
gEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
@@ -908,198 +1647,13 @@ static u16 sub_811ACDC(void)
if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
-
+
if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
gEasyChatScreen->mainCursorColumn = 0;
gEasyChatScreen->state = 0;
return 2;
}
-#else
-NAKED
-static u16 sub_811ACDC(void)
-{
- asm_unified("\n\
- push {r4-r6,lr}\n\
- ldr r2, =gMain\n\
- ldrh r1, [r2, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0811AD4A\n\
- ldr r0, =gEasyChatScreen\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x5]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _0811AD3E\n\
- b _0811AD24\n\
- .pool\n\
-_0811AD04:\n\
- movs r0, 0x20\n\
- ands r0, r2\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0\n\
- bne _0811ADE0\n\
- movs r0, 0x80\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0811ADD0\n\
- movs r0, 0x10\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0811ADC0\n\
- movs r0, 0\n\
- b _0811AE32\n\
-_0811AD24:\n\
- cmp r0, 0x1\n\
- bgt _0811AD2E\n\
- cmp r0, 0\n\
- beq _0811AD38\n\
- b _0811AD4A\n\
-_0811AD2E:\n\
- cmp r0, 0x2\n\
- beq _0811ADF6\n\
- cmp r0, 0x3\n\
- beq _0811AD44\n\
- b _0811AD4A\n\
-_0811AD38:\n\
- bl sub_811B184\n\
- b _0811ADFA\n\
-_0811AD3E:\n\
- bl sub_811B150\n\
- b _0811ADFA\n\
-_0811AD44:\n\
- bl sub_811B264\n\
- b _0811ADFA\n\
-_0811AD4A:\n\
- ldrh r2, [r2, 0x2E]\n\
- movs r0, 0x2\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0811ADF0\n\
- movs r0, 0x8\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0811ADF6\n\
- movs r0, 0x40\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0811AD04\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x6]\n\
- subs r0, 0x1\n\
- strb r0, [r1, 0x6]\n\
-_0811AD6E:\n\
- adds r6, r2, 0\n\
-_0811AD70:\n\
- adds r5, r6, 0\n\
- ldr r4, [r5]\n\
- movs r3, 0x6\n\
- ldrsb r3, [r4, r3]\n\
- ldr r2, =gEasyChatScreenTemplates\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r1, r0, r2\n\
- ldrb r0, [r1, 0x2]\n\
- cmp r3, r0\n\
- bne _0811AE00\n\
- bl sub_811BA3C\n\
- movs r2, 0x3\n\
- cmp r0, 0\n\
- beq _0811AD96\n\
- movs r2, 0x4\n\
-_0811AD96:\n\
- ldr r1, [r5]\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0\n\
- bge _0811ADA4\n\
- subs r0, r2, 0x1\n\
- strb r0, [r1, 0x5]\n\
-_0811ADA4:\n\
- ldr r1, [r5]\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, r2\n\
- blt _0811ADB2\n\
- movs r0, 0\n\
- strb r0, [r1, 0x5]\n\
-_0811ADB2:\n\
- movs r0, 0x3\n\
- b _0811AE32\n\
- .pool\n\
-_0811ADC0:\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x5]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x5]\n\
- b _0811AD6E\n\
- .pool\n\
-_0811ADD0:\n\
- ldr r1, =gEasyChatScreen\n\
- ldr r0, [r1]\n\
- strb r3, [r0, 0x6]\n\
- adds r6, r1, 0\n\
- b _0811AD70\n\
- .pool\n\
-_0811ADE0:\n\
- ldr r2, =gEasyChatScreen\n\
- ldr r1, [r2]\n\
- ldrb r0, [r1, 0x5]\n\
- subs r0, 0x1\n\
- strb r0, [r1, 0x5]\n\
- b _0811AD6E\n\
- .pool\n\
-_0811ADF0:\n\
- bl sub_811B150\n\
- b _0811ADFA\n\
-_0811ADF6:\n\
- bl sub_811B1B4\n\
-_0811ADFA:\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- b _0811AE32\n\
-_0811AE00:\n\
- movs r0, 0x5\n\
- ldrsb r0, [r4, r0]\n\
- ldrb r1, [r1, 0x1]\n\
- cmp r0, r1\n\
- blt _0811AE0E\n\
- subs r0, r1, 0x1\n\
- strb r0, [r4, 0x5]\n\
-_0811AE0E:\n\
- bl sub_811AB44\n\
- cmp r0, 0\n\
- beq _0811AE28\n\
- ldr r2, [r6]\n\
- ldr r0, [r2, 0x4]\n\
- ldr r1, =0x00ffff00\n\
- ands r0, r1\n\
- ldr r1, =0x00040100\n\
- cmp r0, r1\n\
- bne _0811AE28\n\
- movs r0, 0\n\
- strb r0, [r2, 0x5]\n\
-_0811AE28:\n\
- ldr r0, =gEasyChatScreen\n\
- ldr r1, [r0]\n\
- movs r0, 0\n\
- strb r0, [r1, 0x4]\n\
- movs r0, 0x2\n\
-_0811AE32:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
static u16 sub_811AE44(void)
{
@@ -1292,7 +1846,7 @@ static u16 sub_811B150(void)
}
}
-int sub_811B184(void)
+static int sub_811B184(void)
{
gEasyChatScreen->unk_08 = gEasyChatScreen->state;
if (gEasyChatScreen->kind != 6)
@@ -1308,7 +1862,7 @@ int sub_811B184(void)
}
}
-u16 sub_811B1B4(void)
+static u16 sub_811B1B4(void)
{
gEasyChatScreen->unk_08 = gEasyChatScreen->state;
if (gEasyChatScreen->kind == 17)
@@ -1385,7 +1939,7 @@ u16 sub_811B1B4(void)
}
}
-int sub_811B264(void)
+static int sub_811B264(void)
{
gEasyChatScreen->unk_08 = gEasyChatScreen->state;
switch (gEasyChatScreen->kind)
@@ -1414,8 +1968,8 @@ static int sub_811B2B0(void)
if (gEasyChatScreen->unk_09 == 0)
{
- u8 var0 = sub_811F3B8(sub_811B8E8());
- sub_811F548(0, var0);
+ u8 groupId = sub_811F3B8(sub_811B8E8());
+ sub_811F548(0, groupId);
}
else
{
@@ -1425,7 +1979,7 @@ static int sub_811B2B0(void)
var1 = sub_811F5B0();
if (var1 == 0)
return 0;
-
+
gEasyChatScreen->unk_0f = (var1 - 1) / 2;
gEasyChatScreen->unk_0e = 0;
gEasyChatScreen->unk_10 = 0;
@@ -1792,7 +2346,7 @@ static u16 sub_811B794(u32 arg0)
gEasyChatScreen->unk_0e += 4;
if (gEasyChatScreen->unk_0e > gEasyChatScreen->unk_0f - 3)
gEasyChatScreen->unk_0e = gEasyChatScreen->unk_0f + 0xFD;
-
+
sub_811B9A0();
return 22;
}
@@ -1816,10 +2370,10 @@ static int sub_811B908(void)
{
int var0 = (u8)gEasyChatScreen->unk_0a < 7 ? gEasyChatScreen->unk_0a : 0;
int var1 = (u8)gEasyChatScreen->unk_0b < 4 ? gEasyChatScreen->unk_0b : 0;
- return gUnknown_08597748[var1][var0];
+ return sUnknown_08597748[var1][var0];
}
-u16 sub_811B940(void)
+static u16 sub_811B940(void)
{
return 2 * (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e) + gEasyChatScreen->unk_10;
}
@@ -1871,7 +2425,7 @@ static u8 sub_811BA1C(void)
return sub_811B940() >= sub_811F5B0() ? 1 : 0;
}
-int sub_811BA3C(void)
+static int sub_811BA3C(void)
{
return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_7;
}
@@ -1881,7 +2435,7 @@ u8 sub_811BA5C(void)
return gEasyChatScreen->kind;
}
-u8 sub_811BA68(void)
+static u8 sub_811BA68(void)
{
return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_0;
}
@@ -1916,19 +2470,19 @@ u8 sub_811BAC4(void)
return gEasyChatScreen->mainCursorRow;
}
-void sub_811BAD0(const u8 **str1, const u8 **str2)
+static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
{
*str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText1;
*str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText2;
}
-void sub_811BB08(const u8 **str1, const u8 **str2)
+static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
{
*str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText1;
*str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText2;
}
-void sub_811BB40(const u8 **str1, const u8 **str2)
+static void sub_811BB40(const u8 **str1, const u8 **str2)
{
switch (gEasyChatScreen->kind)
{
@@ -1949,7 +2503,7 @@ void sub_811BB40(const u8 **str1, const u8 **str2)
}
-void sub_811BB88(const u8 **str1, const u8 **str2)
+static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
{
*str1 = gText_AllTextBeingEditedWill;
*str2 = gText_BeDeletedThatOkay;
@@ -2026,7 +2580,7 @@ int sub_811BC2C(void)
return 0;
}
-int sub_811BC70(void)
+static int sub_811BC70(void)
{
return sub_811BA3C();
}
@@ -2062,7 +2616,7 @@ static u8 sub_811BCC8(u8 entryType)
return 0;
}
-int sub_811BCF4(void)
+static int sub_811BCF4(void)
{
int i;
@@ -2095,7 +2649,7 @@ static int sub_811BD64(void)
if (gEasyChatScreen->kind == 17)
return sub_811BCF4();
-
+
saveBlock1 = gSaveBlock1Ptr;
for (i = 0; i < 9; i++)
{
@@ -2181,7 +2735,7 @@ static void sub_811BE9C(void)
static int sub_811BF20(void)
{
- return sub_811BC7C(gUnknown_08597764, 4) == 0;
+ return sub_811BC7C(sMysteryGiftPhrase, ARRAY_COUNT(sMysteryGiftPhrase)) == 0;
}
static u16 sub_811BF40(void)
@@ -2189,19 +2743,19 @@ static u16 sub_811BF40(void)
int i;
for (i = 0; i < 5; i++)
{
- if (!sub_811BC7C(gUnknown_0859776C[i], 2))
+ if (!sub_811BC7C(sBerryMasterWifePhrases[i], ARRAY_COUNT(*sBerryMasterWifePhrases)))
return i + 1;
}
return 0;
}
-void sub_811BF78(void)
+static void sub_811BF78(void)
{
gEasyChatScreen->unk_13 = 0;
}
-int sub_811BF88(int easyChatWord)
+static int sub_811BF88(int easyChatWord)
{
return 0;
}
@@ -2209,7 +2763,2778 @@ int sub_811BF88(int easyChatWord)
static bool8 sub_811BF8C(void)
{
if (!sub_811CE94())
- return 0;
+ return 0;
+ else
+ return 1;
+}
+
+static bool8 sub_811BFA4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates));
+ SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00);
+ SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300);
+ InitWindows(sEasyChatWindowTemplates);
+ DeactivateAllTextPrinters();
+ sub_811CF64();
+ sub_811CF04();
+ CpuFastFill(0, (void *)VRAM + 0x1000000, 0x400);
+ break;
+ case 1:
+ DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
+ CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
+ sub_811D60C();
+ sub_811D424(gUnknown_0203A11C->unk300);
+ sub_811D230();
+ sub_811E948();
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 2:
+ DecompressAndLoadBgGfxUsingHeap(1, sUnknown_08597B54, 0, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 3:
+ sub_811CFCC();
+ sub_811D0BC();
+ sub_811D2C8();
+ sub_811D684();
+ break;
+ case 4:
+ sub_811DE90();
+ if (sub_811BA5C() != 16)
+ sub_811DEC4();
+ break;
+ case 5:
+ if (IsDma3ManagerBusyWithBgCopy())
+ {
+ return TRUE;
+ }
+ else
+ {
+ sub_811DE5C(0, 0, 0, 0);
+ SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(0, 63));
+ SetGpuReg(REG_OFFSET_WINOUT, WIN_RANGE(0, 59));
+ ShowBg(3);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(0);
+ sub_811E5D4();
+ sub_811E720();
+ sub_811E828();
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ gUnknown_0203A11C->unk0++;
+ return TRUE;
+}
+
+static void sub_811C13C(void)
+{
+ if (gUnknown_0203A11C)
+ FREE_AND_SET_NULL(gUnknown_0203A11C);
+}
+
+static void sub_811C158(u16 arg0)
+{
+ gUnknown_0203A11C->unk4 = arg0;
+ gUnknown_0203A11C->unk0 = 0;
+ sub_811C170();
+}
+
+static bool8 sub_811C170(void)
+{
+ switch (gUnknown_0203A11C->unk4)
+ {
+ case 0: return FALSE;
+ case 1: return sub_811C2D4();
+ case 2: return sub_811C30C();
+ case 3: return sub_811C3E4();
+ case 4: return sub_811C48C();
+ case 5: return sub_811C404();
+ case 6: return sub_811C448();
+ case 7: return sub_811C4D0();
+ case 8: return sub_811C518();
+ case 9: return sub_811C554();
+ case 10: return sub_811C620();
+ case 11: return sub_811C830();
+ case 12: return sub_811C8F0();
+ case 13: return sub_811C99C();
+ case 14: return sub_811CA5C();
+ case 15: return sub_811C780();
+ case 16: return sub_811C78C();
+ case 17: return sub_811C7D4();
+ case 18: return sub_811CB18();
+ case 19: return sub_811CB98();
+ case 20: return sub_811CB24();
+ case 21: return sub_811CC90();
+ case 22: return sub_811CC08();
+ case 23: return sub_811C6C0();
+ case 24: return FALSE;
+ case 25: return FALSE;
+ case 26: return FALSE;
+ case 27: return FALSE;
+ case 28: return FALSE;
+ case 29: return sub_811CD14();
+ case 30: return sub_811CD54();
+ case 31: return sub_811CD94();
+ case 32: return sub_811CDD4();
+ case 33: return sub_811CE14();
+ case 34: return sub_811CE54();
+ default: return FALSE;
+ }
+}
+
+static bool8 sub_811C2D4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C30C(void)
+{
+ u8 i;
+ u16 *ecWordBuffer;
+ u16 *ecWord;
+ u8 var0;
+ u8 cursorColumn, cursorRow, numColumns;
+ s16 var1;
+ int stringWidth;
+ int trueStringWidth;
+ u8 var2;
+ u8 sp0[64];
+
+ ecWordBuffer = sub_811BA94();
+ var0 = sub_811BA68();
+ cursorColumn = sub_811BAB8();
+ cursorRow = sub_811BAC4();
+ numColumns = sub_811BAAC();
+ ecWord = &ecWordBuffer[cursorRow * numColumns];
+ var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13;
+ for (i = 0; i < cursorColumn; i++)
+ {
+ if (*ecWord == 0xFFFF)
+ {
+ stringWidth = 72;
+ }
+ else
+ {
+ CopyEasyChatWord(sp0, *ecWord);
+ stringWidth = GetStringWidth(1, sp0, 0);
+ }
+
+ trueStringWidth = stringWidth + 17;
+ var1 += trueStringWidth;
+ ecWord++;
+ }
+
+ var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2);
+ sub_811DF60(var1, var2 + 8);
+ return FALSE;
+}
+
+static bool8 sub_811C3E4(void)
+{
+ u8 var0 = sub_811E920(sub_811BAB8());
+ sub_811DF60(var0, 96);
+ return FALSE;
+}
+
+static bool8 sub_811C404(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(2);
+ sub_811D214(1);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C448(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(3);
+ sub_811D214(0);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C48C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(1);
+ sub_811D214(1);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C4D0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C518(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DFB0();
+ sub_811D104(0);
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C554(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ HideBg(0);
+ sub_811DE5C(0, 0, 0, 0);
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C620(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (sub_811E4D0() == TRUE)
+ break;
+
+ sub_811D9CC(1);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 2:
+ if (!sub_811DAA4())
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C6C0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E6B0();
+ sub_811E55C();
+ sub_811D9CC(5);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(6);
+ sub_811E578();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4() && !sub_811E5B8())
+ {
+ sub_811E64C();
+ sub_811DFC8();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 4:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C780(void)
+{
+ sub_811E088();
+ return FALSE;
+}
+
+static bool8 sub_811C78C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(1, 4);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E088();
+ sub_811E64C();
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C7D4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DDAC(-1, 4);
+ gUnknown_0203A11C->unk0++;
+ // Fall through
+ case 1:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C830(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E050();
+ sub_811E4AC();
+ sub_811E6B0();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!sub_811E4D0())
+ {
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(2);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D698(2);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E288();
+ sub_811E6E0(1);
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C8F0(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 5:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811C99C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D2C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!sub_811DAA4())
+ {
+ sub_811D104(3);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DFB0();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 6:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CA5C(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811E380();
+ sub_811E6B0();
+ sub_811E7F8();
+ sub_811D9B4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811D9CC(4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DAA4())
+ {
+ sub_811D6D4();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811E3AC();
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 4:
+ if (!sub_811E418())
+ {
+ sub_811DFC8();
+ sub_811E6E0(0);
+ sub_811E64C();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB18(void)
+{
+ sub_811E30C();
+ return FALSE;
+}
+
+static bool8 sub_811CB24(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7A4();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(1, 4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CB98(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7C8();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_811DDAC(-1, 4);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC08(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D7EC();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E30C();
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CC90(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811D830();
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ s16 var0 = sub_811BBDC() - sub_811DE48();
+ sub_811DDAC(var0, 8);
+ gUnknown_0203A11C->unk0++;
+ }
+ break;
+ case 2:
+ if (!sub_811DE10())
+ {
+ sub_811E64C();
+ sub_811E794();
+ gUnknown_0203A11C->unk0++;
+ return FALSE;
+ }
+ break;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD14(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(4);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD54(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(5);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CD94(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(6);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CDD4(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(7);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE14(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(8);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE54(void)
+{
+ switch (gUnknown_0203A11C->unk0)
+ {
+ case 0:
+ sub_811DF90();
+ sub_811D104(9);
+ gUnknown_0203A11C->unk0++;
+ break;
+ case 1:
+ return IsDma3ManagerBusyWithBgCopy();
+ }
+
+ return TRUE;
+}
+
+static bool8 sub_811CE94(void)
+{
+ gUnknown_0203A11C = Alloc(sizeof(*gUnknown_0203A11C));
+ if (!gUnknown_0203A11C)
+ return FALSE;
+
+ gUnknown_0203A11C->unk0 = 0;
+ gUnknown_0203A11C->unk2D8 = NULL;
+ gUnknown_0203A11C->unk2DC = NULL;
+ gUnknown_0203A11C->unk2E0 = NULL;
+ gUnknown_0203A11C->unk2E4 = NULL;
+ gUnknown_0203A11C->unk2E8 = NULL;
+ gUnknown_0203A11C->unk2EC = NULL;
+ gUnknown_0203A11C->unk2F0 = NULL;
+ gUnknown_0203A11C->unk2F4 = NULL;
+ gUnknown_0203A11C->unk2F8 = NULL;
+ gUnknown_0203A11C->unk2FC = NULL;
+ gUnknown_0203A11C->unkA = sub_811BC70();
+ return TRUE;
+}
+
+static void sub_811CF04(void)
+{
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+}
+
+static void sub_811CF64(void)
+{
+ ResetPaletteFade();
+ LoadPalette(gEasyChatMode_Pal, 0, 32);
+ LoadPalette(sUnknown_08597B14, 1 * 16, 32);
+ LoadPalette(sUnknown_08597B34, 4 * 16, 32);
+ LoadPalette(sUnknown_08597C1C, 10 * 16, 8);
+ LoadPalette(sUnknown_08597C24, 11 * 16, 12);
+ LoadPalette(sUnknown_08597C24, 15 * 16, 12);
+ LoadPalette(sUnknown_08597C24, 3 * 16, 12);
+}
+
+static void sub_811CFCC(void)
+{
+ int xOffset;
+ const u8 *titleText = sub_811BA88();
+ if (!titleText)
+ return;
+
+ xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
+ FillWindowPixelBuffer(0, PALETTE_NUM_TO_FILL_VALUE(0));
+ sub_811D058(0, 1, titleText, xOffset, 1, 0xFF, 0, 2, 3);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+void sub_811D028(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16))
+{
+ AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback);
+}
+
+static void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue)
+{
+ u8 color[3];
+ color[0] = red;
+ color[1] = green;
+ color[2] = blue;
+ AddTextPrinterParameterized3(windowId, fontId, left, top, color, speed, str);
+}
+
+static void sub_811D0BC(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
+ LoadUserWindowBorderGfx(1, 1, 0xE0);
+ sub_8098858(1, 1, 14);
+ sub_811D104(0);
+ PutWindowTilemap(1);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_811D104(u8 arg0)
+{
+ const u8 *text2 = NULL;
+ const u8 *text1 = NULL;
+ switch (arg0)
+ {
+ case 0:
+ GetEasyChatInstructionsText(&text1, &text2);
+ break;
+ case 2:
+ sub_811BB40(&text1, &text2);
+ break;
+ case 3:
+ GetEasyChatConfirmText(&text1, &text2);
+ break;
+ case 1:
+ GetEasyChatConfirmDeletionText(&text1, &text2);
+ break;
+ case 4:
+ text1 = gText_CreateAQuiz;
+ break;
+ case 5:
+ text1 = gText_SelectTheAnswer;
+ break;
+ case 6:
+ text1 = gText_OnlyOnePhrase;
+ text2 = gText_OriginalSongWillBeUsed;
+ break;
+ case 7:
+ text1 = gText_LyricsCantBeDeleted;
+ break;
+ case 8:
+ text1 = gText_CombineTwoWordsOrPhrases3;
+ break;
+ case 9:
+ text1 = gText_YouCannotQuitHere;
+ text2 = gText_SectionMustBeCompleted;
+ break;
+ }
+
+ FillWindowPixelBuffer(1, PALETTE_NUM_TO_FILL_VALUE(1));
+ if (text1)
+ sub_811D028(1, 1, text1, 0, 1, 0xFF, 0);
+
+ if (text2)
+ sub_811D028(1, 1, text2, 0, 17, 0xFF, 0);
+
+ CopyWindowToVram(1, 3);
+}
+
+static void sub_811D214(u8 initialCursorPos)
+{
+ CreateYesNoMenu(&sEasyChatYesNoWindowTemplate, 1, 14, initialCursorPos);
+}
+
+static void sub_811D230(void)
+{
+ u8 var0;
+ struct WindowTemplate template;
+
+ var0 = sub_811BA68();
+ template.bg = 3;
+ template.tilemapLeft = gUnknown_08597C30[var0].unk0_0;
+ template.tilemapTop = gUnknown_08597C30[var0].unk0_5;
+ template.width = gUnknown_08597C30[var0].unk1;
+ template.height = gUnknown_08597C30[var0].unk2;
+ template.paletteNum = 11;
+ template.baseBlock = 0x6C;
+ gUnknown_0203A11C->windowId = AddWindow(&template);
+ PutWindowTilemap(gUnknown_0203A11C->windowId);
+}
+
+static void sub_811D2C8(void)
+{
+ u8 spC[4];
+ u16 *ecWord;
+ u8 numColumns, numRows;
+ u8 *str;
+ int var0;
+ int var1;
+ int i, j, k;
+
+ ecWord = sub_811BA94();
+ numColumns = sub_811BAAC();
+ numRows = sub_811BAA0();
+ var0 = sub_811BA68();
+ var1 = 0;
+ if (var0 == 7)
+ var1 = 1;
+
+ FillWindowPixelBuffer(gUnknown_0203A11C->windowId, PALETTE_NUM_TO_FILL_VALUE(1));
+ for (i = 0; i < numRows; i++)
+ {
+ memcpy(spC, sText_Clear17, sizeof(sText_Clear17));
+ if (var1)
+ spC[2] = 6;
+
+ str = gUnknown_0203A11C->unkB;
+ gUnknown_0203A11C->unkB[0] = EOS;
+ str = StringAppend(str, spC);
+ for (j = 0; j < numColumns; j++)
+ {
+ if (*ecWord != 0xFFFF)
+ {
+ str = CopyEasyChatWord(str, *ecWord);
+ ecWord++;
+ }
+ else
+ {
+ ecWord++;
+ if (!var1)
+ {
+ str = WriteColorChangeControlCode(str, 0, 4);
+ for (k = 0; k < 12; k++)
+ {
+ *str = CHAR_HYPHEN;
+ str++;
+ }
+
+ str = WriteColorChangeControlCode(str, 0, 2);
+ }
+ }
+
+ if (var1)
+ spC[2] = 3;
+
+ str = StringAppend(str, spC);
+ if (var0 == 2 || var0 == 7 || var0 == 8)
+ {
+ if (j == 0 && i == 4)
+ break;
+ }
+ }
+
+ *str = EOS;
+ sub_811D028(gUnknown_0203A11C->windowId, 1, gUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
+ }
+
+ CopyWindowToVram(gUnknown_0203A11C->windowId, 3);
+}
+
+static void sub_811D424(u16 *tilemap)
+{
+ u8 var0;
+ int right, bottom;
+ int x, y;
+
+ var0 = sub_811BA68();
+ CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
+ if (var0 == 2 || var0 == 8)
+ {
+ right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
+ bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
+ for (y = gUnknown_08597C30[var0].unk0_5; y < bottom; y++)
+ {
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+ }
+ else
+ {
+ y = gUnknown_08597C30[var0].unk0_5 - 1;
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1;
+ bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2;
+ tilemap[y * 32 + x] = 0x1001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1002;
+
+ tilemap[y * 32 + x] = 0x1003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1005;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x1000;
+
+ tilemap[y* 32 + x] = 0x1007;
+ }
+
+ x = gUnknown_08597C30[var0].unk0_0 - 1;
+ tilemap[y * 32 + x] = 0x1009;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x100A;
+
+ tilemap[y * 32 + x] = 0x100B;
+ }
+}
+
+static void sub_811D60C(void)
+{
+ u8 var0;
+ u16 *tilemap;
+
+ tilemap = GetBgTilemapBuffer(3);
+ var0 = sub_811BA68();
+ switch (gUnknown_08597C30[var0].unk3)
+ {
+ case 2:
+ tilemap += 0x2A0;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 1:
+ tilemap += 0x300;
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 11, 32, 2);
+ break;
+ case 3:
+ CopyToBgTilemapBufferRect(3, tilemap, 0, 10, 32, 4);
+ break;
+ }
+}
+
+static void sub_811D684(void)
+{
+ PutWindowTilemap(2);
+ CopyBgTilemapBufferToVram(2);
+}
+
+static void sub_811D698(u32 arg0)
+{
+ sub_811DD84();
+ FillWindowPixelBuffer(2, PALETTE_NUM_TO_FILL_VALUE(1));
+ switch (arg0)
+ {
+ case 0:
+ sub_811D6F4();
+ break;
+ case 1:
+ sub_811D758();
+ break;
+ case 2:
+ sub_811D794();
+ break;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D6D4(void)
+{
+ if (!sub_811BBB0())
+ sub_811D698(0);
+ else
+ sub_811D698(1);
+}
+
+static void sub_811D6F4(void)
+{
+ int i;
+ int x, y;
+
+ i = 0;
+ y = 97;
+ while (1)
+ {
+ for (x = 0; x < 2; x++)
+ {
+ u8 groupId = sub_811F3B8(i++);
+ if (groupId == EC_NUM_GROUPS)
+ {
+ sub_811DDAC(sub_811BBBC(), 0);
+ return;
+ }
+
+ sub_811D028(2, 1, GetEasyChatWordGroupName(groupId), x * 84 + 10, y, 0xFF, NULL);
+ }
+
+ y += 16;
+ }
+}
+
+static void sub_811D758(void)
+{
+ u32 i;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597C90); i++)
+ sub_811D028(2, 1, sUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL);
+}
+
+static void sub_811D794(void)
+{
+ sub_811D864(0, 4);
+}
+
+static void sub_811D7A4(void)
+{
+ u8 var0 = sub_811BBDC() + 3;
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7C8(void)
+{
+ u8 var0 = sub_811BBDC();
+ sub_811D950(var0, 1);
+ sub_811D864(var0, 1);
+}
+
+static void sub_811D7EC(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = var0 + 4;
+ u8 var2 = sub_811BBE8() + 1;
+ if (var1 > var2)
+ var1 = var2;
+
+ if (var0 < var1)
+ {
+ u8 var3 = var1 - var0;
+ sub_811D950(var0, var3);
+ sub_811D864(var0, var3);
+ }
+}
+
+static void sub_811D830(void)
+{
+ u8 var0 = sub_811BBDC();
+ u8 var1 = sub_811DE48();
+ if (var0 < var1)
+ {
+ u8 var2 = var1 - var0;
+ sub_811D950(var0, var2);
+ sub_811D864(var0, var2);
+ }
+}
+
+static void sub_811D864(u8 arg0, u8 arg1)
+{
+ int i, j;
+ u16 easyChatWord;
+ u8 *str;
+ int y;
+ int var0;
+
+ var0 = arg0 * 2;
+ y = (arg0 * 16 + 96) & 0xFF;
+ y++;
+ for (i = 0; i < arg1; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ easyChatWord = sub_811F578(var0++);
+ if (easyChatWord != 0xFFFF)
+ {
+ CopyEasyChatWordPadded(gUnknown_0203A11C->unkCC, easyChatWord, 0);
+ if (!sub_811BF88(easyChatWord))
+ sub_811D028(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
+ else
+ sub_811D058(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
+ }
+ }
+
+ y += 16;
+ }
+
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D950(u8 arg0, u8 arg1)
+{
+ int y;
+ int var0;
+ int var1;
+ int var2;
+
+ y = (arg0 * 16 + 96) & 0xFF;
+ var2 = arg1 * 16;
+ var0 = y + var2;
+ if (var0 > 255)
+ {
+ var1 = var0 - 256;
+ var2 = 256 - y;
+ }
else
+ {
+ var1 = 0;
+ }
+
+ FillWindowPixelRect(2, 0x11, 0, y, 224, var2);
+ if (var1)
+ FillWindowPixelRect(2, 0x11, 0, 0, 224, var1);
+}
+
+static void sub_811D9B4(void)
+{
+ FillWindowPixelBuffer(2, PALETTE_NUM_TO_FILL_VALUE(1));
+ CopyWindowToVram(2, 2);
+}
+
+static void sub_811D9CC(int arg0)
+{
+ switch (arg0)
+ {
+ case 0:
+ gUnknown_0203A11C->unk6 = 0;
+ gUnknown_0203A11C->unk7 = 10;
+ break;
+ case 1:
+ gUnknown_0203A11C->unk6 = 9;
+ gUnknown_0203A11C->unk7 = 0;
+ break;
+ case 2:
+ gUnknown_0203A11C->unk6 = 11;
+ gUnknown_0203A11C->unk7 = 17;
+ break;
+ case 3:
+ gUnknown_0203A11C->unk6 = 17;
+ gUnknown_0203A11C->unk7 = 0;
+ break;
+ case 4:
+ gUnknown_0203A11C->unk6 = 17;
+ gUnknown_0203A11C->unk7 = 10;
+ break;
+ case 5:
+ gUnknown_0203A11C->unk6 = 18;
+ gUnknown_0203A11C->unk7 = 22;
+ break;
+ case 6:
+ gUnknown_0203A11C->unk6 = 22;
+ gUnknown_0203A11C->unk7 = 18;
+ break;
+ }
+
+ gUnknown_0203A11C->unk8 = gUnknown_0203A11C->unk6 < gUnknown_0203A11C->unk7 ? 1 : -1;
+}
+
+static bool8 sub_811DAA4(void)
+{
+ u8 var0, var1;
+ if (gUnknown_0203A11C->unk6 == gUnknown_0203A11C->unk7)
+ return FALSE;
+
+ gUnknown_0203A11C->unk6 += gUnknown_0203A11C->unk8;
+ sub_811DADC(gUnknown_0203A11C->unk6);
+ var0 = gUnknown_0203A11C->unk6;
+ var1 = gUnknown_0203A11C->unk7;
+ return (var0 ^ var1) > 0;
+}
+
+static void sub_811DADC(u8 arg0)
+{
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 10, 30, 10);
+ switch (arg0)
+ {
+ case 0:
+ break;
+ case 1:
+ sub_811DC28(11, 14, 3, 2);
+ break;
+ case 2:
+ sub_811DC28(9, 14, 7, 2);
+ break;
+ case 3:
+ sub_811DC28(7, 14, 11, 2);
+ break;
+ case 4:
+ sub_811DC28(5, 14, 15, 2);
+ break;
+ case 5:
+ sub_811DC28(3, 14, 19, 2);
+ break;
+ case 6:
+ sub_811DC28(1, 14, 23, 2);
+ break;
+ case 11:
+ sub_811DC28(1, 10, 24, 10);
+ break;
+ case 12:
+ sub_811DC28(1, 10, 25, 10);
+ break;
+ case 13:
+ sub_811DC28(1, 10, 26, 10);
+ break;
+ case 14:
+ sub_811DC28(1, 10, 27, 10);
+ break;
+ case 15:
+ sub_811DC28(1, 10, 28, 10);
+ break;
+ case 16:
+ sub_811DC28(1, 10, 29, 10);
+ break;
+ case 17:
+ sub_811DC28(0, 10, 30, 10);
+ break;
+ case 10:
+ case 18:
+ sub_811DC28(1, 10, 23, 10);
+ break;
+ case 9:
+ case 19:
+ sub_811DC28(1, 11, 23, 8);
+ break;
+ case 8:
+ case 20:
+ sub_811DC28(1, 12, 23, 6);
+ break;
+ case 7:
+ case 21:
+ sub_811DC28(1, 13, 23, 4);
+ break;
+ case 22:
+ sub_811DC28(1, 14, 23, 2);
+ break;
+ }
+
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void sub_811DC28(int left, int top, int width, int height)
+{
+ u16 *tilemap;
+ int right;
+ int bottom;
+ int x, y;
+
+ tilemap = gUnknown_0203A11C->unk300;
+ right = left + width - 1;
+ bottom = top + height - 1;
+ x = left;
+ y = top;
+ tilemap[y * 32 + x] = 0x4001;
+ x++;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4002;
+
+ tilemap[y * 32 + x] = 0x4003;
+ y++;
+ for (; y < bottom; y++)
+ {
+ tilemap[y * 32 + left] = 0x4005;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x4000;
+
+ tilemap[y * 32 + x] = 0x4007;
+ }
+
+ tilemap[y * 32 + left] = 0x4009;
+ x = left + 1;
+ for (; x < right; x++)
+ tilemap[y * 32 + x] = 0x400A;
+
+ tilemap[y * 32 + x] = 0x400B;
+ sub_811DE5C((left + 1) * 8, (top + 1) * 8, (width - 2) * 8, (height - 2) * 8);
+}
+
+static void sub_811DD84(void)
+{
+ ChangeBgY(2, 0x800, 0);
+ gUnknown_0203A11C->unk2CE = 0;
+}
+
+static void sub_811DDAC(s16 arg0, u8 arg1)
+{
+ int bgY;
+ s16 var0;
+
+ bgY = GetBgY(2);
+ gUnknown_0203A11C->unk2CE += arg0;
+ var0 = arg0 * 16;
+ bgY += var0 << 8;
+ if (arg1)
+ {
+ gUnknown_0203A11C->unk2D0 = bgY;
+ gUnknown_0203A11C->unk2D4 = arg1 * 256;
+ if (var0 < 0)
+ gUnknown_0203A11C->unk2D4 = -gUnknown_0203A11C->unk2D4;
+ }
+ else
+ {
+ ChangeBgY(2, bgY, 0);
+ }
+}
+
+static bool8 sub_811DE10(void)
+{
+ int bgY;
+
+ bgY = GetBgY(2);
+ if (bgY == gUnknown_0203A11C->unk2D0)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(2, gUnknown_0203A11C->unk2D4, 1);
+ return TRUE;
+ }
+}
+
+static int sub_811DE48(void)
+{
+ return gUnknown_0203A11C->unk2CE;
+}
+
+static void sub_811DE5C(u8 left, u8 top, u8 width, u8 height)
+{
+ u16 horizontalDimensions = WIN_RANGE(left, left + width);
+ u16 verticalDimensions = WIN_RANGE(top, top + height);
+ SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions);
+ SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions);
+}
+
+static void sub_811DE90(void)
+{
+ u32 i;
+
+ LoadSpriteSheets(sUnknown_08597CA0);
+ LoadSpritePalettes(sUnknown_08597CC0);
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++)
+ LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]);
+}
+
+static void sub_811DEC4(void)
+{
+ u8 var0 = sub_811BA68();
+ int x = gUnknown_08597C30[var0].unk0_0 * 8 + 13;
+ int y = gUnknown_08597C30[var0].unk0_5 * 8 + 8;
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2);
+ gUnknown_0203A11C->unk2D8 = &gSprites[spriteId];
+ gSprites[spriteId].data[1] = 1;
+}
+
+static void sub_811DF28(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ {
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 0)
+ sprite->pos2.x = -6;
+ }
+ }
+}
+
+static void sub_811DF60(u8 x, u8 y)
+{
+ gUnknown_0203A11C->unk2D8->pos1.x = x;
+ gUnknown_0203A11C->unk2D8->pos1.y = y;
+ gUnknown_0203A11C->unk2D8->pos2.x = 0;
+ gUnknown_0203A11C->unk2D8->data[0] = 0;
+}
+
+static void sub_811DF90(void)
+{
+ gUnknown_0203A11C->unk2D8->data[0] = 0;
+ gUnknown_0203A11C->unk2D8->data[1] = 0;
+ gUnknown_0203A11C->unk2D8->pos2.x = 0;
+}
+
+static void sub_811DFB0(void)
+{
+ gUnknown_0203A11C->unk2D8->data[1] = 1;
+}
+
+static void sub_811DFC8(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ gUnknown_0203A11C->unk2DC = &gSprites[spriteId];
+ gUnknown_0203A11C->unk2DC->pos2.x = 32;
+
+ spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ gUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
+ gUnknown_0203A11C->unk2E0->pos2.x = -32;
+
+ gUnknown_0203A11C->unk2DC->hFlip = 1;
+ sub_811E088();
+}
+
+static void sub_811E050(void)
+{
+ DestroySprite(gUnknown_0203A11C->unk2DC);
+ gUnknown_0203A11C->unk2DC = NULL;
+ DestroySprite(gUnknown_0203A11C->unk2E0);
+ gUnknown_0203A11C->unk2E0 = NULL;
+}
+
+static void sub_811E088(void)
+{
+ u8 var0;
+ u8 var1;
+
+ if (gUnknown_0203A11C->unk2DC && gUnknown_0203A11C->unk2E0)
+ {
+ sub_811BB9C(&var0, &var1);
+ if (!sub_811BBB0())
+ sub_811E0EC(var0, var1);
+ else
+ sub_811E1A4(var0, var1);
+ }
+}
+
+static void sub_811E0EC(s8 arg0, s8 arg1)
+{
+ if (arg0 != -1)
+ {
+ StartSpriteAnim(gUnknown_0203A11C->unk2DC, 0);
+ gUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
+ gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
+
+ StartSpriteAnim(gUnknown_0203A11C->unk2E0, 0);
+ gUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
+ gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
+ }
+ else
+ {
+ StartSpriteAnim(gUnknown_0203A11C->unk2DC, 1);
+ gUnknown_0203A11C->unk2DC->pos1.x = 216;
+ gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(gUnknown_0203A11C->unk2E0, 1);
+ gUnknown_0203A11C->unk2E0->pos1.x = 216;
+ gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ }
+}
+
+static void sub_811E1A4(s8 arg0, s8 arg1)
+{
+ int anim;
+ int x, y;
+
+ if (arg0 != -1)
+ {
+ y = arg1 * 16 + 96;
+ x = 32;
+ if (arg0 == 6 && arg1 == 0)
+ {
+ x = 158;
+ anim = 2;
+ }
+ else
+ {
+ x += sUnknown_08597D08[arg0 < ARRAY_COUNT(sUnknown_08597D08) ? arg0 : 0];
+ anim = 3;
+ }
+
+ StartSpriteAnim(gUnknown_0203A11C->unk2DC, anim);
+ gUnknown_0203A11C->unk2DC->pos1.x = x;
+ gUnknown_0203A11C->unk2DC->pos1.y = y;
+
+ StartSpriteAnim(gUnknown_0203A11C->unk2E0, anim);
+ gUnknown_0203A11C->unk2E0->pos1.x = x;
+ gUnknown_0203A11C->unk2E0->pos1.y = y;
+ }
+ else
+ {
+ StartSpriteAnim(gUnknown_0203A11C->unk2DC, 1);
+ gUnknown_0203A11C->unk2DC->pos1.x = 216;
+ gUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(gUnknown_0203A11C->unk2E0, 1);
+ gUnknown_0203A11C->unk2E0->pos1.x = 216;
+ gUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ }
+}
+
+static void sub_811E288(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4);
+ gUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
+ gUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
+ gUnknown_0203A11C->unk2E4->oam.priority = 2;
+ sub_811E30C();
+}
+
+static void sub_811E2DC(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 2)
+ {
+ sprite->data[0] = 0;
+ if (++sprite->pos2.x > 0)
+ sprite->pos2.x = -6;
+ }
+}
+
+static void sub_811E30C(void)
+{
+ s8 var0, var1, x, y;
+
+ sub_811BBC8(&var0, &var1);
+ x = var0 * 13;
+ x = x * 8 + 28;
+ y = var1 * 16 + 96;
+ sub_811E34C(x, y);
+}
+
+static void sub_811E34C(u8 x, u8 y)
+{
+ if (gUnknown_0203A11C->unk2E4)
+ {
+ gUnknown_0203A11C->unk2E4->pos1.x = x;
+ gUnknown_0203A11C->unk2E4->pos1.y = y;
+ gUnknown_0203A11C->unk2E4->pos2.x = 0;
+ gUnknown_0203A11C->unk2E4->data[0] = 0;
+ }
+}
+
+static void sub_811E380(void)
+{
+ if (gUnknown_0203A11C->unk2E4)
+ {
+ DestroySprite(gUnknown_0203A11C->unk2E4);
+ gUnknown_0203A11C->unk2E4 = NULL;
+ }
+}
+
+static void sub_811E3AC(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6);
+ gUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
+ gUnknown_0203A11C->unk2E8->pos2.x = -64;
+
+ spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5);
+ gUnknown_0203A11C->unk2EC = &gSprites[spriteId];
+ gUnknown_0203A11C->unk9 = 0;
+}
+
+static bool8 sub_811E418(void)
+{
+ switch (gUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ gUnknown_0203A11C->unk2E8->pos2.x += 8;
+ if (gUnknown_0203A11C->unk2E8->pos2.x >= 0)
+ {
+ gUnknown_0203A11C->unk2E8->pos2.x = 0;
+ if (!sub_811BBB0())
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 2);
+
+ gUnknown_0203A11C->unk9++;
+ }
+ break;
+ case 1:
+ if (gUnknown_0203A11C->unk2EC->animEnded)
+ {
+ gUnknown_0203A11C->unk9 = 2;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E4AC(void)
+{
+ gUnknown_0203A11C->unk9 = 0;
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 3);
+}
+
+static bool8 sub_811E4D0(void)
+{
+ switch (gUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ if (gUnknown_0203A11C->unk2EC->animEnded)
+ gUnknown_0203A11C->unk9 = 1;
+ break;
+ case 1:
+ gUnknown_0203A11C->unk2E8->pos2.x -= 8;
+ if (gUnknown_0203A11C->unk2E8->pos2.x <= -64)
+ {
+ DestroySprite(gUnknown_0203A11C->unk2EC);
+ DestroySprite(gUnknown_0203A11C->unk2E8);
+ gUnknown_0203A11C->unk2EC = NULL;
+ gUnknown_0203A11C->unk2E8 = NULL;
+ gUnknown_0203A11C->unk9++;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E55C(void)
+{
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 4);
+}
+
+static void sub_811E578(void)
+{
+ if (!sub_811BBB0())
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(gUnknown_0203A11C->unk2EC, 2);
+}
+
+static bool8 sub_811E5B8(void)
+{
+ return !gUnknown_0203A11C->unk2EC->animEnded;
+}
+
+static void sub_811E5D4(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0);
+ if (spriteId != MAX_SPRITES)
+ gUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
+ gUnknown_0203A11C->unk2F4->vFlip = 1;
+ }
+
+ sub_811E6B0();
+}
+
+static void sub_811E64C(void)
+{
+ gUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
+ gUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
+}
+
+static void sub_811E6B0(void)
+{
+ gUnknown_0203A11C->unk2F0->invisible = 1;
+ gUnknown_0203A11C->unk2F4->invisible = 1;
+}
+
+static void sub_811E6E0(int arg0)
+{
+ if (!arg0)
+ {
+ gUnknown_0203A11C->unk2F0->pos1.x = 96;
+ gUnknown_0203A11C->unk2F4->pos1.x = 96;
+ }
+ else
+ {
+ gUnknown_0203A11C->unk2F0->pos1.x = 120;
+ gUnknown_0203A11C->unk2F4->pos1.x = 120;
+ }
+}
+
+static void sub_811E720(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1);
+ if (spriteId != MAX_SPRITES)
+ gUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ gUnknown_0203A11C->unk2FC = &gSprites[spriteId];
+ StartSpriteAnim(gUnknown_0203A11C->unk2FC, 1);
+ }
+
+ sub_811E7F8();
+}
+
+static void sub_811E794(void)
+{
+ gUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
+ gUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
+}
+
+static void sub_811E7F8(void)
+{
+ gUnknown_0203A11C->unk2F8->invisible = 1;
+ gUnknown_0203A11C->unk2FC->invisible = 1;
+}
+
+static void sub_811E828(void)
+{
+ int graphicsId;
+ u8 spriteId;
+
+ switch (sub_811BCBC())
+ {
+ case 0:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_M;
+ break;
+ case 1:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_F;
+ break;
+ case 2:
+ graphicsId = EVENT_OBJ_GFX_BOY_1;
+ break;
+ default:
+ return;
+ }
+
+ if (sub_811BA68() != 4)
+ return;
+
+ spriteId = AddPseudoEventObject(graphicsId, SpriteCallbackDummy, 76, 40, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 0;
+ StartSpriteAnim(&gSprites[spriteId], 2);
+ }
+
+ spriteId = AddPseudoEventObject(
+ gSaveBlock2Ptr->playerGender == MALE ? EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL : EVENT_OBJ_GFX_RIVAL_MAY_NORMAL,
+ SpriteCallbackDummy,
+ 52,
+ 40,
+ 0);
+
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = 0;
+ StartSpriteAnim(&gSprites[spriteId], 3);
+ }
+}
+
+int sub_811E8E4(void)
+{
+ u8 var0 = sub_811BA68();
+ switch (gUnknown_08597C30[var0].unk3)
+ {
+ case 1:
return 1;
+ case 2:
+ return 2;
+ case 0:
+ return 0;
+ default:
+ return 3;
+ }
+}
+
+static int sub_811E920(int arg0)
+{
+ int var0 = sub_811E8E4();
+ if (var0 < 3)
+ return sUnknown_08597E60[var0][arg0] + 4;
+ else
+ return 0;
+}
+
+static void sub_811E948(void)
+{
+ int i;
+ u16 windowId;
+ struct WindowTemplate template;
+ int var0 = sub_811E8E4();
+ if (var0 == 3)
+ return;
+
+ template.bg = 3;
+ template.tilemapLeft = 1;
+ template.tilemapTop = 11;
+ template.width = 28;
+ template.height = 2;
+ template.paletteNum = 11;
+ template.baseBlock = 0x34;
+ windowId = AddWindow(&template);
+ FillWindowPixelBuffer(windowId, PALETTE_NUM_TO_FILL_VALUE(1));
+ for (i = 0; i < 4; i++)
+ {
+ const u8 *str = sFooterTextOptions[var0][i];
+ if (str)
+ {
+ int x = sUnknown_08597E60[var0][i];
+ sub_811D028(windowId, 1, str, x, 1, 0, NULL);
+ }
+ }
+
+ PutWindowTilemap(windowId);
+}
+
+static bool8 sub_811EA28(u8 groupId)
+{
+ switch (groupId)
+ {
+ case EC_GROUP_TRENDY_SAYING:
+ return FlagGet(FLAG_SYS_HIPSTER_MEET);
+ case EC_GROUP_EVENTS:
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return FlagGet(FLAG_SYS_GAME_CLEAR);
+ case EC_GROUP_POKEMON_2:
+ return sub_811F0F8();
+ default:
+ return TRUE;
+ }
+}
+
+u16 EasyChat_GetNumWordsInGroup(u8 groupId)
+{
+ if (groupId == EC_GROUP_POKEMON)
+ return GetNationalPokedexCount(FLAG_GET_SEEN);
+
+ if (sub_811EA28(groupId))
+ return gEasyChatGroups[groupId].numEnabledWords;
+
+ return 0;
+}
+
+bool8 sub_811EAA4(u16 easyChatWord)
+{
+ u16 i;
+ u8 groupId;
+ u32 index;
+ u16 numWords;
+ const u16 *list;
+ if (easyChatWord == 0xFFFF)
+ return FALSE;
+
+ groupId = EC_GROUP(easyChatWord);
+ index = EC_INDEX(easyChatWord);
+ if (groupId >= EC_NUM_GROUPS)
+ return TRUE;
+
+ numWords = gEasyChatGroups[groupId].numWords;
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ list = gEasyChatGroups[groupId].wordData.valueList;
+ for (i = 0; i < numWords; i++)
+ {
+ if (index == list[i])
+ return FALSE;
+ }
+ return TRUE;
+ default:
+ if (index >= numWords)
+ return TRUE;
+ else
+ return FALSE;
+ }
+}
+
+bool8 ECWord_CheckIfOutsideOfValidRange(u16 easyChatWord)
+{
+ int numWordsInGroup;
+ u8 groupId = EC_GROUP(easyChatWord);
+ u32 index = EC_INDEX(easyChatWord);
+ if (groupId >= EC_NUM_GROUPS)
+ return TRUE;
+
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ numWordsInGroup = gUnknown_085F5490;
+ break;
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ numWordsInGroup = gUnknown_085FA1D4;
+ break;
+ default:
+ numWordsInGroup = gEasyChatGroups[groupId].numWords;
+ break;
+ }
+
+ if (numWordsInGroup <= index)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+const u8 *GetEasyChatWord(u8 groupId, u16 index)
+{
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ case EC_GROUP_POKEMON_2:
+ return gSpeciesNames[index];
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return gMoveNames[index];
+ default:
+ return gEasyChatGroups[groupId].wordData.words[index].text;
+ }
+}
+
+u8 *CopyEasyChatWord(u8 *dest, u16 easyChatWord)
+{
+ u8 *resultStr;
+ if (sub_811EAA4(easyChatWord))
+ {
+ resultStr = StringCopy(dest, gText_ThreeQuestionMarks);
+ }
+ else if (easyChatWord != 0xFFFF)
+ {
+ u16 index = EC_INDEX(easyChatWord);
+ u8 groupId = EC_GROUP(easyChatWord);
+ resultStr = StringCopy(dest, GetEasyChatWord(groupId, index));
+ }
+ else
+ {
+ *dest = EOS;
+ resultStr = dest;
+ }
+
+ return resultStr;
+}
+
+u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows)
+{
+ u16 i, j;
+ u16 numColumns = columns - 1;
+
+ for (i = 0; i < rows; i++)
+ {
+ for (j = 0; j < numColumns; j++)
+ {
+ dest = CopyEasyChatWord(dest, *src);
+ if (*src != 0xFFFF)
+ {
+ *dest = CHAR_SPACE;
+ dest++;
+ }
+
+ src++;
+ }
+
+ dest = CopyEasyChatWord(dest, *(src++));
+ *dest = CHAR_NEWLINE;
+ dest++;
+ }
+
+ dest--;
+ *dest = EOS;
+ return dest;
+}
+
+u8 *unref_sub_811EC98(u8 *dest, const u16 *src, u16 columns, u16 rows)
+{
+ u16 i, j, k;
+ u16 numColumns;
+ int var0, var1;
+
+ numColumns = columns;
+ var1 = 0;
+ columns--;
+ for (i = 0; i < rows; i++)
+ {
+ const u16 *var2 = src;
+ var0 = 0;
+ for (j = 0; j < numColumns; j++)
+ {
+ if (var2[j] != 0xFFFF)
+ var0 = 1;
+ }
+
+ if (!var0)
+ {
+ src += numColumns;
+ continue;
+ }
+
+ for (k = 0; k < columns; k++)
+ {
+ dest = CopyEasyChatWord(dest, *src);
+ if (*src != 0xFFFF)
+ {
+ *dest = CHAR_SPACE;
+ dest++;
+ }
+
+ src++;
+ }
+
+ dest = CopyEasyChatWord(dest, *(src++));
+ if (var1 == 0)
+ *dest = CHAR_NEWLINE;
+ else
+ *dest = CHAR_PROMPT_SCROLL;
+
+ dest++;
+ var1++;
+ }
+
+ dest--;
+ *dest = EOS;
+ return dest;
+}
+
+static u16 GetEasyChatWordStringLength(u16 easyChatWord)
+{
+ if (easyChatWord == 0xFFFF)
+ return 0;
+
+ if (sub_811EAA4(easyChatWord))
+ {
+ return StringLength(gText_ThreeQuestionMarks);
+ }
+ else
+ {
+ u16 index = EC_INDEX(easyChatWord);
+ u8 groupId = EC_GROUP(easyChatWord);
+ return StringLength(GetEasyChatWord(groupId, index));
+ }
+}
+
+bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3)
+{
+ u8 i, j;
+
+ for (i = 0; i < arg2; i++)
+ {
+ u16 totalLength = arg1 - 1;
+ for (j = 0; j < arg1; j++)
+ totalLength += GetEasyChatWordStringLength(*(easyChatWords++));
+
+ if (totalLength > arg3)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+u16 sub_811EE38(u16 groupId)
+{
+ u16 index = Random() % gEasyChatGroups[groupId].numWords;
+ if (groupId == EC_GROUP_POKEMON
+ || groupId == EC_GROUP_POKEMON_2
+ || groupId == EC_GROUP_MOVE_1
+ || groupId == EC_GROUP_MOVE_2)
+ {
+ index = gEasyChatGroups[groupId].wordData.valueList[index];
+ }
+
+ return EC_WORD(groupId, index);
+}
+
+u16 sub_811EE90(u16 groupId)
+{
+ if (!sub_811EA28(groupId))
+ return 0xFFFF;
+
+ if (groupId == EC_GROUP_POKEMON)
+ return sub_811F108();
+
+ return sub_811EE38(groupId);
+}
+
+void sub_811EECC(void)
+{
+ u16 *easyChatWords;
+ int columns, rows;
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ easyChatWords = gSaveBlock1Ptr->unk2BB0;
+ columns = 2;
+ rows = 2;
+ break;
+ case 1:
+ easyChatWords = gSaveBlock1Ptr->unk2BBC;
+ if (sub_811EDC4(gSaveBlock1Ptr->unk2BBC, 3, 2, 18))
+ {
+ columns = 2;
+ rows = 3;
+ }
+ else
+ {
+ columns = 3;
+ rows = 2;
+ }
+ break;
+ case 2:
+ easyChatWords = gSaveBlock1Ptr->unk2BC8;
+ columns = 3;
+ rows = 2;
+ break;
+ case 3:
+ easyChatWords = gSaveBlock1Ptr->unk2BD4;
+ columns = 3;
+ rows = 2;
+ break;
+ default:
+ return;
+ }
+
+ ConvertEasyChatWordsToString(gStringVar4, easyChatWords, columns, rows);
+ ShowFieldAutoScrollMessage(gStringVar4);
+}
+
+void sub_811EF6C(void)
+{
+ int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE;
+ u16 easyChatWord = sub_811EE90(groupId);
+ CopyEasyChatWord(gStringVar2, easyChatWord);
+}
+
+static bool8 sub_811EF98(u8 additionalPhraseId)
+{
+ int byteOffset = additionalPhraseId / 8;
+ int shift = additionalPhraseId % 8;
+ return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1;
+}
+
+void sub_811EFC0(u8 additionalPhraseId)
+{
+ if (additionalPhraseId < 33)
+ {
+ int byteOffset = additionalPhraseId / 8;
+ int shift = additionalPhraseId % 8;
+ gSaveBlock1Ptr->additionalPhrases[byteOffset] |= 1 << shift;
+ }
+}
+
+u8 sub_811EFF0(void)
+{
+ u8 i;
+ u8 numAdditionalPhrasesUnlocked;
+
+ for (i = 0, numAdditionalPhrasesUnlocked = 0; i < 33; i++)
+ {
+ if (sub_811EF98(i))
+ numAdditionalPhrasesUnlocked++;
+ }
+
+ return numAdditionalPhrasesUnlocked;
+}
+
+u16 sub_811F01C(void)
+{
+ u16 i;
+ u16 additionalPhraseId;
+ u8 numAdditionalPhrasesUnlocked = sub_811EFF0();
+ if (numAdditionalPhrasesUnlocked == 33)
+ return 0xFFFF;
+
+ additionalPhraseId = Random() % (33 - numAdditionalPhrasesUnlocked);
+ for (i = 0; i < 33; i++)
+ {
+ if (!sub_811EF98(i))
+ {
+ if (additionalPhraseId)
+ {
+ additionalPhraseId--;
+ }
+ else
+ {
+ sub_811EFC0(i);
+ return EC_WORD(EC_GROUP_TRENDY_SAYING, i);
+ }
+ }
+ }
+
+ return 0xFFFF;
+}
+
+u16 sub_811F090(void)
+{
+ u16 i;
+ u16 additionalPhraseId = sub_811EFF0();
+ if (additionalPhraseId == 0)
+ return 0xFFFF;
+
+ additionalPhraseId = Random() % additionalPhraseId;
+ for (i = 0; i < 33; i++)
+ {
+ if (sub_811EF98(i))
+ {
+ if (additionalPhraseId)
+ additionalPhraseId--;
+ else
+ return EC_WORD(EC_GROUP_TRENDY_SAYING, i);
+ }
+ }
+
+ return 0xFFFF;
+}
+
+static bool8 sub_811F0F8(void)
+{
+ return IsNationalPokedexEnabled();
+}
+
+static u16 sub_811F108(void)
+{
+ u16 i;
+ u16 numWords;
+ const u16 *species;
+ u16 index = EasyChat_GetNumWordsInGroup(EC_GROUP_POKEMON);
+ if (index == 0)
+ return 0xFFFF;
+
+ index = Random() % index;
+ species = gEasyChatGroups[EC_GROUP_POKEMON].wordData.valueList;
+ numWords = gEasyChatGroups[EC_GROUP_POKEMON].numWords;
+ for (i = 0; i < numWords; i++)
+ {
+ u16 dexNum = SpeciesToNationalPokedexNum(*species);
+ if (GetSetPokedexFlag(dexNum, FLAG_GET_SEEN))
+ {
+ if (index)
+ index--;
+ else
+ return EC_WORD(EC_GROUP_POKEMON, *species);
+ }
+
+ species++;
+ }
+
+ return 0xFFFF;
+}
+
+void InitEasyChatPhrases(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < 4; i++)
+ gSaveBlock1Ptr->unk2BB0[i] = sUnknown_0859E62C[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->unk2BBC[i] = sUnknown_0859E634[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->unk2BC8[i] = sUnknown_0859E640[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->unk2BD4[i] = sUnknown_0859E64C[i];
+
+ for (i = 0; i < MAIL_COUNT; i++)
+ {
+ for (j = 0; j < MAIL_WORDS_COUNT; j++)
+ gSaveBlock1Ptr->mail[i].words[j] = 0xFFFF;
+ }
+
+ // BUG: This is supposed to clear 64 bits, but this loop is clearing 64 bytes.
+ // However, this bug has no resulting effect on gameplay because only the
+ // Mauville old man data is corrupted, which is initialized directly after
+ // this function is called when starting a new game.
+ for (i = 0; i < 64; i++)
+ gSaveBlock1Ptr->additionalPhrases[i] = 0;
+}
+
+static bool8 sub_811F28C(void)
+{
+ gUnknown_0203A120 = Alloc(sizeof(*gUnknown_0203A120));
+ if (!gUnknown_0203A120)
+ return FALSE;
+
+ sub_811F2D4();
+ sub_811F46C();
+ return TRUE;
+}
+
+static void sub_811F2B8(void)
+{
+ if (gUnknown_0203A120)
+ FREE_AND_SET_NULL(gUnknown_0203A120);
+}
+
+static void sub_811F2D4(void)
+{
+ int i;
+
+ gUnknown_0203A120->unk0 = 0;
+ if (GetNationalPokedexCount(FLAG_GET_SEEN))
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
+
+ for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++)
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = i;
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
+ }
+
+ if (FlagGet(FLAG_SYS_HIPSTER_MEET))
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
+
+ if (IsNationalPokedexEnabled())
+ gUnknown_0203A120->unk2[gUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
+}
+
+static u8 sub_811F3AC(void)
+{
+ return gUnknown_0203A120->unk0;
+}
+
+static u8 sub_811F3B8(u8 index)
+{
+ if (index >= gUnknown_0203A120->unk0)
+ return EC_NUM_GROUPS;
+ else
+ return gUnknown_0203A120->unk2[index];
+}
+
+u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars)
+{
+ u16 i;
+ u8 *str = StringCopy(dest, gEasyChatGroupNamePointers[groupId]);
+ for (i = str - dest; i < totalChars; i++)
+ {
+ *str = CHAR_SPACE;
+ str++;
+ }
+
+ *str = EOS;
+ return str;
+}
+
+static const u8 *GetEasyChatWordGroupName(u8 groupId)
+{
+ return gEasyChatGroupNamePointers[groupId];
+}
+
+static u8 *CopyEasyChatWordPadded(u8 *dest, u16 easyChatWord, u16 totalChars)
+{
+ u16 i;
+ u8 *str = CopyEasyChatWord(dest, easyChatWord);
+ for (i = str - dest; i < totalChars; i++)
+ {
+ *str = CHAR_SPACE;
+ str++;
+ }
+
+ *str = EOS;
+ return str;
+}
+
+static void sub_811F46C(void)
+{
+ int i, j, k;
+ int numWords;
+ const u16 *words;
+ u16 numToProcess;
+ int index;
+
+ for (i = 0; i < 27; i++)
+ {
+ numWords = gEasyChatWordsByLetterPointers[i].numWords;
+ words = gEasyChatWordsByLetterPointers[i].words;
+ gUnknown_0203A120->unk2E[i] = 0;
+ index = 0;
+ for (j = 0; j < numWords; j++)
+ {
+ if (*words == 0xFFFF)
+ {
+ words++;
+ numToProcess = *words;
+ words++;
+ j += 1 + numToProcess;
+ }
+ else
+ {
+ numToProcess = 1;
+ }
+
+ for (k = 0; k < numToProcess; k++)
+ {
+ if (sub_811F860(words[k]))
+ {
+ gUnknown_0203A120->unk64[i][index++] = words[k];
+ gUnknown_0203A120->unk2E[i]++;
+ break;
+ }
+ }
+
+ words += numToProcess;
+ }
+ }
+}
+
+static void sub_811F548(int arg0, u16 groupId)
+{
+ if (!arg0)
+ gUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
+ else
+ gUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
+}
+
+static u16 sub_811F578(u16 arg0)
+{
+ if (arg0 >= gUnknown_0203A120->unk3BA0)
+ return 0xFFFF;
+ else
+ return gUnknown_0203A120->unk3984[arg0];
+}
+
+static u16 sub_811F5B0(void)
+{
+ return gUnknown_0203A120->unk3BA0;
+}
+
+static u16 sub_811F5C4(u16 groupId)
+{
+ u32 i;
+ int totalWords;
+ const u16 *list;
+ const struct EasyChatWordInfo *wordInfo;
+ u16 numWords = gEasyChatGroups[groupId].numWords;
+
+ if (groupId == EC_GROUP_POKEMON || groupId == EC_GROUP_POKEMON_2
+ || groupId == EC_GROUP_MOVE_1 || groupId == EC_GROUP_MOVE_2)
+ {
+ list = gEasyChatGroups[groupId].wordData.valueList;
+ for (i = 0, totalWords = 0; i < numWords; i++)
+ {
+ if (sub_811F764(list[i], groupId))
+ gUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]);
+ }
+
+ return totalWords;
+ }
+ else
+ {
+ wordInfo = gEasyChatGroups[groupId].wordData.words;
+ for (i = 0, totalWords = 0; i < numWords; i++)
+ {
+ u16 alphabeticalOrder = wordInfo[i].alphabeticalOrder;
+ if (sub_811F764(alphabeticalOrder, groupId))
+ gUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder);
+ }
+
+ return totalWords;
+ }
+}
+
+static u16 sub_811F6B8(u16 alphabeticalGroup)
+{
+ u16 i;
+ u16 totalWords;
+
+ for (i = 0, totalWords = 0; i < gUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
+ gUnknown_0203A120->unk3984[totalWords++] = gUnknown_0203A120->unk64[alphabeticalGroup][i];
+
+ return totalWords;
+}
+
+static bool8 sub_811F72C(u8 arg0)
+{
+ int i;
+ for (i = 0; i < gUnknown_0203A120->unk0; i++)
+ {
+ if (gUnknown_0203A120->unk2[i] == arg0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_811F764(u16 wordIndex, u8 groupId)
+{
+ switch (groupId)
+ {
+ case EC_GROUP_POKEMON:
+ return GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
+ case EC_GROUP_POKEMON_2:
+ if (sub_811F838(wordIndex))
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN);
+ return TRUE;
+ case EC_GROUP_MOVE_1:
+ case EC_GROUP_MOVE_2:
+ return TRUE;
+ case EC_GROUP_TRENDY_SAYING:
+ return sub_811EF98(wordIndex);
+ default:
+ return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled;
+ }
+}
+
+static int sub_811F838(u16 species)
+{
+ u32 i;
+ for (i = 0; i < ARRAY_COUNT(sUnknown_0859E658); i++)
+ {
+ if (sUnknown_0859E658[i] == species)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u8 sub_811F860(u16 easyChatWord)
+{
+ u8 groupId = EC_GROUP(easyChatWord);
+ u32 index = EC_INDEX(easyChatWord);
+ if (!sub_811F72C(groupId))
+ return FALSE;
+ else
+ return sub_811F764(index, groupId);
+}
+
+void InitializeEasyChatWordArray(u16 *words, u16 length)
+{
+ u16 i;
+ for (i = length - 1; i != 0xFFFF; i--)
+ *(words++) = 0xFFFF;
+}
+
+void sub_811F8BC(void)
+{
+ int i;
+ u16 *words = GetSaveBlock1Field3564();
+ for (i = 0; i < 4; i++)
+ words[i] = 0xFFFF;
+}
+
+bool32 sub_811F8D8(int easyChatWord)
+{
+ int groupId = EC_GROUP(easyChatWord);
+ int mask = 0x7F;
+ int index = EC_INDEX(easyChatWord);
+ if (!sub_811EA28(groupId & mask))
+ return FALSE;
+ else
+ return sub_811F764(index, groupId & mask);
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 8fb21dbbe..66114f19f 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -574,7 +574,7 @@ static void Task_EggHatchPlayBGM(u8 taskID)
if (gTasks[taskID].data[0] == 0)
{
StopMapMusic();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
}
if (gTasks[taskID].data[0] == 1)
PlayBGM(MUS_ME_SHINKA);
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 00dce4c7d..cffafaf9f 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -147,7 +147,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input)
if (CheckForTrainersWantingBattle() == TRUE)
return TRUE;
- if (mapheader_run_first_tag2_script_list_match() == 1)
+ if (TryRunOnFrameMapScript() == TRUE)
return TRUE;
if (input->pressedBButton && TrySetupDiveEmergeScript() == TRUE)
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 93017f125..0a4f3212b 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -503,7 +503,7 @@ void DoWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
@@ -514,7 +514,7 @@ void DoDiveWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
}
@@ -524,7 +524,7 @@ void sub_80AF79C(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
FadeScreen(FADE_TO_WHITE, 8);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = sub_80AF3B0;
CreateTask(sub_80AFA0C, 10);
}
@@ -734,7 +734,7 @@ static void sub_80AFA88(u8 taskId)
case 4:
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
task->data[0] = 0;
task->func = sub_80AFA0C;
break;
@@ -771,7 +771,7 @@ void sub_80AFC60(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_80AF3C8;
CreateTask(task0A_fade_n_map_maybe, 10);
diff --git a/src/field_specials.c b/src/field_specials.c
index bdac426bd..1cf16e74c 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -54,6 +54,7 @@
#include "constants/moves.h"
#include "constants/vars.h"
#include "constants/battle_frontier.h"
+#include "constants/weather.h"
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
@@ -3527,9 +3528,9 @@ bool8 sub_813B3B0(void)
}
}
-void sub_813B484(void)
+void Unused_SetWeatherSunny(void)
{
- sub_80AB104(2);
+ SetCurrentAndNextWeather(WEATHER_SUNNY);
}
bool32 sub_813B490(void)
diff --git a/src/field_weather.c b/src/field_weather.c
index 0db635c60..9913e9a61 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -186,11 +186,11 @@ void StartWeather(void)
}
}
-void ChangeWeather(u8 weather)
+void SetNextWeather(u8 weather)
{
if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
}
if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather)
@@ -203,18 +203,19 @@ void ChangeWeather(u8 weather)
gWeatherPtr->finishStep = 0;
}
-void sub_80AB104(u8 weather)
+void SetCurrentAndNextWeather(u8 weather)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gWeatherPtr->currWeather = weather;
gWeatherPtr->nextWeather = weather;
}
-void sub_80AB130(u8 weather)
+void SetCurrentAndNextWeatherNoDelay(u8 weather)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gWeatherPtr->currWeather = weather;
gWeatherPtr->nextWeather = weather;
+ // Overrides the normal delay during screen fading.
gWeatherPtr->readyForInit = TRUE;
}
@@ -1053,7 +1054,7 @@ void SetRainStrengthFromSoundEffect(u16 soundEffect)
}
}
-void PlayRainSoundEffect(void)
+void PlayRainStoppingSoundEffect(void)
{
if (IsSpecialSEPlaying())
{
diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c
index 2ec51a722..be8fdc6cb 100644
--- a/src/field_weather_effect.c
+++ b/src/field_weather_effect.c
@@ -16,8 +16,8 @@
void sub_80AC6B4(struct Sprite *);
// EWRAM
-EWRAM_DATA static u8 gUnknown_02038BC4 = 0;
-EWRAM_DATA static u16 gUnknown_02038BC6 = 0;
+EWRAM_DATA static u8 gCurrentAlternatingWeather = 0;
+EWRAM_DATA static u16 gUnusedWeatherRelated = 0;
// CONST
const u16 gUnknown_0854C290[] = INCBIN_U16("graphics/weather/1.gbapal");
@@ -2286,13 +2286,14 @@ void unc_0807DAB4(struct Sprite *sprite)
//------------------------------------------------------------------------------
-static void sub_80AEC94(u32 a0, u32 a1)
+// Unused function.
+static void UnusedSetCurrentAlternatingWeather(u32 a0, u32 a1)
{
- gUnknown_02038BC4 = a0;
- gUnknown_02038BC6 = a1;
+ gCurrentAlternatingWeather = a0;
+ gUnusedWeatherRelated = a1;
}
-static void sub_80AECA8(u8 taskId)
+static void Task_DoAlternatingWeather(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -2301,8 +2302,8 @@ static void sub_80AECA8(u8 taskId)
case 0:
if (data[15]-- <= 0)
{
- ChangeWeather(data[1]);
- gUnknown_02038BC4 = data[1];
+ SetNextWeather(data[1]);
+ gCurrentAlternatingWeather = data[1];
data[15] = 600;
data[0]++;
}
@@ -2310,8 +2311,8 @@ static void sub_80AECA8(u8 taskId)
case 1:
if (data[15]-- <= 0)
{
- ChangeWeather(data[2]);
- gUnknown_02038BC4 = data[2];
+ SetNextWeather(data[2]);
+ gCurrentAlternatingWeather = data[2];
data[15] = 600;
data[0] = 0;
}
@@ -2319,25 +2320,25 @@ static void sub_80AECA8(u8 taskId)
}
}
-static void sub_80AED28(void)
+static void CreateAlternatingWeatherTask(void)
{
- u8 taskId = CreateTask(sub_80AECA8, 0);
+ u8 taskId = CreateTask(Task_DoAlternatingWeather, 0);
s16 *data = gTasks[taskId].data;
data[15] = 600;
- if (gUnknown_02038BC4 == WEATHER_RAIN_HEAVY)
+ if (gCurrentAlternatingWeather == WEATHER_RAIN_HEAVY)
{
data[1] = WEATHER_DROUGHT;
data[2] = WEATHER_RAIN_HEAVY;
}
- else if (gUnknown_02038BC4 == WEATHER_DROUGHT)
+ else if (gCurrentAlternatingWeather == WEATHER_DROUGHT)
{
data[1] = WEATHER_RAIN_HEAVY;
data[2] = WEATHER_DROUGHT;
}
else
{
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
data[1] = WEATHER_DROUGHT;
data[2] = WEATHER_RAIN_HEAVY;
}
@@ -2368,51 +2369,51 @@ void SetSav1WeatherFromCurrMapHeader(void)
void SetWeather(u32 weather)
{
SetSav1Weather(weather);
- ChangeWeather(GetSav1Weather());
+ SetNextWeather(GetSav1Weather());
}
void SetWeather_Unused(u32 weather)
{
SetSav1Weather(weather);
- sub_80AB104(GetSav1Weather());
+ SetCurrentAndNextWeather(GetSav1Weather());
}
void DoCurrentWeather(void)
{
u8 weather = GetSav1Weather();
- if (weather == WEATHER_15)
+ if (weather == WEATHER_ALTERNATING)
{
- if (!FuncIsActiveTask(sub_80AECA8))
- sub_80AED28();
- weather = gUnknown_02038BC4;
+ if (!FuncIsActiveTask(Task_DoAlternatingWeather))
+ CreateAlternatingWeatherTask();
+ weather = gCurrentAlternatingWeather;
}
else
{
- if (FuncIsActiveTask(sub_80AECA8))
- DestroyTask(FindTaskIdByFunc(sub_80AECA8));
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ if (FuncIsActiveTask(Task_DoAlternatingWeather))
+ DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather));
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
}
- ChangeWeather(weather);
+ SetNextWeather(weather);
}
-void sub_80AEE84(void)
+void ResumePausedWeather(void)
{
u8 weather = GetSav1Weather();
- if (weather == WEATHER_15)
+ if (weather == WEATHER_ALTERNATING)
{
- if (!FuncIsActiveTask(sub_80AECA8))
- sub_80AED28();
- weather = gUnknown_02038BC4;
+ if (!FuncIsActiveTask(Task_DoAlternatingWeather))
+ CreateAlternatingWeatherTask();
+ weather = gCurrentAlternatingWeather;
}
else
{
- if (FuncIsActiveTask(sub_80AECA8))
- DestroyTask(FindTaskIdByFunc(sub_80AECA8));
- gUnknown_02038BC4 = WEATHER_RAIN_HEAVY;
+ if (FuncIsActiveTask(Task_DoAlternatingWeather))
+ DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather));
+ gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY;
}
- sub_80AB104(weather);
+ SetCurrentAndNextWeather(weather);
}
static const u8 sWeatherCycleRoute119[] =
@@ -2434,25 +2435,25 @@ static u8 TranslateWeatherNum(u8 weather)
{
switch (weather)
{
- case WEATHER_NONE: return WEATHER_NONE;
- case WEATHER_CLOUDS: return WEATHER_CLOUDS;
- case WEATHER_SUNNY: return WEATHER_SUNNY;
- case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
- case WEATHER_SNOW: return WEATHER_SNOW;
- case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
- case WEATHER_FOG_1: return WEATHER_FOG_1;
- case WEATHER_ASH: return WEATHER_ASH;
- case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
- case WEATHER_FOG_2: return WEATHER_FOG_2;
- case WEATHER_FOG_3: return WEATHER_FOG_3;
- case WEATHER_SHADE: return WEATHER_SHADE;
- case WEATHER_DROUGHT: return WEATHER_DROUGHT;
- case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
- case WEATHER_BUBBLES: return WEATHER_BUBBLES;
- case WEATHER_15: return WEATHER_15;
+ case WEATHER_NONE: return WEATHER_NONE;
+ case WEATHER_CLOUDS: return WEATHER_CLOUDS;
+ case WEATHER_SUNNY: return WEATHER_SUNNY;
+ case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
+ case WEATHER_SNOW: return WEATHER_SNOW;
+ case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
+ case WEATHER_FOG_1: return WEATHER_FOG_1;
+ case WEATHER_ASH: return WEATHER_ASH;
+ case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
+ case WEATHER_FOG_2: return WEATHER_FOG_2;
+ case WEATHER_FOG_3: return WEATHER_FOG_3;
+ case WEATHER_SHADE: return WEATHER_SHADE;
+ case WEATHER_DROUGHT: return WEATHER_DROUGHT;
+ case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
+ case WEATHER_BUBBLES: return WEATHER_BUBBLES;
+ case WEATHER_ALTERNATING: return WEATHER_ALTERNATING;
case WEATHER_ROUTE119_CYCLE: return sWeatherCycleRoute119[gSaveBlock1Ptr->weatherCycleStage];
case WEATHER_ROUTE123_CYCLE: return sWeatherCycleRoute123[gSaveBlock1Ptr->weatherCycleStage];
- default: return WEATHER_NONE;
+ default: return WEATHER_NONE;
}
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 7d9d079fc..cf5f0356e 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -53,7 +53,7 @@ void InitMap(void)
{
InitMapLayoutData(&gMapHeader);
sub_80E8EE0(gMapHeader.events);
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
}
void InitMapFromSavedGame(void)
@@ -62,7 +62,7 @@ void InitMapFromSavedGame(void)
sub_80E9238(0);
sub_80E8EE0(gMapHeader.events);
LoadSavedMapView();
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
}
@@ -775,7 +775,7 @@ bool8 CameraMove(int x, int y)
old_y = gSaveBlock1Ptr->pos.y;
connection = sub_8088950(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
sub_80887F8(connection, direction, x, y);
- mliX_load_map(connection->mapGroup, connection->mapNum);
+ LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum);
gCamera.active = TRUE;
gCamera.x = old_x - gSaveBlock1Ptr->pos.x;
gCamera.y = old_y - gSaveBlock1Ptr->pos.y;
diff --git a/src/graphics.c b/src/graphics.c
index c6af13477..a3b9eb913 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1152,16 +1152,16 @@ const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapa
const u32 gMoveTypes_Gfx[] = INCBIN_U32("graphics/types/move_types.4bpp.lz");
const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz");
-const u32 gUnknown_08D97BEC[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
+const u32 gMoveSelectorBitmap[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
const u32 gUnknown_08D97CF4[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.lz");
-const u32 gUnknown_08D97D0C[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz");
-const u32 gUnknown_08D9853C[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz");
-const u32 gUnknown_08D9862C[] = INCBIN_U32("graphics/interface/status_screen.bin.lz");
+const u32 gStatusScreenBitmap[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz");
+const u32 gStatusScreenPalette[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz");
+const u32 gPageInfoTilemap[] = INCBIN_U32("graphics/interface/status_screen.bin.lz");
-const u32 gUnknown_08D987FC[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz");
-const u32 gUnknown_08D9898C[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz");
-const u32 gUnknown_08D98B28[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz");
+const u32 gPageSkillsTilemap[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz");
+const u32 gPageBattleMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz");
+const u32 gPageContestMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz");
const u32 gUnknown_08D98CC8[] = INCBIN_U32("graphics/interface/status_tilemap0.bin.lz");
const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz");
diff --git a/src/mail.c b/src/mail.c
index e8b750bfa..27716a3f8 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -102,7 +102,7 @@ struct MailRead
/*0x021d*/ u8 language;
/*0x021e*/ bool8 playerIsSender;
/*0x0220*/ u8 * (*parserSingle)(u8 *dest, u16 word);
- /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
+ /*0x0224*/ u8 * (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
/*0x0228*/ const struct MailLayout *layout;
/*0x022c*/ u8 bg1TilemapBuffer[0x1000];
/*0x122c*/ u8 bg2TilemapBuffer[0x1000];
diff --git a/src/overworld.c b/src/overworld.c
index 08fd94c1b..a10d1e17a 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -761,7 +761,7 @@ static bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
}
else
{
- mapheader_run_script_with_tag_x6();
+ RunOnDiveWarpMapScript();
if (IsDummyWarp(&gFixedDiveWarp))
return FALSE;
SetWarpDestinationToDiveWarp();
@@ -779,7 +779,7 @@ bool8 SetDiveWarpDive(u16 x, u16 y)
return SetDiveWarp(CONNECTION_DIVE, x, y);
}
-void mliX_load_map(u8 mapGroup, u8 mapNum)
+void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
{
s32 paletteIndex;
@@ -800,7 +800,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
ChooseAmbientCrySpecies();
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
- mapheader_run_script_with_tag_x3();
+ RunOnTransitionMapScript();
InitMap();
copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
apply_map_tileset2_palette(gMapHeader.mapLayout);
@@ -813,7 +813,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
RoamerMove();
DoCurrentWeather();
ResetFieldTasksArgs();
- mapheader_run_script_with_tag_x5();
+ RunOnResumeMapScript();
if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId)
ShowMapNamePopup();
@@ -852,7 +852,7 @@ static void mli0_load_map(u32 a1)
FlagClear(FLAG_SYS_USE_FLASH);
SetDefaultFlashLevel();
Overworld_ClearSavedMusic();
- mapheader_run_script_with_tag_x3();
+ RunOnTransitionMapScript();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE)
@@ -2123,10 +2123,10 @@ static void sub_8086988(u32 a1)
FieldEffectActiveListClear();
StartWeather();
- sub_80AEE84();
+ ResumePausedWeather();
if (!a1)
SetUpFieldTasks();
- mapheader_run_script_with_tag_x5();
+ RunOnResumeMapScript();
TryStartMirageTowerPulseBlendEffect();
}
@@ -2136,7 +2136,7 @@ static void sub_80869DC(void)
gTotalCameraPixelOffsetY = 0;
ResetEventObjects();
TrySpawnEventObjects(0, 0);
- mapheader_run_first_tag4_script_list_match();
+ TryRunOnWarpIntoMapScript();
}
static void mli4_mapscripts_and_other(void)
@@ -2153,14 +2153,14 @@ static void mli4_mapscripts_and_other(void)
SetPlayerAvatarTransitionFlags(player->transitionFlags);
ResetInitialPlayerAvatarState();
TrySpawnEventObjects(0, 0);
- mapheader_run_first_tag4_script_list_match();
+ TryRunOnWarpIntoMapScript();
}
static void sub_8086A68(void)
{
sub_808E16C(0, 0);
RotatingGate_InitPuzzleAndGraphics();
- mapheader_run_script_with_tag_x7();
+ RunOnReturnToFieldMapScript();
}
static void sub_8086A80(void)
diff --git a/src/party_menu.c b/src/party_menu.c
index 51088af5f..ceb89ae30 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3833,7 +3833,7 @@ static void sub_81B3828(void)
static void sub_81B3894(void)
{
gPaletteFade.bufferTransferDisabled = TRUE;
- gUnknown_0203CEC8.unk9 = gUnknown_0203CF20;
+ gUnknown_0203CEC8.unk9 = gLastViewedMonIndex;
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
}
@@ -7319,9 +7319,9 @@ static void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo);
u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom);
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
- u8 ppBonusMask1 = gUnknown_08329D22[slotTo];
+ u8 ppBonusMask1 = gPPUpGetMask[slotTo];
u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2);
- u8 ppBonusMask2 = gUnknown_08329D22[slotFrom];
+ u8 ppBonusMask2 = gPPUpGetMask[slotFrom];
u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2);
ppBonuses &= ~ppBonusMask1;
ppBonuses &= ~ppBonusMask2;
diff --git a/src/pokemon.c b/src/pokemon.c
index 9553fdf17..a35033d49 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2227,9 +2227,9 @@ static const u8 sMonAnimationDelayTable[] =
[SPECIES_CHIMECHO - 1] = 0x00,
};
-const u8 gUnknown_08329D22[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
-const u8 gUnknown_08329D26[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count
-const u8 gUnknown_08329D2A[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count
+const u8 gPPUpGetMask[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
+const u8 gPPUpSetMask[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count
+const u8 gPPUpAddMask[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count
const u8 gStatStageRatios[][2] =
{
@@ -4914,19 +4914,19 @@ void GetSpeciesName(u8 *name, u16 species)
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)
{
u8 basePP = gBattleMoves[move].pp;
- return basePP + ((basePP * 20 * ((gUnknown_08329D22[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
+ return basePP + ((basePP * 20 * ((gPPUpGetMask[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
}
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex)
{
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
- ppBonuses &= gUnknown_08329D26[moveIndex];
+ ppBonuses &= gPPUpSetMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
}
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex)
{
- mon->ppBonuses &= gUnknown_08329D26[moveIndex];
+ mon->ppBonuses &= gPPUpSetMask[moveIndex];
}
void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
@@ -5169,11 +5169,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
if (r10 & 0x20)
{
r10 &= ~0x20;
- dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2);
+ dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
var_38 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (dataUnsigned <= 2 && var_38 > 4)
{
- dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gUnknown_08329D2A[moveIndex];
+ dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex];
SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned);
dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - var_38;
@@ -5429,13 +5429,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
var_3C++;
break;
case 4:
- dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2);
+ dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2);
r5 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex);
if (dataUnsigned < 3 && r5 > 4)
{
dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
- dataUnsigned &= gUnknown_08329D26[moveIndex];
- dataUnsigned += gUnknown_08329D2A[moveIndex] * 3;
+ dataUnsigned &= gPPUpSetMask[moveIndex];
+ dataUnsigned += gPPUpAddMask[moveIndex] * 3;
SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned);
dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - r5;
@@ -7025,7 +7025,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF
}
}
-void sub_806EE98(void)
+void StopPokemonAnimationDelayTask(void)
{
u8 delayTaskId = FindTaskIdByFunc(Task_PokemonSummaryAnimateAfterDelay);
if (delayTaskId != 0xFF)
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index a99a473eb..d18077f21 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -6654,7 +6654,7 @@ static void sub_80CE8E4(void)
if (sIsMonBeingMoved)
sub_80CE790();
else
- sBoxCursorPosition = gUnknown_0203CF20;
+ sBoxCursorPosition = gLastViewedMonIndex;
}
s16 CompactPartySlots(void)
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index b34dcd9fb..0f88b7d73 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -97,25 +97,22 @@ static EWRAM_DATA struct PssData
u8 currPageIndex;
u8 minPageIndex;
u8 maxPageIndex;
- bool8 unk40C3;
+ bool8 lockMonFlag; // This is used to prevent the player from changing pokemon in the move deleter select, etc, but it is not needed because the input is handled differently there
u16 newMove;
u8 firstMoveIndex;
u8 secondMoveIndex;
bool8 unk40C8;
- u8 unk40C9;
+ u8 bgDisplayOrder; // Determines the order page backgrounds are loaded while scrolling between them
u8 filler40CA;
u8 windowIds[8];
u8 spriteIds[28];
bool8 unk40EF;
- s16 unk40F0;
+ s16 switchCounter; // Used for various switch statement cases that decompress/load graphics or pokemon data
u8 unk_filler4[6];
} *pssData = NULL;
-EWRAM_DATA u8 gUnknown_0203CF20 = 0;
-static EWRAM_DATA u8 gUnknown_0203CF21 = 0;
-static EWRAM_DATA u8 gFiller_0203CF22[2] = {0};
-static EWRAM_DATA u8 sUnknownTaskId = 0;
-static EWRAM_DATA u8 gFiller_0203CF25[3] = {0};
-
+EWRAM_DATA u8 gLastViewedMonIndex = 0;
+static EWRAM_DATA u8 sUnknown_0203CF21 = 0;
+ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
struct UnkStruct_61CC04
@@ -144,11 +141,11 @@ static s8 sub_81C08F8(s8 a);
static s8 sub_81C09B4(s8 a);
static bool8 sub_81C0A50(struct Pokemon* mon);
static void ChangePage(u8 taskId, s8 a);
-static void sub_81C0B8C(u8 taskId);
-static void sub_81C0C68(u8 taskId);
-static void sub_81C0CC4(u8 taskId);
-static void sub_81C0D44(u8 taskId);
-static void sub_81C0E24(void);
+static void PssScrollRight(u8 taskId);
+static void PssScrollRightEnd(u8 taskId);
+static void PssScrollLeft(u8 taskId);
+static void PssScrollLeftEnd(u8 taskId);
+static void CheckExperienceProgressBar(void);
static void sub_81C0E48(u8 taskId);
static void HandleInput_MoveSelect(u8 taskId);
static bool8 sub_81C1040(void);
@@ -160,11 +157,11 @@ static void sub_81C13B0(u8 taskId, bool8 b);
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2);
static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2);
static void sub_81C171C(u8 taskId);
-static void sub_81C174C(u8 taskId);
-static bool8 sub_81C18A8(void);
-static void sub_81C18F4(u8 a);
-static void sub_81C1940(u8 taskId);
-static void sub_81C1BA0(void);
+static void HandleReplaceMoveInput(u8 taskId);
+static bool8 CanReplaceMove(void);
+static void ShowHMMovesCantBeForgottenWindow(u8 a);
+static void HandleHMMovesCantBeForgottenInput(u8 taskId);
+static void DrawPagination(void);
static void sub_81C1DA4(u16 a, s16 b);
static void sub_81C1E20(u8 taskId);
static void sub_81C1EFC(u16 a, s16 b, u16 c);
@@ -172,10 +169,10 @@ static void sub_81C1F80(u8 taskId);
static void sub_81C2074(u16 a, s16 b);
static void sub_81C20F0(u8 taskId);
static void sub_81C2194(u16 *a, u16 b, u8 c);
-static void sub_81C2228(struct Pokemon* mon);
+static void DrawPokerusCuredSymbol(struct Pokemon* mon);
static void DrawExperienceProgressBar(struct Pokemon* mon);
static void DrawContestMoveHearts(u16 move);
-static void sub_81C2524(void);
+static void LimitEggSummaryPageDisplay(void);
static void ResetWindows(void);
static void sub_81C25E8(void);
static void sub_81C2628(void);
@@ -237,7 +234,7 @@ static void sub_81C4568(u8 a, u8 b);
static u8 CreatePokemonSprite(struct Pokemon *a, s16 *b);
static u8 sub_81C47B4(struct Pokemon *unused);
static void SpriteCB_Pokemon(struct Sprite *);
-static void sub_81C48F0(void);
+static void StopPokemonAnimations(void);
static void CreateMonMarkingsSprite(struct Pokemon *mon);
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon);
static void CreateCaughtBallSprite(struct Pokemon *mon);
@@ -252,7 +249,7 @@ static void sub_81C4D18(u8 a);
#include "data/text/move_descriptions.h"
#include "data/text/nature_names.h"
-static const struct BgTemplate gUnknown_0861CBB4[] =
+ALIGNED(4) static const struct BgTemplate sUnknown_0861CBB4[] =
{
{
.bg = 0,
@@ -292,25 +289,25 @@ static const struct BgTemplate gUnknown_0861CBB4[] =
},
};
-static const u16 gUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin");
-static const struct UnkStruct_61CC04 gUnknown_0861CBEC =
+static const u16 sUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin");
+static const struct UnkStruct_61CC04 sUnknown_0861CBEC =
{
- gUnknown_0861CBC4, 1, 10, 2, 0, 18
+ sUnknown_0861CBC4, 1, 10, 2, 0, 18
};
-static const struct UnkStruct_61CC04 gUnknown_0861CBF8 =
+static const struct UnkStruct_61CC04 sUnknown_0861CBF8 =
{
- gUnknown_0861CBC4, 1, 10, 2, 0, 50
+ sUnknown_0861CBC4, 1, 10, 2, 0, 50
};
-static const struct UnkStruct_61CC04 gUnknown_0861CC04 =
+static const struct UnkStruct_61CC04 sUnknown_0861CC04 =
{
gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45
};
-static const struct UnkStruct_61CC04 gUnknown_0861CC10 =
+static const struct UnkStruct_61CC04 sUnknown_0861CC10 =
{
gUnknown_08DC3C34, 0, 10, 7, 0, 45
};
static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5};
-static const struct WindowTemplate gUnknown_0861CC24[] =
+static const struct WindowTemplate sSummaryTemplate[] =
{
{//Text for Pokemon Info
.bg = 0,
@@ -494,7 +491,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
},
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_0861CCCC[] =
+static const struct WindowTemplate sPageInfoTemplate[] =
{
{//Original Trainer
.bg = 0,
@@ -533,7 +530,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 557,
},
};
-static const struct WindowTemplate gUnknown_0861CCEC[] =
+static const struct WindowTemplate sPageSkillsTemplate[] =
{
{//Held Item string
.bg = 0,
@@ -581,7 +578,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.baseBlock = 543,
},
};
-static const struct WindowTemplate gUnknown_0861CD14[] =
+static const struct WindowTemplate sPageMovesTemplate[] = // This is used for both battle and contest moves
{
{//Move names?
.bg = 0,
@@ -628,8 +625,8 @@ static const u8 sTextColors_861CD2C[][3] =
{0, 7, 8}
};
-static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp");
-static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
+static const u8 sSummaryAButtonBitmap[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp");
+static const u8 sSummaryBButtonBitmap[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
static void (*const sTextPrinterFunctions[])(void) =
{
@@ -647,11 +644,11 @@ static void (*const sTextPrinterTasks[])(u8 taskId) =
Task_PrintContestMoves
};
-static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
-static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}");
-static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
-static const u8 gUnknown_0861CE8E[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}");
-static const u8 gUnknown_0861CE97[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}");
+static const u8 sMemoNatureTextColor[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
+static const u8 sMemoMiscTextColor[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); // This is also affected by palettes, apparently
+static const u8 sStatsLeftColumnLayout[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
+static const u8 sStatsRightColumnLayout[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}");
+static const u8 sMovesPPLayout[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}");
#define TAG_MOVE_TYPES 30002
@@ -847,61 +844,61 @@ static const struct OamData gOamData_861CFF4 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gSpriteAnim_861CFFC[] = {
+static const union AnimCmd sSpriteAnim_861CFFC[] = {
ANIMCMD_FRAME(0, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D004[] = {
+static const union AnimCmd sSpriteAnim_861D004[] = {
ANIMCMD_FRAME(4, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D00C[] = {
+static const union AnimCmd sSpriteAnim_861D00C[] = {
ANIMCMD_FRAME(8, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D014[] = {
+static const union AnimCmd sSpriteAnim_861D014[] = {
ANIMCMD_FRAME(12, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D01C[] = {
+static const union AnimCmd sSpriteAnim_861D01C[] = {
ANIMCMD_FRAME(16, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D024[] = {
+static const union AnimCmd sSpriteAnim_861D024[] = {
ANIMCMD_FRAME(16, 0, TRUE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D02C[] = {
+static const union AnimCmd sSpriteAnim_861D02C[] = {
ANIMCMD_FRAME(20, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D034[] = {
+static const union AnimCmd sSpriteAnim_861D034[] = {
ANIMCMD_FRAME(24, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D03C[] = {
+static const union AnimCmd sSpriteAnim_861D03C[] = {
ANIMCMD_FRAME(24, 0, TRUE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_861D044[] = {
+static const union AnimCmd sSpriteAnim_861D044[] = {
ANIMCMD_FRAME(28, 0, FALSE, FALSE),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_861D04C[] = {
- gSpriteAnim_861CFFC,
- gSpriteAnim_861D004,
- gSpriteAnim_861D00C,
- gSpriteAnim_861D014,
- gSpriteAnim_861D01C,
- gSpriteAnim_861D024,
- gSpriteAnim_861D02C,
- gSpriteAnim_861D034,
- gSpriteAnim_861D03C,
- gSpriteAnim_861D044,
+static const union AnimCmd *const sSpriteAnimTable_861D04C[] = {
+ sSpriteAnim_861CFFC,
+ sSpriteAnim_861D004,
+ sSpriteAnim_861D00C,
+ sSpriteAnim_861D014,
+ sSpriteAnim_861D01C,
+ sSpriteAnim_861D024,
+ sSpriteAnim_861D02C,
+ sSpriteAnim_861D034,
+ sSpriteAnim_861D03C,
+ sSpriteAnim_861D044,
};
-static const struct CompressedSpriteSheet gUnknown_0861D074 =
+static const struct CompressedSpriteSheet sMoveSelectorSpriteSheet =
{
- .data = gUnknown_08D97BEC,
+ .data = gMoveSelectorBitmap,
.size = 0x400,
.tag = 30000
};
@@ -915,7 +912,7 @@ static const struct SpriteTemplate gUnknown_0861D084 =
.tileTag = 30000,
.paletteTag = 30000,
.oam = &gOamData_861CFF4,
- .anims = gSpriteAnimTable_861D04C,
+ .anims = sSpriteAnimTable_861D04C,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
@@ -994,7 +991,7 @@ static const struct SpriteTemplate sSpriteTemplate_StatusCondition =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal");
+static const u16 sSummaryMarkingsPalette[] = INCBIN_U16("graphics/interface/summary_markings.gbapal");
// code
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void))
@@ -1026,7 +1023,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
case PSS_MODE_SELECT_MOVE:
pssData->minPageIndex = 2;
pssData->maxPageIndex = 3;
- pssData->unk40C3 = TRUE;
+ pssData->lockMonFlag = TRUE;
break;
}
@@ -1101,7 +1098,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
break;
case 5:
InitBGs();
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
gMain.state++;
break;
case 6:
@@ -1113,12 +1110,12 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 8:
- sub_81C1BA0();
+ DrawPagination();
gMain.state++;
break;
case 9:
CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
gMain.state++;
break;
case 10:
@@ -1148,14 +1145,14 @@ static bool8 SummaryScreen_LoadGraphics(void)
case 16:
ResetSpriteIds();
CreateMoveTypeIcons();
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
gMain.state++;
break;
case 17:
- pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &pssData->unk40F0);
+ pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &pssData->switchCounter);
if (pssData->spriteIds[0] != 0xFF)
{
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
gMain.state++;
}
break;
@@ -1202,7 +1199,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
static void InitBGs(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4));
+ InitBgsFromTemplates(0, sUnknown_0861CBB4, ARRAY_COUNT(sUnknown_0861CBB4));
SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]);
SetBgTilemapBuffer(3, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
@@ -1220,64 +1217,64 @@ static void InitBGs(void)
static bool8 SummaryScreen_DecompressGraphics(void)
{
- switch (pssData->unk40F0)
+ switch (pssData->switchCounter)
{
case 0:
reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0);
- pssData->unk40F0++;
+ decompress_and_copy_tile_data_to_vram(1, &gStatusScreenBitmap, 0, 0, 0);
+ pssData->switchCounter++;
break;
case 1:
if (free_temp_tile_data_buffers_if_possible() != 1)
{
- LZDecompressWram(gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageInfoTilemap, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ pssData->switchCounter++;
}
break;
case 2:
LZDecompressWram(gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 3:
- LZDecompressWram(gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageSkillsTilemap, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
+ pssData->switchCounter++;
break;
case 4:
- LZDecompressWram(gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageBattleMovesTilemap, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
+ pssData->switchCounter++;
break;
case 5:
- LZDecompressWram(gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageContestMovesTilemap, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
+ pssData->switchCounter++;
break;
case 6:
- LoadCompressedPalette(gUnknown_08D9853C, 0, 0x100);
+ LoadCompressedPalette(gStatusScreenPalette, 0, 0x100);
LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 7:
LoadCompressedSpriteSheet(&sSpriteSheet_MoveTypes);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 8:
- LoadCompressedSpriteSheet(&gUnknown_0861D074);
- pssData->unk40F0++;
+ LoadCompressedSpriteSheet(&sMoveSelectorSpriteSheet);
+ pssData->switchCounter++;
break;
case 9:
LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 10:
LoadCompressedSpritePalette(&sStatusIconsSpritePalette);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 11:
LoadCompressedSpritePalette(&gUnknown_0861D07C);
- pssData->unk40F0++;
+ pssData->switchCounter++;
break;
case 12:
LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60);
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
return TRUE;
}
return FALSE;
@@ -1301,7 +1298,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a)
{
u32 i;
struct PokeSummary *sum = &pssData->summary;
- switch (pssData->unk40F0)
+ switch (pssData->switchCounter)
{
case 0:
sum->species = GetMonData(a, MON_DATA_SPECIES);
@@ -1366,7 +1363,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a)
sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT);
return TRUE;
}
- pssData->unk40F0++;
+ pssData->switchCounter++;
return FALSE;
}
@@ -1397,8 +1394,8 @@ static void sub_81C0348(void)
if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES)
PutWindowTilemap(13);
}
- sub_81C2524();
- sub_81C2228(&pssData->currentMon);
+ LimitEggSummaryPageDisplay();
+ DrawPokerusCuredSymbol(&pssData->currentMon);
}
static void sub_81C0434(void)
@@ -1418,7 +1415,7 @@ static void CloseSummaryScreen(u8 taskId)
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
SetMainCallback2(pssData->callback);
- gUnknown_0203CF20 = pssData->curMonIndex;
+ gLastViewedMonIndex = pssData->curMonIndex;
SummaryScreen_DestroyUnknownTask();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -1457,7 +1454,7 @@ static void HandleInput(u8 taskId)
{
if (pssData->currPageIndex == PSS_PAGE_INFO)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
BeginCloseSummaryScreen(taskId);
}
@@ -1470,7 +1467,7 @@ static void HandleInput(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
BeginCloseSummaryScreen(taskId);
}
@@ -1481,7 +1478,7 @@ static void ChangePokemon(u8 taskId, s8 a)
{
s8 r4_2;
- if (!pssData->unk40C3)
+ if (!pssData->lockMonFlag)
{
if (pssData->isBoxMon == TRUE)
{
@@ -1545,7 +1542,7 @@ static void sub_81C0704(u8 taskId)
break;
case 3:
CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ pssData->switchCounter = 0;
break;
case 4:
if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE)
@@ -1560,7 +1557,7 @@ static void sub_81C0704(u8 taskId)
case 7:
if (pssData->summary.unk7)
sub_81C2074(10, -2);
- sub_81C2228(&pssData->currentMon);
+ DrawPokerusCuredSymbol(&pssData->currentMon);
data[1] = 0;
break;
case 8:
@@ -1568,7 +1565,7 @@ static void sub_81C0704(u8 taskId)
if (pssData->spriteIds[0] == 0xFF)
return;
gSprites[pssData->spriteIds[0]].data[2] = 1;
- sub_81C0E24();
+ CheckExperienceProgressBar();
data[1] = 0;
break;
case 9:
@@ -1579,7 +1576,7 @@ static void sub_81C0704(u8 taskId)
break;
case 11:
PrintPageSpecificText(pssData->currPageIndex);
- sub_81C2524();
+ LimitEggSummaryPageDisplay();
break;
case 12:
gSprites[pssData->spriteIds[0]].data[2] = 0;
@@ -1678,19 +1675,19 @@ static void ChangePage(u8 taskId, s8 b)
pssData->currPageIndex += b;
data[0] = 0;
if (b == 1)
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollRight, gTasks[taskId].func);
else
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollLeft, gTasks[taskId].func);
CreateTextPrinterTask(pssData->currPageIndex);
HidePageSpecificSprites();
}
-static void sub_81C0B8C(u8 taskId)
+static void PssScrollRight(u8 taskId) // Scroll right
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
- if (pssData->unk40C9 == 0)
+ if (pssData->bgDisplayOrder == 0)
{
data[1] = 1;
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
@@ -1712,28 +1709,28 @@ static void sub_81C0B8C(u8 taskId)
ChangeBgX(data[1], 0x2000, 1);
data[0] += 32;
if (data[0] > 0xFF)
- gTasks[taskId].func = sub_81C0C68;
+ gTasks[taskId].func = PssScrollRightEnd;
}
-static void sub_81C0C68(u8 taskId)
+static void PssScrollRightEnd(u8 taskId) // display right
{
s16 *data = gTasks[taskId].data;
- pssData->unk40C9 ^= 1;
+ pssData->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
+ DrawPagination();
CreatePageWindowTilemaps(pssData->currPageIndex);
SetTypeIcons();
- sub_81C0E24();
+ CheckExperienceProgressBar();
SwitchTaskToFollowupFunc(taskId);
}
-static void sub_81C0CC4(u8 taskId)
+static void PssScrollLeft(u8 taskId) // Scroll left
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
- if (pssData->unk40C9 == 0)
+ if (pssData->bgDisplayOrder == 0)
data[1] = 2;
else
data[1] = 1;
@@ -1742,13 +1739,13 @@ static void sub_81C0CC4(u8 taskId)
ChangeBgX(data[1], 0x2000, 2);
data[0] += 32;
if (data[0] > 0xFF)
- gTasks[taskId].func = sub_81C0D44;
+ gTasks[taskId].func = PssScrollLeftEnd;
}
-static void sub_81C0D44(u8 taskId)
+static void PssScrollLeftEnd(u8 taskId) // display left
{
s16 *data = gTasks[taskId].data;
- if (pssData->unk40C9 == 0)
+ if (pssData->bgDisplayOrder == 0)
{
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
@@ -1767,17 +1764,17 @@ static void sub_81C0D44(u8 taskId)
}
ShowBg(1);
ShowBg(2);
- pssData->unk40C9 ^= 1;
+ pssData->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
+ DrawPagination();
CreatePageWindowTilemaps(pssData->currPageIndex);
SetTypeIcons();
- sub_81C0E24();
+ CheckExperienceProgressBar();
SwitchTaskToFollowupFunc(taskId);
}
-static void sub_81C0E24(void)
+static void CheckExperienceProgressBar(void)
{
if (pssData->currPageIndex == 1)
DrawExperienceProgressBar(&pssData->currentMon);
@@ -2025,9 +2022,9 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
u8 ppBonuses = summary->ppBonuses;
// Calculate PP bonuses
- u8 ppUpMask1 = gUnknown_08329D22[moveIndex1];
+ u8 ppUpMask1 = gPPUpGetMask[moveIndex1];
u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2);
- u8 ppUpMask2 = gUnknown_08329D22[moveIndex2];
+ u8 ppUpMask2 = gPPUpGetMask[moveIndex2];
u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2);
ppBonuses &= ~ppUpMask1;
ppBonuses &= ~ppUpMask2;
@@ -2060,9 +2057,9 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2
u8 ppBonuses = summary->ppBonuses;
// Calculate PP bonuses
- u8 ppUpMask1 = gUnknown_08329D22[moveIndex1];
+ u8 ppUpMask1 = gPPUpGetMask[moveIndex1];
u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2);
- u8 ppUpMask2 = gUnknown_08329D22[moveIndex2];
+ u8 ppUpMask2 = gPPUpGetMask[moveIndex2];
u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2);
ppBonuses &= ~ppUpMask1;
ppBonuses &= ~ppUpMask2;
@@ -2088,10 +2085,10 @@ static void sub_81C171C(u8 taskId)
{
SetNewMoveTypeIcon();
sub_81C4AF8(8);
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
-static void sub_81C174C(u8 taskId)
+static void HandleReplaceMoveInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -2119,26 +2116,26 @@ static void sub_81C174C(u8 taskId)
}
else if (gMain.newKeys & A_BUTTON)
{
- if (sub_81C18A8() == TRUE)
+ if (CanReplaceMove() == TRUE)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- gUnknown_0203CF21 = pssData->firstMoveIndex;
- gSpecialVar_0x8005 = gUnknown_0203CF21;
+ sUnknown_0203CF21 = pssData->firstMoveIndex;
+ gSpecialVar_0x8005 = sUnknown_0203CF21;
BeginCloseSummaryScreen(taskId);
}
else
{
PlaySE(SE_HAZURE);
- sub_81C18F4(taskId);
+ ShowHMMovesCantBeForgottenWindow(taskId);
}
}
else if (gMain.newKeys & B_BUTTON)
{
u32 var1;
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
- gUnknown_0203CF21 = 4;
+ sUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4;
BeginCloseSummaryScreen(taskId);
}
@@ -2146,7 +2143,7 @@ static void sub_81C174C(u8 taskId)
}
}
-static bool8 sub_81C18A8(void)
+static bool8 CanReplaceMove(void)
{
if (pssData->firstMoveIndex == MAX_MON_MOVES || pssData->newMove == MOVE_NONE || IsMoveHm(pssData->summary.moves[pssData->firstMoveIndex]) != 1)
return TRUE;
@@ -2154,7 +2151,7 @@ static bool8 sub_81C18A8(void)
return FALSE;
}
-static void sub_81C18F4(u8 taskId)
+static void ShowHMMovesCantBeForgottenWindow(u8 taskId)
{
ClearWindowTilemap(14);
ClearWindowTilemap(15);
@@ -2162,10 +2159,11 @@ static void sub_81C18F4(u8 taskId)
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
PrintHMMovesCantBeForgotten();
- gTasks[taskId].func = sub_81C1940;
+ gTasks[taskId].func = HandleHMMovesCantBeForgottenInput;
}
-static void sub_81C1940(u8 taskId)
+// This redraws the power/accuracy window when the player scrolls out of the "HM Moves can't be forgotten" message
+static void HandleHMMovesCantBeForgottenInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
u16 move;
@@ -2177,7 +2175,7 @@ static void sub_81C1940(u8 taskId)
data[0] = 4;
sub_81C1070(&data[0], -1, &pssData->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_DOWN)
{
@@ -2185,7 +2183,7 @@ static void sub_81C1940(u8 taskId)
data[0] = 4;
sub_81C1070(&data[0], 1, &pssData->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
@@ -2195,7 +2193,7 @@ static void sub_81C1940(u8 taskId)
if (!gSprites[pssData->spriteIds[2]].invisible)
ClearWindowTilemap(13);
move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
ChangePage(taskId, -1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
@@ -2209,7 +2207,7 @@ static void sub_81C1940(u8 taskId)
if (!gSprites[pssData->spriteIds[2]].invisible)
ClearWindowTilemap(13);
move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
ChangePage(taskId, 1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
@@ -2225,17 +2223,17 @@ static void sub_81C1940(u8 taskId)
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
}
}
u8 sub_81C1B94(void)
{
- return gUnknown_0203CF21;
+ return sUnknown_0203CF21;
}
-static void sub_81C1BA0(void)
+static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen
{
u16 *alloced = Alloc(32);
u8 i;
@@ -2333,11 +2331,11 @@ static void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8
static void sub_81C1DA4(u16 a, s16 b)
{
- if (b > gUnknown_0861CC04.field_6)
- b = gUnknown_0861CC04.field_6;
- if (b == 0 || b == gUnknown_0861CC04.field_6)
+ if (b > sUnknown_0861CC04.field_6)
+ b = sUnknown_0861CC04.field_6;
+ if (b == 0 || b == sUnknown_0861CC04.field_6)
{
- sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1);
+ sub_81C1CB0(&sUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1);
}
else
{
@@ -2359,12 +2357,12 @@ static void sub_81C1E20(u8 taskId)
{
data[1] = 0;
}
- else if (data[1] > gUnknown_0861CC04.field_6)
+ else if (data[1] > sUnknown_0861CC04.field_6)
{
- data[1] = gUnknown_0861CC04.field_6;
+ data[1] = sUnknown_0861CC04.field_6;
}
- sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6)
+ sub_81C1CB0(&sUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CC04.field_6)
{
if (data[0] < 0)
{
@@ -2386,10 +2384,10 @@ static void sub_81C1E20(u8 taskId)
static void sub_81C1EFC(u16 a, s16 b, u16 move)
{
- if (b > gUnknown_0861CC10.field_6)
- b = gUnknown_0861CC10.field_6;
- if (b == 0 || b == gUnknown_0861CC10.field_6)
- sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1);
+ if (b > sUnknown_0861CC10.field_6)
+ b = sUnknown_0861CC10.field_6;
+ if (b == 0 || b == sUnknown_0861CC10.field_6)
+ sub_81C1CB0(&sUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1);
else
{
u8 taskId = FindTaskIdByFunc(sub_81C1F80);
@@ -2409,16 +2407,16 @@ static void sub_81C1F80(u8 taskId)
{
data[1] = 0;
}
- else if (data[1] > gUnknown_0861CC10.field_6)
+ else if (data[1] > sUnknown_0861CC10.field_6)
{
- data[1] = gUnknown_0861CC10.field_6;
+ data[1] = sUnknown_0861CC10.field_6;
}
- sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6)
+ sub_81C1CB0(&sUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CC10.field_6)
{
if (data[0] < 0)
{
- if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
+ if (pssData->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0)
PutWindowTilemap(15);
DrawContestMoveHearts(data[2]);
}
@@ -2439,12 +2437,12 @@ static void sub_81C1F80(u8 taskId)
static void sub_81C2074(u16 a, s16 b)
{
- if (b > gUnknown_0861CBEC.field_6)
- b = gUnknown_0861CBEC.field_6;
- if (b == 0 || b == gUnknown_0861CBEC.field_6)
+ if (b > sUnknown_0861CBEC.field_6)
+ b = sUnknown_0861CBEC.field_6;
+ if (b == 0 || b == sUnknown_0861CBEC.field_6)
{
- sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
- sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
+ sub_81C1CB0(&sUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
}
else
{
@@ -2460,12 +2458,12 @@ static void sub_81C20F0(u8 taskId)
data[1] += data[0];
if (data[1] < 0)
data[1] = 0;
- else if (data[1] > gUnknown_0861CBEC.field_6)
- data[1] = gUnknown_0861CBEC.field_6;
- sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
- sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
+ else if (data[1] > sUnknown_0861CBEC.field_6)
+ data[1] = sUnknown_0861CBEC.field_6;
+ sub_81C1CB0(&sUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
schedule_bg_copy_tilemap_to_vram(3);
- if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6)
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CBEC.field_6)
{
if (data[0] < 0)
{
@@ -2505,9 +2503,9 @@ static void sub_81C2194(u16 *output, u16 palette, bool8 c)
}
}
-static void sub_81C2228(struct Pokemon *mon)
+static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mon has been cured of pokerus
{
- if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0))
+ if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) // If yes it draws the cured symbol
{
pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C;
pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C;
@@ -2615,7 +2613,7 @@ static void DrawContestMoveHearts(u16 move)
}
}
-static void sub_81C2524(void)
+static void LimitEggSummaryPageDisplay(void) // If the pokemon is an egg, limit the number of pages displayed to 1
{
if (pssData->summary.isEgg)
ChangeBgX(3, 0x10000, 0);
@@ -2626,7 +2624,7 @@ static void sub_81C2524(void)
static void ResetWindows(void)
{
u8 i;
- InitWindows(gUnknown_0861CC24);
+ InitWindows(sSummaryTemplate);
DeactivateAllTextPrinters();
for (i = 0; i < 20; i++)
@@ -2729,7 +2727,8 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species)
static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x)
{
- BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16);
+ // sSummaryBButtonBitmap - 0x80 = sSummaryAButtonBitmap
+ BlitBitmapToWindow(windowId, (bButton) ? sSummaryBButtonBitmap : sSummaryBButtonBitmap - 0x80, x, 0, 16, 16);
}
static void PrintPageNamesAndStatsPageToWindows(void)
@@ -2987,7 +2986,7 @@ static void PrintMonOTName(void)
int x;
if (InBattleFactory() != TRUE && sub_81B9E94() != TRUE)
{
- windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ windowId = AddWindowFromTemplateList(sPageInfoTemplate, 0);
SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1);
x = GetStringWidth(1, gText_OTSlash, 0);
if (pssData->summary.OTGender == 0)
@@ -3004,20 +3003,20 @@ static void PrintMonOTID(void)
{
ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5);
xPos = GetStringRightAlignXOffset(1, gStringVar1, 56);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 1), gStringVar1, xPos, 1, 0, 1);
}
}
static void PrintMonAbilityName(void)
{
u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 2), gAbilityNames[ability], 0, 1, 0, 1);
}
static void PrintMonAbilityDescription(void)
{
u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
}
static void BufferMonTrainerMemo(void)
@@ -3026,8 +3025,8 @@ static void BufferMonTrainerMemo(void)
const u8 *text;
DynamicPlaceholderTextUtil_Reset();
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sMemoNatureTextColor);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sMemoMiscTextColor);
BufferNatureString();
if (InBattleFactory() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE)
@@ -3074,7 +3073,7 @@ static void BufferMonTrainerMemo(void)
static void PrintMonTrainerMemo(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 3), gStringVar4, 0, 1, 0, 0);
}
static void BufferNatureString(void)
@@ -3147,7 +3146,7 @@ static bool8 IsInGamePartnerMon(void)
static void PrintEggOTName(void)
{
- u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ u32 windowId = AddWindowFromTemplateList(sPageInfoTemplate, 0);
u32 width = GetStringWidth(1, gText_OTSlash, 0);
SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1);
SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1);
@@ -3159,7 +3158,7 @@ static void PrintEggOTID(void)
StringCopy(gStringVar1, gText_UnkCtrlF907F908);
StringAppend(gStringVar1, gText_FiveMarks);
x = GetStringRightAlignXOffset(1, gStringVar1, 56);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 1), gStringVar1, x, 1, 0, 1);
}
static void PrintEggState(void)
@@ -3178,7 +3177,7 @@ static void PrintEggState(void)
else
text = gText_EggWillTakeALongTime;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 2), text, 0, 1, 0, 0);
}
static void PrintEggMemo(void)
@@ -3202,7 +3201,7 @@ static void PrintEggMemo(void)
text = gText_OddEggFoundByCouple;
}
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, 3), text, 0, 1, 0, 0);
}
static void PrintSkillsPageText(void)
@@ -3270,7 +3269,7 @@ static void PrintHeldItemName(void)
}
offset = GetStringCenterAlignXOffset(1, text, 72) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, 0), text, offset, 1, 0, 0);
}
static void PrintRibbonCount(void)
@@ -3290,7 +3289,7 @@ static void PrintRibbonCount(void)
}
offset = GetStringCenterAlignXOffset(1, text, 70) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, 1), text, offset, 1, 0, 0);
}
static void BufferLeftColumnStats(void)
@@ -3310,7 +3309,7 @@ static void BufferLeftColumnStats(void)
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout);
Free(currentHPString);
Free(maxHPString);
@@ -3320,7 +3319,7 @@ static void BufferLeftColumnStats(void)
static void PrintLeftColumnStats(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, 2), gStringVar4, 4, 1, 0, 0);
}
static void BufferRightColumnStats(void)
@@ -3333,18 +3332,18 @@ static void BufferRightColumnStats(void)
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout);
}
static void PrintRightColumnStats(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, 3), gStringVar4, 2, 1, 0, 0);
}
static void PrintExpPointsNextLevel(void)
{
struct PokeSummary *sum = &pssData->summary;
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4);
+ u8 windowId = AddWindowFromTemplateList(sPageSkillsTemplate, 4);
int offset;
u32 expToNextLevel;
@@ -3436,8 +3435,8 @@ static void PrintMoveNameAndPP(u8 moveIndex)
const u8 *text;
u32 offset;
struct PssData *summaryStruct = pssData;
- u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ u8 moveNameWindowId = AddWindowFromTemplateList(sPageMovesTemplate, 0);
+ u8 ppValueWindowId = AddWindowFromTemplateList(sPageMovesTemplate, 1);
u16 move = summaryStruct->summary.moves[moveIndex];
if (move != 0)
@@ -3449,7 +3448,7 @@ static void PrintMoveNameAndPP(u8 moveIndex)
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout);
text = gStringVar4;
ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[moveIndex], pp) + 9;
offset = GetStringRightAlignXOffset(1, text, 44);
@@ -3560,14 +3559,14 @@ static void PrintContestMoveDescription(u8 moveSlot)
if (move != MOVE_NONE)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, 2);
SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0);
}
}
static void PrintMoveDetails(u16 move)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, 2);
FillWindowPixelBuffer(windowId, PALETTE_NUM_TO_FILL_VALUE(0));
if (move != MOVE_NONE)
{
@@ -3592,8 +3591,8 @@ static void PrintMoveDetails(u16 move)
static void PrintNewMoveDetailsOrCancelText(void)
{
- u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, 0);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, 1);
if (pssData->newMove == MOVE_NONE)
{
@@ -3612,22 +3611,22 @@ static void PrintNewMoveDetailsOrCancelText(void)
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout);
SummaryScreen_PrintTextOnWindow(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12);
}
}
static void sub_81C4064(void)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, 0);
FillWindowPixelRect(windowId, 0, 0, 66, 72, 16);
CopyWindowToVram(windowId, 2);
}
static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2)
{
- u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, 0);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, 1);
FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10);
FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10);
@@ -3641,7 +3640,7 @@ static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2)
static void PrintHMMovesCantBeForgotten(void)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, 2);
FillWindowPixelBuffer(windowId, PALETTE_NUM_TO_FILL_VALUE(0));
SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0);
}
@@ -3942,14 +3941,14 @@ static bool32 SummaryScreen_DoesSpriteHaveCallback(void)
}
}
-static void sub_81C48F0(void)
+static void StopPokemonAnimations(void) // A subtle effect, this function stops pokemon animations when leaving the PSS
{
u16 i;
u16 paletteIndex;
gSprites[pssData->spriteIds[0]].animPaused = TRUE;
gSprites[pssData->spriteIds[0]].callback = SpriteCallbackDummy;
- sub_806EE98();
+ StopPokemonAnimationDelayTask();
paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100;
@@ -3961,7 +3960,7 @@ static void sub_81C48F0(void)
static void CreateMonMarkingsSprite(struct Pokemon *mon)
{
- struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120);
+ struct Sprite *sprite = sub_811FF94(30003, 30003, sSummaryMarkingsPalette);
pssData->markingsSprite = sprite;
diff --git a/src/pokenav.c b/src/pokenav.c
index f5b3d6e13..05aa559ec 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -13,26 +13,45 @@
#include "bg.h"
#include "menu.h"
#include "graphics.h"
+#include "dma3.h"
#include "gba/macro.h"
#include "decompress.h"
#include "strings.h"
#include "constants/rgb.h"
+enum
+{
+ MODE_NORMAL, // Chosen from Start menu.
+ MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call.
+ MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav.
+};
+
#define UNKNOWN_OFFSET 100000
+struct UnknownSubStruct_0203CF40
+{
+ void (*unk0)(u32);
+ u32 (*unk4)(void);
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ struct Sprite *unk18;
+ struct Sprite *unk1C[2];
+ struct Sprite *unk24[2];
+ u8 tilemapBuffer[0x1000];
+};
+
+#define SUBSTRUCT_COUNT 19
+
struct UnknownStruct_0203CF40
{
u32 (*field0)(void);
u32 field4;
- u16 field8;
+ u16 mode;
u16 fieldA;
- u32 fieldC;
- void *field10[19];
-};
-
-struct UnknownStruct_sub_81C76C4
-{
- u32 data[523];
+ bool32 hasAnyRibbons;
+ struct UnknownSubStruct_0203CF40 *field10[SUBSTRUCT_COUNT];
};
extern u32 sub_81C9430(void);
@@ -101,34 +120,42 @@ extern u32 sub_81CFE08(void);
u32 sub_81C791C(s32 a0);
bool32 sub_81C756C(u32 a0);
bool32 sub_81C76C4(void);
-u32 AnyMonHasRibbon(void);
+static bool32 AnyMonHasRibbon(void);
u32 sub_81C75E0(void);
u32 sub_81C75D4(void);
u32 sub_81C76FC(void);
u32 sub_81C786C(void);
u32 sub_81C7764(s32 a0);
-u32 atk47_cmd47(s32 a0);
+u32 sub_81C78D4(s32 a0);
bool32 sub_81C7738(void);
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2);
-void sub_81C7834(u32 (*a0)(void), u32(*a1)(void));
-void sub_81C7360(struct UnknownStruct_0203CF40 *a0);
-void sub_81C7650(u32 index);
+void sub_81C7834(void *func1, void *func2);
+static void InitMainStruct(struct UnknownStruct_0203CF40 *a0);
+void FreeSubstruct(u32 index);
void sub_81C7850(u32 a0);
void sub_81C7BF8(u32 a0);
void sub_81C71E4(u8 a0);
-void sub_81C7170(u8 a0);
+void sub_81C7170(u8 taskId);
void sub_81C742C(u8 taskId);
void sub_81C7710(void);
-void sub_81C75F4(void);
-void sub_81C7334(void);
-void sub_81C7418(void);
-void sub_81C7400(void);
+static void InitKeys_(void);
+static void FreeVars(void);
+static void VblankCb_Pokenav(void);
+static void Cb2_Pokenav(void);
void sub_81C7C28(void);
void sub_81C72BC(void);
void sub_81C7B74(void);
void sub_81C7C94(void);
-
-
+void sub_81C7F24(u32 arg0);
+void sub_81C7E58(u32 arg0);
+void sub_81C8110(bool32 arg0);
+void sub_81C80D4(bool32 arg0);
+void sub_81C803C(u32 arg0, bool32 arg1);
+void sub_81C8088(u32 arg0, bool32 arg1);
+void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
+void sub_81C817C(struct Sprite *sprite);
+
+// Const rom data.
u32 (*const gUnknown_0861F3EC[15][7])(void) =
{
{
@@ -272,15 +299,17 @@ const u16 gUnknown_0861F590[] = INCBIN_U16("graphics/pokenav/icon2.gbapal");
const u32 gUnknown_0861F5B0[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz");
const u32 gUnknown_0861F994[] = INCBIN_U32("graphics/pokenav/icon2_unused.4bpp.lz");
-const struct BgTemplate gUnknown_0861FA04 =
+const struct BgTemplate gUnknown_0861FA04[] =
{
- .bg = 0,
- .charBaseIndex = 0,
- .mapBaseIndex = 5,
- .screenSize = 0,
- .paletteMode = 0,
- .priority = 0,
- .baseTile = 0,
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ }
};
const struct WindowTemplate gUnknown_0861FA08[2] =
@@ -305,7 +334,7 @@ const struct WindowTemplate gUnknown_0861FA08[2] =
},
};
-const u8 *const (MenuButtonReminders[12]) =
+const u8 *const (sMenuButtonReminders[12]) =
{
gText_Navgear_ClearButtonList,
gText_NavgearMap_ZoomedOutButtons,
@@ -341,10 +370,6 @@ const struct SpritePalette gUnknown_0861FA54[2] =
.data = gUnknown_0861F590,
.tag = 0,
},
- {
- .data = NULL,
- .tag = 0,
- }
};
const struct CompressedSpriteSheet gUnknown_0861FA64 =
@@ -358,16 +383,17 @@ extern struct UnknownStruct_0203CF40 *gUnknown_0203CF40;
extern u8 gUnknown_0203CF3C;
extern const struct SpriteTemplate gUnknown_0861FB04;
-u32 sub_81C7078(u32 (*a0)(s32), u32 a1)
+// code
+u32 sub_81C7078(u32 (*func)(s32), u32 priority)
{
u16 taskId;
if (!is_c1_link_related_active())
- taskId = CreateTask(sub_81C7170, a1);
+ taskId = CreateTask(sub_81C7170, priority);
else
- taskId = CreateTask(sub_81C71E4, a1);
+ taskId = CreateTask(sub_81C71E4, priority);
- SetWordTaskArg(taskId, 1, (u32)a0);
+ SetWordTaskArg(taskId, 1, (u32)func);
gTasks[taskId].data[3] = gUnknown_0203CF3C;
return ((gUnknown_0203CF3C++) << 16) | taskId;
@@ -375,62 +401,52 @@ u32 sub_81C7078(u32 (*a0)(s32), u32 a1)
bool32 sub_81C70D8(u32 a0)
{
- u32 v1 = a0 & 0xFFFF;
+ u32 taskId = a0 & 0xFFFF;
u32 v2 = a0 >> 16;
- if (gTasks[v1].isActive
- && (gTasks[v1].func == sub_81C7170 || gTasks[v1].func == sub_81C71E4)
- && gTasks[v1].data[3] == v2)
- {
-
+
+ if (gTasks[taskId].isActive
+ && (gTasks[taskId].func == sub_81C7170 || gTasks[taskId].func == sub_81C71E4)
+ && gTasks[taskId].data[3] == v2)
return TRUE;
- }
else
- {
return FALSE;
- }
}
bool32 sub_81C7124(u32 a0)
{
s32 i;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < NUM_TASKS; i++)
{
if (gTasks[i].isActive
- && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4))
- {
- u32 arg = GetWordTaskArg((u8)i, 1);
- if (arg == a0)
- return TRUE;
- }
+ && (gTasks[i].func == sub_81C7170 || gTasks[i].func == sub_81C71E4)
+ && GetWordTaskArg(i, 1) == a0)
+ return TRUE;
}
return FALSE;
}
void sub_81C7170(u8 taskId)
{
- s16 *dataPtr;
- u32 (*func)(u32);
- bool32 exitLoop;
+ u32 (*func)(s32) = (void *)GetWordTaskArg(taskId, 1);
+ s16 *data = gTasks[taskId].data;
+ bool32 exitLoop = FALSE;
- func = (u32 (*)(u32))GetWordTaskArg(taskId, 1);
- dataPtr = gTasks[taskId].data;
- exitLoop = FALSE;
while (!exitLoop)
{
- u32 v1 =((u32 (*)(u32))func)(dataPtr[0]);
- switch (v1)
+ u32 var = func(data[0]);
+ switch (var)
{
case 1:
- dataPtr[0] = dataPtr[0] + 1;
+ data[0] = data[0] + 1;
break;
case 0:
- dataPtr[0]++;
+ data[0]++;
return;
case 4:
DestroyTask(taskId);
return;
default:
- dataPtr[0] = v1 - 5;
+ data[0] = var - 5;
break;
case 3:
break;
@@ -471,91 +487,81 @@ void sub_81C71E4(u8 taskId)
void CB2_PokeNav(void)
{
- gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40));
+ gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
if (gUnknown_0203CF40 == NULL)
{
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
}
else
{
- sub_81C7360(gUnknown_0203CF40);
+ InitMainStruct(gUnknown_0203CF40);
ResetTasks();
SetVBlankCallback(NULL);
CreateTask(sub_81C742C, 0);
- SetMainCallback2(sub_81C7400);
- SetVBlankCallback(sub_81C7418);
+ SetMainCallback2(Cb2_Pokenav);
+ SetVBlankCallback(VblankCb_Pokenav);
}
}
-void sub_81C72A4()
+void sub_81C72A4(void)
{
SetMainCallback2(sub_81C72BC);
FadeScreen(1, 0);
}
-void sub_81C72BC()
+void sub_81C72BC(void)
{
UpdatePaletteFade();
- if (!gPaletteFade.active)
+ if (gPaletteFade.active)
+ return;
+
+ gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
+ if (gUnknown_0203CF40 == NULL)
{
- gUnknown_0203CF40 = Alloc(sizeof(struct UnknownStruct_0203CF40));
- if (gUnknown_0203CF40 == NULL)
- {
- SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
- }
- else
- {
- sub_81C7360(gUnknown_0203CF40);
- gUnknown_0203CF40->field8 = 1;
- ResetTasks();
- ResetSpriteData();
- FreeAllSpritePalettes();
- SetVBlankCallback(NULL);
- CreateTask(sub_81C742C, 0);
- SetMainCallback2(sub_81C7400);
- SetVBlankCallback(sub_81C7418);
- }
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+ else
+ {
+ InitMainStruct(gUnknown_0203CF40);
+ gUnknown_0203CF40->mode = MODE_FORCE_CALL_1;
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ CreateTask(sub_81C742C, 0);
+ SetMainCallback2(Cb2_Pokenav);
+ SetVBlankCallback(VblankCb_Pokenav);
}
}
-void sub_81C7334()
+static void FreeVars(void)
{
s32 i;
- for (i = 0; i < 19; i++)
- {
- sub_81C7650(i);
- }
- Free(gUnknown_0203CF40);
- gUnknown_0203CF40 = NULL;
+ for (i = 0; i < SUBSTRUCT_COUNT; i++)
+ FreeSubstruct(i);
+
+ FREE_AND_SET_NULL(gUnknown_0203CF40);
InitKeys();
}
// Clears UnknownStruct_0203CF40
-void sub_81C7360(struct UnknownStruct_0203CF40 *a0)
+static void InitMainStruct(struct UnknownStruct_0203CF40 *a0)
{
s32 i;
- void **arrayPtr;
- void *fill;
- fill = NULL;
- i = 18;
- arrayPtr = &(a0->field10[18]);
- for (i; i >= 0; i--)
- {
- *arrayPtr = fill;
- arrayPtr -= 1;
- }
- a0->field8 = 0;
+ for (i = 0; i < SUBSTRUCT_COUNT; i++)
+ a0->field10[i] = NULL;
+
+ a0->mode = MODE_NORMAL;
a0->field4 = 0;
- a0->fieldC = AnyMonHasRibbon();
+ a0->hasAnyRibbons = AnyMonHasRibbon();
a0->field0 = NULL;
}
-bool32 AnyMonHasRibbon()
+static bool32 AnyMonHasRibbon(void)
{
- s32 i;
- s32 j;
+ s32 i, j;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -569,7 +575,7 @@ bool32 AnyMonHasRibbon()
for (j = 0; j < TOTAL_BOXES_COUNT; j++)
{
- for (i = 0; i < IN_BOX_COUNT; i++)
+ for (i = 0; i < IN_BOX_COUNT; i++)
{
if (CheckBoxMonSanityAt(j, i)
&& GetBoxMonDataAt(j, i, MON_DATA_RIBBON_COUNT) != 0)
@@ -582,7 +588,7 @@ bool32 AnyMonHasRibbon()
return FALSE;
}
-void sub_81C7400()
+static void Cb2_Pokenav(void)
{
RunTasks();
AnimateSprites();
@@ -590,7 +596,7 @@ void sub_81C7400()
UpdatePaletteFade();
}
-void sub_81C7418()
+static void VblankCb_Pokenav(void)
{
TransferPlttBuffer();
LoadOam();
@@ -599,34 +605,31 @@ void sub_81C7418()
void sub_81C742C(u8 taskId)
{
- s16 *dataPtr;
u32 v1;
- bool32 v2;
-
- dataPtr = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
- switch (dataPtr[0])
+ switch (data[0])
{
case 0:
sub_81C76C4();
- dataPtr[0] = 1;
+ data[0] = 1;
break;
case 1:
if (sub_81C76FC())
break;
sub_81C756C(UNKNOWN_OFFSET);
- dataPtr[0] = 4;
+ data[0] = 4;
break;
case 2:
if (sub_81C786C())
break;
- dataPtr[0] = 3;
+ data[0] = 3;
case 3:
v1 = sub_81C75E0();
if (v1 == -1)
{
sub_81C7710();
- dataPtr[0] = 5;
+ data[0] = 5;
}
else if (v1 >= UNKNOWN_OFFSET)
{
@@ -634,32 +637,33 @@ void sub_81C742C(u8 taskId)
gUnknown_0861F3EC[gUnknown_0203CF40->field4][5]();
if (sub_81C756C(v1))
{
- dataPtr[0] = 4;
+ data[0] = 4;
}
else
{
sub_81C7710();
- dataPtr[0] = 5;
+ data[0] = 5;
}
}
else if (v1 != 0)
{
sub_81C7850(v1);
if (sub_81C786C())
- dataPtr[0] = 2;
+ data[0] = 2;
}
break;
case 4:
if (!sub_81C75D4())
- dataPtr[0] = 3;
+ data[0] = 3;
break;
case 5:
if (!sub_81C7738())
{
- v2 = gUnknown_0203CF40->field8 != 0;
+ bool32 calledFromScript = (gUnknown_0203CF40->mode != MODE_NORMAL);
+
sub_81C9430();
- sub_81C7334();
- if (v2)
+ FreeVars();
+ if (calledFromScript)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
else
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
@@ -670,14 +674,14 @@ void sub_81C742C(u8 taskId)
bool32 sub_81C756C(u32 a0)
{
- u32 index;
+ u32 index = a0 - UNKNOWN_OFFSET;
- index = a0 - UNKNOWN_OFFSET;
- sub_81C75F4();
+ InitKeys_();
if (!gUnknown_0861F3EC[index][0]())
return FALSE;
if (!gUnknown_0861F3EC[index][2]())
return FALSE;
+
sub_81C7834(gUnknown_0861F3EC[index][3], gUnknown_0861F3EC[index][4]);
gUnknown_0203CF40->field0 = gUnknown_0861F3EC[index][1];
gUnknown_0203CF40->field4 = index;
@@ -694,52 +698,52 @@ u32 sub_81C75E0(void)
return gUnknown_0203CF40->field0();
}
-void sub_81C75F4(void)
+static void InitKeys_(void)
{
InitKeys();
}
-void IndirectSetVBlankCallback(IntrCallback callback)
+void SetVBlankCallback_(IntrCallback callback)
{
SetVBlankCallback(callback);
}
-void sub_81C760C(void)
+void SetPokenavVBlankCallback(void)
{
- SetVBlankCallback(sub_81C7418);
+ SetVBlankCallback(VblankCb_Pokenav);
}
-void *sub_81C761C(u32 index, u32 size)
+void *AllocSubstruct(u32 index, u32 size)
{
- return gUnknown_0203CF40->field10[index] = (void*)Alloc(size);
+ return gUnknown_0203CF40->field10[index] = Alloc(size);
}
-void *sub_81C763C(u32 index)
+struct UnknownSubStruct_0203CF40 *GetSubstructPtr(u32 index)
{
return gUnknown_0203CF40->field10[index];
}
-void sub_81C7650(u32 index)
+void FreeSubstruct(u32 index)
{
if (gUnknown_0203CF40->field10[index] != NULL)
FREE_AND_SET_NULL(gUnknown_0203CF40->field10[index]);
}
-u16 sub_81C767C(void)
+u16 GetPokenavMode(void)
{
- return gUnknown_0203CF40->field8;
+ return gUnknown_0203CF40->mode;
}
-void sub_81C7688(u16 a0)
+void SetPokenavMode(u16 mode)
{
- gUnknown_0203CF40->field8 = a0;
+ gUnknown_0203CF40->mode = mode;
}
void sub_81C7694(u32 a0)
{
- u32 value;
- value = a0;
- if (a0 > 4)
+ u32 value = a0;
+
+ if (value > 4)
value = 0;
gUnknown_0203CF40->fieldA = value;
}
@@ -749,34 +753,27 @@ u16 sub_81C76AC(void)
return gUnknown_0203CF40->fieldA;
}
-u32 sub_81C76B8(void)
+bool32 CanViewRibbonsMenu(void)
{
- return gUnknown_0203CF40->fieldC;
+ return gUnknown_0203CF40->hasAnyRibbons;
}
bool32 sub_81C76C4(void)
{
- struct UnknownStruct_sub_81C76C4 *v1;
-
- v1 = (struct UnknownStruct_sub_81C76C4*)sub_81C761C(0, sizeof(struct UnknownStruct_sub_81C76C4));
- if (v1 == NULL)
- {
+ struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0, 0x82C);
+ if (structPtr == NULL)
return FALSE;
- }
- else
- {
- ResetSpriteData();
- FreeAllSpritePalettes();
- v1->data[3] = sub_81C7078(sub_81C7764, 1);
- return TRUE;
- }
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ structPtr->unkC = sub_81C7078(sub_81C7764, 1);
+ return TRUE;
}
u32 sub_81C76FC(void)
{
- u32 *v1;
- v1 = sub_81C763C(0);
- return sub_81C70D8(v1[3]);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return sub_81C70D8(structPtr->unkC);
}
void sub_81C7710(void)
@@ -794,15 +791,14 @@ bool32 sub_81C7738(void)
sub_81C7C94();
FreeAllWindowBuffers();
return FALSE;
- } else
- {
- return TRUE;
}
+
+ return TRUE;
}
u32 sub_81C7764(s32 a0)
{
- u32 *v1;
+ struct UnknownSubStruct_0203CF40 *structPtr;
switch (a0)
{
@@ -810,14 +806,14 @@ u32 sub_81C7764(s32 a0)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
FreeAllWindowBuffers();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, &gUnknown_0861FA04, 1);
+ InitBgsFromTemplates(0, gUnknown_0861FA04, ARRAY_COUNT(gUnknown_0861FA04));
sub_8199D98();
reset_temp_tile_data_buffers();
return 1;
case 1:
- v1 = sub_81C763C(0);
+ structPtr = GetSubstructPtr(0);
decompress_and_copy_tile_data_to_vram(0, &gPokenavHeader_Gfx, 0, 0, 0);
- SetBgTilemapBuffer(0, &v1[11]);
+ SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
CopyPaletteIntoBufferUnfaded(gPokenavHeader_Pal, 0, 0x20);
CopyBgTilemapBufferToVram(0);
@@ -825,7 +821,7 @@ u32 sub_81C7764(s32 a0)
case 2:
if (free_temp_tile_data_buffers_if_possible())
return 2;
-
+
sub_81C7B74();
return 0;
case 3:
@@ -841,58 +837,46 @@ u32 sub_81C7764(s32 a0)
}
}
-void sub_81C7834(u32 (*a0)(void), u32(*a1)(void))
+void sub_81C7834(void *func1, void *func2) // Fix types later.
{
- u32 (**v1)(void);
-
- v1 = sub_81C763C(0);
- v1[0] = a0;
- v1[1] = a1;
- v1[2] = NULL;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unk0 = func1;
+ structPtr->unk4 = func2;
+ structPtr->unk8 = 0;
}
void sub_81C7850(u32 a0)
{
- void (**v1)(u32);
-
- v1 = sub_81C763C(0);
- v1[2] = NULL;
- v1[0](a0);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unk8 = 0;
+ structPtr->unk0(a0);
}
u32 sub_81C786C(void)
{
- u32 (**v1)(void);
-
- v1 = sub_81C763C(0);
- return v1[1]();
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return structPtr->unk4();
}
void sub_81C7880(void)
{
- u32 *v1;
-
- v1 = sub_81C763C(0);
- v1[3] = sub_81C7078(atk47_cmd47, 4);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unkC = sub_81C7078(sub_81C78D4, 4);
}
void sub_81C78A0(void)
{
- u32 *v1;
-
- v1 = sub_81C763C(0);
- v1[3] = sub_81C7078(sub_81C791C, 4);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ structPtr->unkC = sub_81C7078(sub_81C791C, 4);
}
bool32 sub_81C78C0(void)
{
- u32 *v1;
-
- v1 = sub_81C763C(0);
- return sub_81C70D8(v1[3]);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+ return sub_81C70D8(structPtr->unkC);
}
-u32 atk47_cmd47(s32 a0)
+u32 sub_81C78D4(s32 a0)
{
switch (a0)
{
@@ -903,12 +887,12 @@ u32 atk47_cmd47(s32 a0)
case 0:
return 0;
case 2:
- if ((u32)ChangeBgY(0, 384, 1) >= 0x2000)
+ if (ChangeBgY(0, 384, 1) >= 0x2000u)
{
ChangeBgY(0, 0x2000, 0);
return 4;
}
-
+
return 2;
}
}
@@ -923,7 +907,8 @@ u32 sub_81C791C(s32 a0)
return 2;
}
-void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size) {
+void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size)
+{
CpuCopy16(palette, gPlttBufferUnfaded + bufferOffset, size);
}
@@ -932,7 +917,7 @@ void sub_81C795C(const struct SpritePalette *palettes)
const struct SpritePalette *current;
u32 index;
- for (current = palettes; current->data != NULL; current++)
+ for (current = palettes; current->data != NULL; current++)
{
index = AllocSpritePalette(current->tag);
if (index == 0xFF)
@@ -953,7 +938,7 @@ void sub_81C7990(u32 a0, u16 a1)
}
__attribute__((naked))
-void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 unused, u32 a5, u32 a6)
+void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 a4, u32 a5)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1090,15 +1075,15 @@ _081C7AAE:\n\
void sub_81C7AC0(s32 a0)
{
- u32 *v1;
- v1 = sub_81C763C(0);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
switch (a0)
{
case 0:
- BeginNormalPaletteFade(v1[5], -2, 0, 16, RGB_BLACK);
+ BeginNormalPaletteFade(structPtr->unk14, -2, 0, 16, RGB_BLACK);
break;
case 1:
- BeginNormalPaletteFade(v1[5], -2, 16, 0, RGB_BLACK);
+ BeginNormalPaletteFade(structPtr->unk14, -2, 16, 0, RGB_BLACK);
break;
case 2:
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
@@ -1119,93 +1104,330 @@ void sub_81C7B40(void)
BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK);
}
-void sub_81C7B54(const struct BgTemplate *a0, s32 a1)
+void InitBgTemplates(const struct BgTemplate *templates, s32 count)
{
s32 i;
- if (a1 <= 0)
- return;
- for (i = a1; i != 0; i--)
- {
- InitBgFromTemplate(a0++);
- }
+
+ for (i = 0; i < count; i++)
+ InitBgFromTemplate(templates++);
}
void sub_81C7B74(void)
{
- u32 *v1;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- v1 = sub_81C763C(0);
InitWindows(&gUnknown_0861FA08[0]);
- v1[4] = 0;
- sub_81C7BF8(0);
- PutWindowTilemap(v1[4]);
- CopyWindowToVram(v1[4], 3); // TODO: Use a defined constant here.
+ structPtr->unk10 = 0;
+ sub_81C7BF8(structPtr->unk10);
+ PutWindowTilemap(structPtr->unk10);
+ CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here.
}
void sub_81C7BA4(u32 a0)
{
- u32 *v1;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- v1 = sub_81C763C(0);
- sub_81C7BF8(v1[4]);
- AddTextPrinterParameterized3(v1[4], 1, 0, 1, gMenuButtonReminderColor, 0, MenuButtonReminders[a0]);
+ sub_81C7BF8(structPtr->unk10);
+ AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sMenuButtonReminders[a0]);
}
-bool8 sub_81C7BE8(void)
+bool32 IsDma3ManagerBusyWithBgCopy_(void)
{
return IsDma3ManagerBusyWithBgCopy();
}
-void sub_81C7BF8(u32 a0)
+void sub_81C7BF8(u32 windowId)
{
- FillWindowPixelBuffer(a0, PALETTE_NUM_TO_FILL_VALUE(4));
- FillWindowPixelRect(a0, 0x55, 0, 0, 0x80, 1);
+ FillWindowPixelBuffer(windowId, PALETTE_NUM_TO_FILL_VALUE(4));
+ FillWindowPixelRect(windowId, PALETTE_NUM_TO_FILL_VALUE(5), 0, 0, 0x80, 1);
}
void sub_81C7C28(void)
{
- u32 *v1;
- u32 i;
- u8 v2;
- u32 v3;
- u32 v4;
+ s32 i;
u8 spriteId;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
- v1 = sub_81C763C(0);
for (i = 0; i < ARRAY_COUNT(gUnknown_0861FA4C); i++)
- {
LoadCompressedSpriteSheet(&gUnknown_0861FA4C[i]);
- }
sub_81C795C(gUnknown_0861FA54);
- v2 = IndexOfSpritePaletteTag(0);
- v1[5] = ~1 & ~(0x10000 << v2);
+ structPtr->unk14 = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
spriteId = CreateSprite(&gUnknown_0861FB04, 220, 12, 0);
- v1[6] = (u32)(&gSprites[spriteId]);
+ structPtr->unk18 = &gSprites[spriteId];
}
void sub_81C7C94(void)
{
- void **v1;
- v1 = sub_81C763C(0);
- DestroySprite(v1[6]);
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ DestroySprite(structPtr->unk18);
FreeSpriteTilesByTag(0);
FreeSpritePaletteByTag(0);
}
-void sub_81C7CB4(u16 *a0)
+void sub_81C7CB4(struct Sprite *sprite)
{
- u32 v1;
- v1 = GetBgY(0);
- a0[19] = (v1 >> 8) * -1;
+ sprite->pos2.y = (GetBgY(0) / 256u) * -1;
}
struct Sprite *sub_81C7CCC(void)
{
- struct Sprite **v1;
- struct Sprite *v2;
- v1 = sub_81C763C(0);
- v2 = v1[6];
- v2->callback = SpriteCallbackDummy;
- return v2;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ structPtr->unk18->callback = SpriteCallbackDummy;
+ return structPtr->unk18;
+}
+
+void sub_81C7CE4(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ structPtr->unk18->pos1.x = 220;
+ structPtr->unk18->pos1.y = 12;
+ structPtr->unk18->callback = sub_81C7CB4;
+ structPtr->unk18->invisible = FALSE;
+ structPtr->unk18->oam.priority = 0;
+ structPtr->unk18->subpriority = 0;
+}
+
+extern const struct SpriteTemplate gUnknown_0861FB2C;
+extern const struct SpriteTemplate gUnknown_0861FB44;
+extern const struct CompressedSpriteSheet gUnknown_0861FA6C[];
+
+void sub_81C7D28(void)
+{
+ s32 i, spriteId;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ LoadCompressedSpriteSheet(&gUnknown_0861FA64);
+ AllocSpritePalette(1);
+ AllocSpritePalette(2);
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_0861FB2C, 0, 0, 1);
+ structPtr->unk1C[i] = &gSprites[spriteId];
+ structPtr->unk1C[i]->invisible = TRUE;
+ structPtr->unk1C[i]->pos2.x = i * 64;
+
+ spriteId = CreateSprite(&gUnknown_0861FB44, 0, 0, 2);
+ structPtr->unk24[i] = &gSprites[spriteId];
+ structPtr->unk24[i]->invisible = TRUE;
+ structPtr->unk24[i]->pos2.x = i * 32;
+ structPtr->unk24[i]->pos2.y = 18;
+ structPtr->unk24[i]->oam.tileNum += (i * 8) + 64;
+ }
+}
+
+void sub_81C7DFC(u32 arg0)
+{
+ if (arg0 < 6)
+ sub_81C7E58(arg0);
+ else
+ sub_81C7F24(arg0 - 6);
+}
+
+void sub_81C7E14(u32 arg0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (arg0 == 4)
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
+ else
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
+}
+
+void sub_81C7E58(u32 arg0)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr;
+ u32 size, tag;
+
+ if (arg0 >= 6)
+ return;
+
+ structPtr = GetSubstructPtr(0);
+ tag = gUnknown_0861FA6C[arg0].tag;
+ size = GetDecompressedDataSize(gUnknown_0861FA6C[arg0].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(gUnknown_0861FA6C[arg0].data, gDecompressionBuffer);
+ RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ structPtr->unk1C[1]->oam.tileNum = GetSpriteTileStartByTag(2) + gUnknown_0861FA6C[arg0].size;
+
+ if (arg0 == 4 || arg0 == 5)
+ structPtr->unk1C[1]->pos2.x = 56;
+ else
+ structPtr->unk1C[1]->pos2.x = 64;
+}
+
+// Needed to match u32/u16 tag field difference.
+struct CompressedSpritePalette_
+{
+ const u32 *data; // LZ77 compressed palette data
+ u32 tag;
+};
+
+extern const struct CompressedSpritePalette_ gUnknown_0861FA9C[];
+
+void sub_81C7F24(u32 arg0)
+{
+ u32 size, tag;
+
+ if (arg0 >= 7)
+ return;
+
+ tag = gUnknown_0861FA9C[arg0].tag;
+ size = GetDecompressedDataSize(gUnknown_0861FA9C[arg0].data);
+ LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
+ LZ77UnCompWram(gUnknown_0861FA9C[arg0].data, &gDecompressionBuffer[0x1000]);
+ RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+}
+
+void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
+{
+ u32 var;
+
+ if (!arg1)
+ var = 0x30;
+ else
+ var = 0x10;
+
+ if (arg0 < 6)
+ sub_81C803C(var, arg2);
+ else
+ sub_81C8088(var, arg2);
+}
+
+void sub_81C7FC4(u32 arg0, bool32 arg1)
+{
+ if (arg0 < 6)
+ sub_81C80D4(arg1);
+ else
+ sub_81C8110(arg1);
+}
+
+void sub_81C7FDC(void)
+{
+ s32 i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk1C[i]->invisible = TRUE;
+ structPtr->unk24[i]->invisible = TRUE;
+ }
+}
+
+bool32 sub_81C8010(void)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (structPtr->unk1C[0]->callback == SpriteCallbackDummy && structPtr->unk24[0]->callback == SpriteCallbackDummy)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_81C803C(u32 arg0, bool32 arg1)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg1)
+ var1 = -96, var2 = 32;
+ else
+ var1 = 256, var2 = 160;
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk1C[i]->pos1.y = arg0;
+ sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
+ }
+}
+
+void sub_81C8088(u32 arg0, bool32 arg1)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg1)
+ var1 = -96, var2 = 16;
+ else
+ var1 = 256, var2 = 192;
+
+ for (i = 0; i < 2; i++)
+ {
+ structPtr->unk24[i]->pos1.y = arg0;
+ sub_81C814C(structPtr->unk24[i], var1, var2, 12);
+ }
+}
+
+void sub_81C80D4(bool32 arg0)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg0)
+ var1 = 32, var2 = -96;
+ else
+ var1 = 192, var2 = 256;
+
+ for (i = 0; i < 2; i++)
+ {
+ sub_81C814C(structPtr->unk1C[i], var1, var2, 12);
+ }
+}
+
+void sub_81C8110(bool32 arg0)
+{
+ s32 var1, var2, i;
+ struct UnknownSubStruct_0203CF40 *structPtr = GetSubstructPtr(0);
+
+ if (!arg0)
+ var1 = 16, var2 = -96;
+ else
+ var1 = 192, var2 = 256;
+
+ for (i = 0; i < 2; i++)
+ {
+ sub_81C814C(structPtr->unk24[i], var1, var2, 12);
+ }
+}
+
+void sub_81C814C(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3)
+{
+ sprite->pos1.x = arg1;
+ sprite->data[0] = arg1 * 16;
+ sprite->data[1] = (arg2 - arg1) * 16 / arg3;
+ sprite->data[2] = arg3;
+ sprite->data[7] = arg2;
+ sprite->callback = sub_81C817C;
+}
+
+void sub_81C817C(struct Sprite *sprite)
+{
+ if (sprite->data[2] != 0)
+ {
+ sprite->data[2]--;
+ sprite->data[0] += sprite->data[1];
+ sprite->pos1.x = sprite->data[0] >> 4;
+ if (sprite->pos1.x < -16 || sprite->pos1.x > 256)
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ }
+ else
+ {
+ sprite->pos1.x = sprite->data[7];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+/*
+bool32 sub_81C81D4(const void *arg0, void *arg1, s32 arg3)
+{
+ struct UnknownSubStruct_0203CF40 *structPtr = AllocSubstruct(0x11, 0x8A4);
+
+ if (structPtr == NULL)
+ return FALSE;
}
+*/
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index 88e0bf4ac..7e9e81e96 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -1630,7 +1630,7 @@ void sub_8014210(u16 battleFlags)
void sub_8014290(u16 arg0, u16 x, u16 y)
{
- VarSet(VAR_0x4087, arg0);
+ VarSet(VAR_CABLE_CLUB_STATE, arg0);
SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
WarpIntoMap();
@@ -1639,7 +1639,7 @@ void sub_8014290(u16 arg0, u16 x, u16 y)
void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4)
{
gSpecialVar_0x8004 = arg4;
- VarSet(VAR_0x4087, arg4);
+ VarSet(VAR_CABLE_CLUB_STATE, arg4);
gFieldLinkPlayerCount = GetLinkPlayerCount();
gUnknown_03005DB4 = GetMultiplayerId();
SetCableClubWarp();
diff --git a/src/script.c b/src/script.c
index c61ae7183..c95a1141f 100644
--- a/src/script.c
+++ b/src/script.c
@@ -2,6 +2,7 @@
#include "script.h"
#include "event_data.h"
#include "util.h"
+#include "constants/map_scripts.h"
#define RAM_SCRIPT_MAGIC 51
@@ -241,7 +242,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
while (RunScriptCommand(&sScriptContext2) == TRUE);
}
-u8 *mapheader_get_tagged_pointer(u8 tag)
+u8 *MapHeaderGetScriptTable(u8 tag)
{
const u8 *mapScripts = gMapHeader.mapScripts;
@@ -261,16 +262,16 @@ u8 *mapheader_get_tagged_pointer(u8 tag)
}
}
-void mapheader_run_script_by_tag(u8 tag)
+void MapHeaderRunScriptType(u8 tag)
{
- u8 *ptr = mapheader_get_tagged_pointer(tag);
+ u8 *ptr = MapHeaderGetScriptTable(tag);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
+u8 *MapHeaderCheckScriptTable(u8 tag)
{
- u8 *ptr = mapheader_get_tagged_pointer(tag);
+ u8 *ptr = MapHeaderGetScriptTable(tag);
if (!ptr)
return NULL;
@@ -291,45 +292,45 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
}
}
-void mapheader_run_script_with_tag_x1(void)
+void RunOnLoadMapScript(void)
{
- mapheader_run_script_by_tag(1);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD);
}
-void mapheader_run_script_with_tag_x3(void)
+void RunOnTransitionMapScript(void)
{
- mapheader_run_script_by_tag(3);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION);
}
-void mapheader_run_script_with_tag_x5(void)
+void RunOnResumeMapScript(void)
{
- mapheader_run_script_by_tag(5);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME);
}
-void mapheader_run_script_with_tag_x7(void)
+void RunOnReturnToFieldMapScript(void)
{
- mapheader_run_script_by_tag(7);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_RETURN_TO_FIELD);
}
-void mapheader_run_script_with_tag_x6(void)
+void RunOnDiveWarpMapScript(void)
{
- mapheader_run_script_by_tag(6);
+ MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP);
}
-bool8 mapheader_run_first_tag2_script_list_match(void)
+bool8 TryRunOnFrameMapScript(void)
{
- u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(2);
+ u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE);
if (!ptr)
- return 0;
+ return FALSE;
ScriptContext1_SetupScript(ptr);
- return 1;
+ return TRUE;
}
-void mapheader_run_first_tag4_script_list_match(void)
+void TryRunOnWarpIntoMapScript(void)
{
- u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4);
+ u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 3fe1b7d61..94b1c79fc 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -91,7 +91,7 @@ extern void sub_80AF688(void);
extern void var_800D_set_xB(void);
extern void sub_808B864(void);
extern void CB2_Pokedex(void);
-extern void PlayRainSoundEffect(void);
+extern void PlayRainStoppingSoundEffect(void);
extern void CB2_PokeNav(void);
extern void ScriptUnfreezeEventObjects(void);
extern void save_serialize_map(void);
@@ -608,7 +608,7 @@ static bool8 StartMenuPokedexCallback(void)
if (!gPaletteFade.active)
{
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_Pokedex);
@@ -623,7 +623,7 @@ static bool8 StartMenuPokemonCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
@@ -638,7 +638,7 @@ static bool8 StartMenuBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu
@@ -653,7 +653,7 @@ static bool8 StartMenuPokeNavCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PokeNav); // Display PokeNav
@@ -668,7 +668,7 @@ static bool8 StartMenuPlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
@@ -699,7 +699,7 @@ static bool8 StartMenuOptionCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_InitOptionMenu); // Display option menu
@@ -732,7 +732,7 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
ShowTrainerCardInLink(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
@@ -761,7 +761,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
diff --git a/src/trade.c b/src/trade.c
index 1b1b4670b..5595cee94 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1834,9 +1834,9 @@ static void sub_8077B74(void)
}
if (gUnknown_0203229C->tradeMenuCursorPosition < PARTY_SIZE)
- gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20;
+ gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex;
else
- gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20 + PARTY_SIZE;
+ gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex + PARTY_SIZE;
gUnknown_0203229C->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_832DC94, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][1] * 8, 2);
gMain.state = 16;
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 821068fef..2873fdf8f 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -796,7 +796,7 @@ void sub_81D5FB4(u16 *mapArg)
dst += 31;
}
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
FreeDataStruct();
}
diff --git a/src/tv.c b/src/tv.c
index 5904efeb8..248721083 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -3603,7 +3603,7 @@ void GetMomOrDadStringForTVMessage(void)
void sub_80F01B8(void)
{
- VarSet(VAR_0x40BC, 0);
+ VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER);
}