summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-03-15 01:19:00 -0400
committerPhlosioneer <mattmdrr2@gmail.com>2019-03-15 01:19:00 -0400
commit31ded7cc6f40876421c7186e15f8a9fa606ff569 (patch)
tree831d96edb6d2b4d239affc57ef98d6ccb2f1bccb /src
parent2e789dbbdc18f56cba62aef51156d44136b20632 (diff)
parent8e1537fb57dc7ed17079b30f7a3851132cf462bd (diff)
Merge branch 'master' into pokenav-decomp-again
Diffstat (limited to 'src')
-rw-r--r--src/apprentice.c4
-rwxr-xr-xsrc/battle_anim_effects_2.c9
-rwxr-xr-xsrc/battle_anim_effects_3.c3
-rw-r--r--src/battle_controller_link_opponent.c12
-rw-r--r--src/battle_controller_link_partner.c15
-rw-r--r--src/battle_controller_opponent.c10
-rw-r--r--src/battle_controller_player.c10
-rw-r--r--src/battle_controller_player_partner.c9
-rw-r--r--src/battle_controller_recorded_opponent.c9
-rw-r--r--src/battle_controller_recorded_player.c8
-rw-r--r--src/battle_controller_safari.c10
-rw-r--r--src/battle_controller_wally.c10
-rw-r--r--src/battle_controllers.c2
-rw-r--r--src/battle_dome.c2
-rw-r--r--src/battle_factory_screen.c54
-rw-r--r--src/battle_interface.c165
-rw-r--r--src/battle_main.c6
-rw-r--r--src/battle_message.c94
-rw-r--r--src/battle_pyramid.c6
-rw-r--r--src/battle_pyramid_bag.c33
-rw-r--r--src/battle_records.c11
-rw-r--r--src/battle_script_commands.c12
-rw-r--r--src/battle_setup.c7
-rw-r--r--src/battle_tent.c2
-rw-r--r--src/battle_tower.c14
-rw-r--r--src/battle_util.c30
-rw-r--r--src/berry.c6
-rw-r--r--src/berry_blender.c32
-rw-r--r--src/berry_fix_program.c8
-rw-r--r--src/berry_tag_screen.c14
-rw-r--r--src/bg.c4
-rw-r--r--src/bike.c6
-rwxr-xr-xsrc/cable_car.c8
-rw-r--r--src/cable_club.c47
-rw-r--r--src/clear_save_data_screen.c6
-rw-r--r--src/coins.c6
-rw-r--r--src/contest.c16
-rw-r--r--src/contest_link_80F57C4.c11
-rw-r--r--src/contest_painting.c2
-rw-r--r--src/credits.c2
-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/daycare.c6
-rw-r--r--src/decoration.c66
-rw-r--r--src/dewford_trend.c4
-rw-r--r--src/diploma.c5
-rw-r--r--src/easy_chat.c4128
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/electric.c3
-rw-r--r--src/event_data.c22
-rw-r--r--src/field_control_avatar.c19
-rw-r--r--src/field_effect.c10
-rwxr-xr-xsrc/field_message_box.c10
-rw-r--r--src/field_player_avatar.c14
-rw-r--r--src/field_region_map.c8
-rw-r--r--src/field_screen_effect.c36
-rw-r--r--src/field_special_scene.c4
-rw-r--r--src/field_specials.c186
-rw-r--r--src/field_weather.c15
-rw-r--r--src/field_weather_effect.c103
-rw-r--r--src/fieldmap.c45
-rw-r--r--src/fldeff_cut.c1
-rw-r--r--src/fldeff_escalator.c14
-rw-r--r--src/fldeff_misc.c10
-rw-r--r--src/fldeff_softboiled.c2
-rw-r--r--src/flying.c1409
-rw-r--r--src/frontier_pass.c8
-rw-r--r--src/frontier_util.c43
-rw-r--r--src/graphics.c14
-rw-r--r--src/hall_of_fame.c20
-rw-r--r--src/hof_pc.c4
-rw-r--r--src/ice.c47
-rw-r--r--src/item.c4
-rwxr-xr-xsrc/item_menu.c42
-rwxr-xr-xsrc/item_use.c36
-rw-r--r--src/learn_move.c6
-rw-r--r--src/lilycove_lady.c6
-rw-r--r--src/link.c38
-rw-r--r--src/link_rfu.c24
-rw-r--r--src/list_menu.c20
-rw-r--r--src/load_save.c4
-rw-r--r--src/lottery_corner.c2
-rw-r--r--src/mail.c6
-rw-r--r--src/main.c19
-rw-r--r--src/main_menu.c217
-rw-r--r--src/map_name_popup.c6
-rw-r--r--src/match_call.c10
-rw-r--r--src/mauville_old_man.c2
-rw-r--r--src/menu.c129
-rw-r--r--src/menu_helpers.c8
-rw-r--r--src/mirage_tower.c2
-rw-r--r--src/money.c6
-rw-r--r--src/mystery_event_menu.c10
-rw-r--r--src/mystery_event_script.c2
-rw-r--r--src/naming_screen.c14
-rw-r--r--src/normal.c2
-rw-r--r--src/option_menu.c7
-rw-r--r--src/overworld.c1009
-rwxr-xr-xsrc/party_menu.c52
-rw-r--r--src/player_pc.c30
-rw-r--r--src/poison.c2
-rw-r--r--src/pokeblock.c12
-rw-r--r--src/pokeblock_feed.c6
-rw-r--r--src/pokedex.c14
-rw-r--r--src/pokemon.c29
-rw-r--r--src/pokemon_size_record.c4
-rw-r--r--src/pokemon_storage_system.c56
-rw-r--r--src/pokemon_summary_screen.c1473
-rw-r--r--src/pokenav.c16
-rw-r--r--src/pokenav_match_call.c4
-rw-r--r--src/record_mixing.c57
-rw-r--r--src/region_map.c26
-rw-r--r--src/reset_rtc_screen.c10
-rw-r--r--src/reshow_battle_screen.c3
-rw-r--r--src/rock.c2
-rw-r--r--src/rom_8011DC0.c37
-rw-r--r--src/roulette.c44
-rw-r--r--src/safari_zone.c3
-rw-r--r--src/save.c19
-rw-r--r--src/save_failed_screen.c20
-rw-r--r--src/scrcmd.c20
-rw-r--r--src/script.c43
-rw-r--r--src/script_menu.c18
-rwxr-xr-xsrc/script_pokemon_util_80F87D8.c21
-rw-r--r--src/secret_base.c184
-rwxr-xr-xsrc/shop.c20
-rw-r--r--src/siirtc.c8
-rw-r--r--src/slot_machine.c2803
-rw-r--r--src/start_menu.c152
-rw-r--r--src/starter_choose.c8
-rw-r--r--src/task.c3
-rw-r--r--src/text.c12
-rw-r--r--src/time_events.c2
-rw-r--r--src/trade.c34
-rw-r--r--src/trader.c4
-rwxr-xr-xsrc/trainer_card.c20
-rw-r--r--src/trainer_hill.c90
-rw-r--r--src/trainer_see.c2
-rw-r--r--src/tv.c53
-rw-r--r--src/unk_text_util_2.c10
-rw-r--r--src/wallclock.c4
-rw-r--r--src/water.c56
-rw-r--r--src/window.c9
165 files changed, 18543 insertions, 5372 deletions
diff --git a/src/apprentice.c b/src/apprentice.c
index 9cf8cd4b4..27ff8e36e 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -1619,7 +1619,7 @@ static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height)
static void RemoveAndHideWindow(u8 windowId)
{
- sub_8198070(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
@@ -1826,7 +1826,7 @@ static void Script_PrintMessage(void)
FreezeEventObjects();
sub_808B864();
sub_808BCF4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
PrintMessage();
}
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 0c6f2ef11..80b3258b4 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -16,9 +16,6 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-extern void sub_8108C94(struct Sprite *);
-extern void sub_810310C(u8, struct Sprite *);
-
void sub_8103448(struct Sprite *);
void sub_8103498(struct Sprite *);
void sub_810358C(struct Sprite *);
@@ -1417,7 +1414,7 @@ static void AnimTask_WithdrawStep(u8 taskId)
}
}
-// Animates a "zap of energy" used in KINESIS.
+// Animates a "zap of energy" used in KINESIS.
// arg 0: x pixel offset
// arg 1: y pixel offset
// arg 2: vertical flip
@@ -1592,7 +1589,7 @@ void sub_8103AA4(struct Sprite *sprite)
sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0));
sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0));
sprite->callback = sub_8103A00;
- }
+ }
}
static void sub_8103BE4(u8 taskId)
@@ -3470,7 +3467,7 @@ void AnimOrbitFast(struct Sprite *sprite)
static void AnimOrbitFastStep(struct Sprite *sprite)
{
- if ((u16)(sprite->data[1] - 64) < 128)
+ if (sprite->data[1] >= 64 && sprite->data[1] <= 191)
sprite->subpriority = sprite->data[7] + 1;
else
sprite->subpriority = sprite->data[7] - 1;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 49fb69342..efa2620fd 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -24,9 +24,6 @@
#include "constants/species.h"
#include "constants/weather.h"
-extern u8 sub_807521C(s16 x, s16 y, u8 a3);
-extern void sub_810E2C8(struct Sprite *);
-
extern const struct SpriteTemplate gUnknown_08593114;
extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 05da72e16..23d469c27 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -16,6 +16,7 @@
#include "palette.h"
#include "pokeball.h"
#include "pokemon.h"
+#include "recorded_battle.h"
#include "reshow_battle_screen.h"
#include "sound.h"
#include "string_util.h"
@@ -26,15 +27,12 @@
#include "constants/battle_anim.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "recorded_battle.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81851A8(u8 *);
-extern u16 sub_8068B48(void);
-
// this file's functions
static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void);
@@ -92,7 +90,7 @@ static void LinkOpponentHandleBattleAnimation(void);
static void LinkOpponentHandleLinkStandbyMsg(void);
static void LinkOpponentHandleResetActionMoveSelection(void);
static void LinkOpponentHandleCmd55(void);
-static void nullsub_92(void);
+static void LinkOpponentCmdEnd(void);
static void LinkOpponentBufferRunCommand(void);
static void LinkOpponentBufferExecCompleted(void);
@@ -164,7 +162,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkOpponentHandleLinkStandbyMsg,
LinkOpponentHandleResetActionMoveSelection,
LinkOpponentHandleCmd55,
- nullsub_92
+ LinkOpponentCmdEnd
};
static void nullsub_28(void)
@@ -1857,6 +1855,6 @@ static void LinkOpponentHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_92(void)
+static void LinkOpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 19d39609f..22633c5bc 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -16,6 +16,7 @@
#include "palette.h"
#include "pokeball.h"
#include "pokemon.h"
+#include "recorded_battle.h"
#include "reshow_battle_screen.h"
#include "sound.h"
#include "string_util.h"
@@ -26,13 +27,11 @@
#include "constants/battle_anim.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "recorded_battle.h"
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81851A8(u8 *);
-
// this file's functions
static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void);
@@ -90,7 +89,7 @@ static void LinkPartnerHandleBattleAnimation(void);
static void LinkPartnerHandleLinkStandbyMsg(void);
static void LinkPartnerHandleResetActionMoveSelection(void);
static void LinkPartnerHandleCmd55(void);
-static void nullsub_113(void);
+static void LinkPartnerCmdEnd(void);
static void LinkPartnerBufferRunCommand(void);
static void LinkPartnerBufferExecCompleted(void);
@@ -161,10 +160,10 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkPartnerHandleLinkStandbyMsg,
LinkPartnerHandleResetActionMoveSelection,
LinkPartnerHandleCmd55,
- nullsub_113
+ LinkPartnerCmdEnd
};
-static void nullsub_112(void)
+static void SpriteCB_Null2(void)
{
}
@@ -1564,7 +1563,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_112;
+ gBattlerControllerFuncs[gActiveBattler] = SpriteCB_Null2;
}
static void sub_814DCCC(u8 taskId)
@@ -1687,6 +1686,6 @@ static void LinkPartnerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_113(void)
+static void LinkPartnerCmdEnd(void)
{
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 99bb0c588..7d940cb89 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -32,14 +32,12 @@
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/trainers.h"
+#include "trainer_hill.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
-
// this file's functions
static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void);
@@ -97,7 +95,7 @@ static void OpponentHandleBattleAnimation(void);
static void OpponentHandleLinkStandbyMsg(void);
static void OpponentHandleResetActionMoveSelection(void);
static void OpponentHandleCmd55(void);
-static void nullsub_91(void);
+static void OpponentCmdEnd(void);
static void OpponentBufferRunCommand(void);
static void OpponentBufferExecCompleted(void);
@@ -169,7 +167,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
OpponentHandleLinkStandbyMsg,
OpponentHandleResetActionMoveSelection,
OpponentHandleCmd55,
- nullsub_91
+ OpponentCmdEnd
};
// unknown unused data
@@ -2003,6 +2001,6 @@ static void OpponentHandleCmd55(void)
OpponentBufferExecCompleted();
}
-static void nullsub_91(void)
+static void OpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 6bcc97c68..b377ecf64 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -39,10 +39,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern void sub_81AABB0(void);
-extern void sub_81851A8(u8 *);
-
// this file's functions
static void PlayerHandleGetMonData(void);
static void PlayerHandleSetMonData(void);
@@ -99,7 +95,7 @@ static void PlayerHandleBattleAnimation(void);
static void PlayerHandleLinkStandbyMsg(void);
static void PlayerHandleResetActionMoveSelection(void);
static void PlayerHandleCmd55(void);
-static void nullsub_22(void);
+static void PlayerCmdEnd(void);
static void PlayerBufferRunCommand(void);
static void HandleInputChooseTarget(void);
@@ -186,7 +182,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerHandleLinkStandbyMsg,
PlayerHandleResetActionMoveSelection,
PlayerHandleCmd55,
- nullsub_22
+ PlayerCmdEnd
};
static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
@@ -3105,6 +3101,6 @@ static void PlayerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_22(void)
+static void PlayerCmdEnd(void)
{
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index a9b0f376b..2c53938c1 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -30,9 +30,6 @@
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_81358F4(void);
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
static void PlayerPartnerHandleGetRawMonData(void);
@@ -90,7 +87,7 @@ static void PlayerPartnerHandleBattleAnimation(void);
static void PlayerPartnerHandleLinkStandbyMsg(void);
static void PlayerPartnerHandleResetActionMoveSelection(void);
static void PlayerPartnerHandleCmd55(void);
-static void nullsub_128(void);
+static void PlayerPartnerCmdEnd(void);
static void PlayerPartnerBufferRunCommand(void);
static void PlayerPartnerBufferExecCompleted(void);
@@ -167,7 +164,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerPartnerHandleLinkStandbyMsg,
PlayerPartnerHandleResetActionMoveSelection,
PlayerPartnerHandleCmd55,
- nullsub_128
+ PlayerPartnerCmdEnd
};
// unknown unused data
@@ -1928,6 +1925,6 @@ static void PlayerPartnerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_128(void)
+static void PlayerPartnerCmdEnd(void)
{
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 911eb6ce5..e43c5f8ae 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -33,9 +33,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-extern u16 sub_8068B48(void);
-
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
static void RecordedOpponentHandleGetRawMonData(void);
@@ -93,7 +90,7 @@ static void RecordedOpponentHandleBattleAnimation(void);
static void RecordedOpponentHandleLinkStandbyMsg(void);
static void RecordedOpponentHandleResetActionMoveSelection(void);
static void RecordedOpponentHandleCmd55(void);
-static void nullsub_119(void);
+static void RecordedOpponentCmdEnd(void);
static void RecordedOpponentBufferRunCommand(void);
static void RecordedOpponentBufferExecCompleted(void);
@@ -165,7 +162,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
RecordedOpponentHandleLinkStandbyMsg,
RecordedOpponentHandleResetActionMoveSelection,
RecordedOpponentHandleCmd55,
- nullsub_119
+ RecordedOpponentCmdEnd
};
static void nullsub_70(void)
@@ -1791,6 +1788,6 @@ static void RecordedOpponentHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_119(void)
+static void RecordedOpponentCmdEnd(void)
{
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index b2dfca6a0..412c49f17 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -30,8 +30,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
static void RecordedPlayerHandleGetRawMonData(void);
@@ -89,7 +87,7 @@ static void RecordedPlayerHandleBattleAnimation(void);
static void RecordedPlayerHandleLinkStandbyMsg(void);
static void RecordedPlayerHandleResetActionMoveSelection(void);
static void RecordedPlayerHandleCmd55(void);
-static void nullsub_121(void);
+static void RecordedPlayerCmdEnd(void);
static void RecordedPlayerBufferRunCommand(void);
static void RecordedPlayerBufferExecCompleted(void);
@@ -160,7 +158,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
RecordedPlayerHandleLinkStandbyMsg,
RecordedPlayerHandleResetActionMoveSelection,
RecordedPlayerHandleCmd55,
- nullsub_121
+ RecordedPlayerCmdEnd
};
static void nullsub_120(void)
@@ -1808,6 +1806,6 @@ static void RecordedPlayerHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_121(void)
+static void RecordedPlayerCmdEnd(void)
{
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 54ba04ab4..e9da16252 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -25,8 +25,6 @@
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_81358F4(void);
-
// this file's functions
static void SafariHandleGetMonData(void);
static void SafariHandleGetRawMonData(void);
@@ -84,7 +82,7 @@ static void SafariHandleBattleAnimation(void);
static void SafariHandleLinkStandbyMsg(void);
static void SafariHandleResetActionMoveSelection(void);
static void SafariHandleCmd55(void);
-static void nullsub_115(void);
+static void SafariCmdEnd(void);
static void SafariBufferRunCommand(void);
static void SafariBufferExecCompleted(void);
@@ -148,10 +146,10 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
SafariHandleLinkStandbyMsg,
SafariHandleResetActionMoveSelection,
SafariHandleCmd55,
- nullsub_115
+ SafariCmdEnd
};
-static void nullsub_114(void)
+static void SpriteCB_Null4(void)
{
}
@@ -688,6 +686,6 @@ static void SafariHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_81595E4;
}
-static void nullsub_115(void)
+static void SafariCmdEnd(void)
{
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index d891b96b6..f1b783b21 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -33,8 +33,6 @@
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
-extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon);
-
// this file's functions
static void WallyHandleGetMonData(void);
static void WallyHandleGetRawMonData(void);
@@ -92,7 +90,7 @@ static void WallyHandleBattleAnimation(void);
static void WallyHandleLinkStandbyMsg(void);
static void WallyHandleResetActionMoveSelection(void);
static void WallyHandleCmd55(void);
-static void nullsub_118(void);
+static void WallyCmdEnd(void);
static void WallyBufferRunCommand(void);
static void WallyBufferExecCompleted(void);
@@ -161,10 +159,10 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
WallyHandleLinkStandbyMsg,
WallyHandleResetActionMoveSelection,
WallyHandleCmd55,
- nullsub_118
+ WallyCmdEnd
};
-static void nullsub_117(void)
+static void SpriteCB_Null7(void)
{
}
@@ -1559,6 +1557,6 @@ static void WallyHandleCmd55(void)
gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
-static void nullsub_118(void)
+static void WallyCmdEnd(void)
{
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 70a53f332..29272c19a 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -767,7 +767,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
{
if (IsLinkMaster())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].data[11]++;
}
else
diff --git a/src/battle_dome.c b/src/battle_dome.c
index bfede1b28..f86faeffb 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -3794,7 +3794,7 @@ static void sub_8190CD4(u8 taskId)
for (i = windowId; i < windowId + 9; i++)
{
CopyWindowToVram(i, 2);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
gTasks[taskId].data[0] = 3;
break;
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index bb9fe8e28..85c0b2808 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)
@@ -1741,7 +1741,7 @@ static void Select_CopyMonsToPlayerParty(void)
{
gPlayerParty[i] = sFactorySelectScreen->mons[j].monData;
gSaveBlock2Ptr->frontier.rentalMons[i].monId = sFactorySelectScreen->mons[j].monSetId;
- gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i].box, MON_DATA_PERSONALITY, NULL);
+ gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL);
break;
@@ -1786,14 +1786,14 @@ static void sub_819B958(u8 windowId)
{
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
CopyWindowToVram(windowId, 2);
ClearWindowTilemap(windowId);
}
static void Select_PrintRentalPkmnString(void)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -1804,7 +1804,7 @@ static void Select_PrintMonSpecies(void)
u8 x;
u8 monId = sFactorySelectScreen->cursorPos;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
@@ -1816,7 +1816,7 @@ static void Select_PrintSelectMonString(void)
{
const u8 *str = NULL;
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
if (sFactorySelectScreen->selectingMonsState == 1)
str = gText_SelectFirstPkmn;
else if (sFactorySelectScreen->selectingMonsState == 2)
@@ -1832,7 +1832,7 @@ static void Select_PrintSelectMonString(void)
static void Select_PrintCantSelectSameMon(void)
{
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
CopyWindowToVram(2, 2);
}
@@ -1842,7 +1842,7 @@ static void Select_PrintMenuOptions(void)
u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
AddTextPrinterParameterized3(3, 1, 7, 1, gUnknown_08610476, 0, gText_Summary);
if (selectedId != 0)
AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Deselect);
@@ -1856,7 +1856,7 @@ static void Select_PrintMenuOptions(void)
static void Select_PrintYesNoOptions(void)
{
PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610476, 0, gText_Yes2);
AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610476, 0, gText_No2);
CopyWindowToVram(4, 3);
@@ -1924,7 +1924,7 @@ static void Select_PrintMonCategory(void)
if (monId < SELECTABLE_MONS_COUNT)
{
PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
x = GetStringRightAlignXOffset(1, text, 0x76);
@@ -2873,7 +2873,7 @@ static void sub_819D588(u8 taskId)
case 3:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
if (sFactorySwapScreen->inEnemyScreen == TRUE)
{
@@ -3002,7 +3002,7 @@ static void sub_819D770(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 6:
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
gTasks[taskId].data[0]++;
break;
@@ -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:
@@ -3546,7 +3546,7 @@ static void sub_819EA64(u8 windowId)
{
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
CopyWindowToVram(windowId, 2);
ClearWindowTilemap(windowId);
}
@@ -3554,14 +3554,14 @@ static void sub_819EA64(u8 windowId)
static void sub_819EAC0(void)
{
PutWindowTilemap(1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
CopyWindowToVram(1, 2);
}
static void sub_819EADC(void)
{
PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
CopyWindowToVram(7, 2);
}
@@ -3569,13 +3569,13 @@ static void sub_819EAF8(void)
{
sub_819EAC0();
PutWindowTilemap(5);
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
}
static void Swap_PrintPkmnSwap(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -3585,7 +3585,7 @@ static void Swap_PrintMonSpecies(void)
u16 species;
u8 x;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
if (sFactorySwapScreen->cursorPos > 2)
{
CopyWindowToVram(1, 2);
@@ -3606,7 +3606,7 @@ static void Swap_PrintMonSpecies(void)
static void Swap_PrintOnInfoWindow(const u8 *str)
{
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
CopyWindowToVram(2, 2);
}
@@ -3614,7 +3614,7 @@ static void Swap_PrintOnInfoWindow(const u8 *str)
static void Swap_PrintMenuOptions(void)
{
PutWindowTilemap(3);
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
AddTextPrinterParameterized3(3, 1, 15, 1, gUnknown_08610922, 0, gText_Summary2);
AddTextPrinterParameterized3(3, 1, 15, 17, gUnknown_08610922, 0, gText_Swap);
AddTextPrinterParameterized3(3, 1, 15, 33, gUnknown_08610922, 0, gText_Rechoose);
@@ -3624,7 +3624,7 @@ static void Swap_PrintMenuOptions(void)
static void Swap_PrintYesNoOptions(void)
{
PutWindowTilemap(4);
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610922, 0, gText_Yes3);
AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610922, 0, gText_No3);
CopyWindowToVram(4, 3);
@@ -3638,7 +3638,7 @@ static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
static void Swap_PrintActionStrings(void)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
@@ -3652,7 +3652,7 @@ static void Swap_PrintActionStrings(void)
static void Swap_PrintActionStrings2(void)
{
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
@@ -3693,7 +3693,7 @@ static void Swap_PrintMonSpecies2(void)
LoadPalette(pal, 0xF0, 0xA);
PutWindowTilemap(7);
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
if (sFactorySwapScreen->cursorPos > 2)
{
CopyWindowToVram(7, 3);
@@ -3745,7 +3745,7 @@ static void Swap_PrintMonCategory(void)
u8 x;
u8 monId = sFactorySwapScreen->cursorPos;
- FillWindowPixelBuffer(8, 0);
+ FillWindowPixelBuffer(8, PIXEL_FILL(0));
if (monId > 2)
{
CopyWindowToVram(8, 2);
@@ -3940,7 +3940,7 @@ static void Task_SwapCantHaveSameMons(u8 taskId)
case 2:
if (sFactorySwapScreen->unk30 != TRUE)
{
- FillWindowPixelBuffer(5, 0);
+ FillWindowPixelBuffer(5, PIXEL_FILL(0));
CopyWindowToVram(5, 2);
gTasks[taskId].data[0]++;
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 0eb494db4..f2916012e 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[];
@@ -2578,7 +2579,7 @@ static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y,
struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
winId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor));
+ FillWindowPixelBuffer(winId, PIXEL_FILL(bgColor));
color[0] = bgColor;
color[1] = 1;
diff --git a/src/battle_main.c b/src/battle_main.c
index 043e75808..2b0c5980e 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -57,6 +57,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/trainers.h"
+#include "cable_club.h"
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
@@ -69,9 +70,6 @@ extern const u8 *const gBattlescriptsForRunningByItem[];
extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
-// functions
-extern void sub_80B3AF8(u8 taskId); // cable club
-
// this file's functions
static void CB2_InitBattleInternal(void);
static void CB2_PreInitMultiBattle(void);
@@ -3279,7 +3277,7 @@ void FaintClearSetData(void)
gProtectStructs[gActiveBattler].targetNotAffected = 0;
gProtectStructs[gActiveBattler].chargingTurn = 0;
gProtectStructs[gActiveBattler].fleeFlag = 0;
- gProtectStructs[gActiveBattler].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBattler].usedImprisonedMove = 0;
gProtectStructs[gActiveBattler].loveImmobility = 0;
gProtectStructs[gActiveBattler].usedDisabledMove = 0;
gProtectStructs[gActiveBattler].usedTauntedMove = 0;
diff --git a/src/battle_message.c b/src/battle_message.c
index 164108dec..6762cd416 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1357,7 +1357,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
{ // 0 Standard battle message
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1369,7 +1369,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 1 "What will (pokemon) do?"
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
.y = 1,
@@ -1381,7 +1381,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 2 "Fight/Pokemon/Bag/Run"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1393,7 +1393,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 3 Top left move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1405,7 +1405,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 4 Top right move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1417,7 +1417,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 5 Bottom left move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1429,7 +1429,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 6 Bottom right move
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1441,7 +1441,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 7 "PP"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1453,7 +1453,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 11,
},
{ // 8
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1465,7 +1465,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 9 PP remaining
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
.y = 1,
@@ -1477,7 +1477,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 11,
},
{ // 10 "type"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1489,7 +1489,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 11 "switch which?"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1501,7 +1501,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 12 "gText_BattleYesNoChoice"
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1513,7 +1513,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 13
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1525,7 +1525,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 14
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
.y = 1,
@@ -1537,7 +1537,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 2,
},
{ // 15
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1549,7 +1549,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 16
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1561,7 +1561,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 17
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1573,7 +1573,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 18
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1585,7 +1585,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 19
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1597,7 +1597,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 20
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1609,7 +1609,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 15,
},
{ // 21
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1621,7 +1621,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 22
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1633,7 +1633,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.shadowColor = 6,
},
{ // 23
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0x0),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1649,7 +1649,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
{
{ // 0
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1661,7 +1661,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 6,
},
{ // 1
- .fillValue = 0xFF,
+ .fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
.y = 1,
@@ -1673,7 +1673,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 6,
},
{ // 2
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1685,7 +1685,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 3
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1697,7 +1697,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 4
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1709,7 +1709,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 5
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1721,7 +1721,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 6
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1733,7 +1733,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 7
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1745,7 +1745,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 11,
},
{ // 8
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1757,7 +1757,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 9
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
.y = 1,
@@ -1769,7 +1769,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 11,
},
{ // 10
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1781,7 +1781,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 11
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
.y = 1,
@@ -1793,7 +1793,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 12
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1805,7 +1805,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 13
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
.y = 1,
@@ -1817,7 +1817,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 14
- .fillValue = 0x0,
+ .fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
.y = 1,
@@ -1829,7 +1829,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 2,
},
{ // 15
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1841,7 +1841,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 16
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1853,7 +1853,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 17
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1865,7 +1865,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 18
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1877,7 +1877,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 19
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1889,7 +1889,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 20
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1901,7 +1901,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 21
- .fillValue = 0xEE,
+ .fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
.y = 1,
@@ -1913,7 +1913,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.shadowColor = 15,
},
{ // 22
- .fillValue = 0x11,
+ .fillValue = PIXEL_FILL(0x1),
.fontId = 1,
.x = 0,
.y = 1,
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index a2fa4120f..34da3a25d 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -1267,7 +1267,7 @@ static u8 GetPostBattleDirectionHintTextIndex(int *hintType, u8 minDistanceForEx
{
for (x = 0; x < 32; x++)
{
- if ((map[x] & 0x3FF) == FLOOR_EXIT_METATILE)
+ if ((map[x] & METATILE_ID_MASK) == FLOOR_EXIT_METATILE)
{
x += 7 - gEventObjects[gSelectedEventObject].initialCoords.x;
y += 7 - gEventObjects[gSelectedEventObject].initialCoords.y;
@@ -1568,7 +1568,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio
{
for (x = 0; x < mapLayout->width; x++)
{
- if ((layoutMap[x] & 0x3FF) != FLOOR_EXIT_METATILE)
+ if ((layoutMap[x] & METATILE_ID_MASK) != FLOOR_EXIT_METATILE)
{
map[x] = layoutMap[x];
}
@@ -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/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 1f0672dcb..2e13ea08b 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -651,7 +651,7 @@ static void PrintItemDescription(s32 listMenuId)
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
desc = gStringVar4;
}
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0);
}
@@ -804,7 +804,7 @@ static void sub_81C5A98(u8 listMenuTaskId, u8 arg1)
static void sub_81C5AB8(u8 y, u8 arg1)
{
if (arg1 == 0xFF)
- FillWindowPixelRect(0, 0, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(0, PIXEL_FILL(0), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1);
}
@@ -911,7 +911,7 @@ static void sub_81C5D20(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
if (gPyramidBagResources->menuActionsCount == 1)
sub_81C5EAC(sub_81C6D24(0));
@@ -1048,7 +1048,7 @@ static void BagAction_UseOnField(u8 taskId)
else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
{
sub_81C61A8();
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
schedule_bg_copy_tilemap_to_vram(0);
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
}
@@ -1086,7 +1086,7 @@ static void BagAction_Toss(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C6404();
gTasks[taskId].func = sub_81C64B4;
@@ -1100,7 +1100,7 @@ static void sub_81C6350(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C6DAC(taskId, &sYesNoTossFuncions);
}
@@ -1146,7 +1146,7 @@ static void sub_81C64B4(u8 taskId)
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(3);
schedule_bg_copy_tilemap_to_vram(1);
sub_81C6350(taskId);
@@ -1154,7 +1154,7 @@ static void sub_81C64B4(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(3);
schedule_bg_copy_tilemap_to_vram(1);
DontTossItem(taskId);
@@ -1168,7 +1168,7 @@ static void TossItem(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
gTasks[taskId].func = sub_81C65CC;
}
@@ -1265,7 +1265,7 @@ static void Task_BeginItemSwap(u8 taskId)
ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1);
CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
sub_81C5A98(data[0], 1);
sub_81C704C(data[1]);
@@ -1395,7 +1395,7 @@ static void sub_81C6BD8(void)
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
for (i = 0; i < 5; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
@@ -1415,7 +1415,7 @@ static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 lette
static void sub_81C6CEC(u8 windowId)
{
- SetWindowBorderStyle(windowId, 0, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(windowId, 0, 1, 0xE);
schedule_bg_copy_tilemap_to_vram(1);
}
@@ -1430,7 +1430,7 @@ static u8 sub_81C6D24(u8 windowArrayId)
if (*windowId == 0xFF)
{
*windowId = AddWindow(&gUnknown_0861F350[windowArrayId]);
- SetWindowBorderStyle(*windowId, FALSE, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(*windowId, FALSE, 1, 0xE);
schedule_bg_copy_tilemap_to_vram(1);
}
return *windowId;
@@ -1441,7 +1441,7 @@ static void sub_81C6D6C(u8 windowArrayId)
u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
if (*windowId != 0xFF)
{
- sub_8198070(*windowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(*windowId, FALSE);
ClearWindowTilemap(*windowId);
RemoveWindow(*windowId);
schedule_bg_copy_tilemap_to_vram(1);
@@ -1456,14 +1456,15 @@ static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable)
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId))
{
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
static void sub_81C6E1C(void)
{
- sub_8197DF8(2, FALSE);
+ ClearDialogWindowAndFrameToTransparent(2, FALSE);
+ // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
ClearWindowTilemap(2);
schedule_bg_copy_tilemap_to_vram(1);
}
diff --git a/src/battle_records.c b/src/battle_records.c
index f9c40d8de..fdd915d07 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -21,8 +21,7 @@
#include "alloc.h"
#include "gpu_regs.h"
#include "constants/game_stat.h"
-
-extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s
+#include "trainer_hill.h"
// this file's functions
static void Task_CloseTrainerHillRecordsOnButton(u8 taskId);
@@ -320,8 +319,8 @@ void ShowLinkBattleRecords(void)
s32 i, x;
gRecordsWindowId = AddWindow(&sLinkBattleRecordsWindow);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults);
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
@@ -342,7 +341,7 @@ void ShowLinkBattleRecords(void)
void RemoveRecordsWindow(void)
{
- sub_819746C(gRecordsWindowId, FALSE);
+ ClearStdWindowAndFrame(gRecordsWindowId, FALSE);
RemoveWindow(gRecordsWindowId);
}
@@ -383,7 +382,7 @@ static void Task_ExitTrainerHillRecords(u8 taskId)
static void RemoveTrainerHillRecordsWindow(u8 windowId)
{
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
CopyWindowToVram(windowId, 2);
RemoveWindow(windowId);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index a53fa30f2..ac9fb3073 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -48,6 +48,7 @@
#include "battle_pyramid.h"
#include "field_specials.h"
#include "pokemon_summary_screen.h"
+#include "pokenav.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -55,9 +56,6 @@ extern const u8* const gBattleScriptsForMoveEffects[];
// functions
extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
-extern void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
-extern void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
-extern u8 sub_813B21C(void);
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
@@ -297,7 +295,7 @@ static void atkD7_setyawn(void);
static void atkD8_setdamagetohealthdifference(void);
static void atkD9_scaledamagebyhealthratio(void);
static void atkDA_tryswapabilities(void);
-static void atkDB_tryimprision(void);
+static void atkDB_tryimprison(void);
static void atkDC_trysetgrudge(void);
static void atkDD_weightdamagecalculation(void);
static void atkDE_asistattackselect(void);
@@ -549,7 +547,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkD8_setdamagetohealthdifference,
atkD9_scaledamagebyhealthratio,
atkDA_tryswapabilities,
- atkDB_tryimprision,
+ atkDB_tryimprison,
atkDC_trysetgrudge,
atkDD_weightdamagecalculation,
atkDE_asistattackselect,
@@ -9611,7 +9609,7 @@ static void atkDA_tryswapabilities(void) // skill swap
}
}
-static void atkDB_tryimprision(void)
+static void atkDB_tryimprison(void)
{
if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS))
{
@@ -9622,7 +9620,7 @@ static void atkDB_tryimprision(void)
u8 battlerId, sideAttacker;
sideAttacker = GetBattlerSide(gBattlerAttacker);
- PressurePPLoseOnUsingImprision(gBattlerAttacker);
+ PressurePPLoseOnUsingImprison(gBattlerAttacker);
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
if (sideAttacker != GetBattlerSide(battlerId))
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 7626420e9..347486a0b 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -44,6 +44,7 @@
#include "mirage_tower.h"
#include "constants/map_types.h"
#include "constants/battle_frontier.h"
+#include "field_screen_effect.h"
enum
{
@@ -62,10 +63,6 @@ struct TrainerBattleParameter
u8 ptrType;
};
-extern void ClearPoisonStepCounter(void);
-extern void sub_808BCF4(void);
-extern void sub_80AF6F0(void);
-
// this file's functions
static void DoBattlePikeWildBattle(void);
static void DoSafariBattle(void);
@@ -641,7 +638,7 @@ u8 BattleSetup_GetTerrainId(void)
return BATTLE_TERRAIN_BUILDING;
case MAP_TYPE_UNDERWATER:
return BATTLE_TERRAIN_UNDERWATER;
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
return BATTLE_TERRAIN_WATER;
return BATTLE_TERRAIN_PLAIN;
diff --git a/src/battle_tent.c b/src/battle_tent.c
index b07020822..85194417f 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -269,7 +269,7 @@ static void sub_81B9E88(void)
DoBattleFactorySwapScreen();
}
-bool8 sub_81B9E94(void)
+bool8 InSlateportBattleTent(void)
{
return gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY
&& (gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_CORRIDOR || gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_BATTLE_ROOM);
diff --git a/src/battle_tower.c b/src/battle_tower.c
index fbb77789e..46aab4bac 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -51,7 +51,7 @@ static void AwardBattleTowerRibbons(void);
static void SaveBattleTowerProgress(void);
static void sub_8163914(void);
static void nullsub_61(void);
-static void nullsub_116(void);
+static void SpriteCB_Null6(void);
static void sub_81642A0(void);
static void sub_8164828(void);
static void sub_8164B74(void);
@@ -1061,7 +1061,7 @@ static void (* const gUnknown_085DF96C[])(void) =
SaveBattleTowerProgress,
sub_8163914,
nullsub_61,
- nullsub_116,
+ SpriteCB_Null6,
sub_81642A0,
sub_8164828,
sub_8164B74,
@@ -2401,9 +2401,9 @@ static void sub_8163EE4(void)
for (i = 0; i < 6; i++)
{
- playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
- playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i];
- playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i];
+ playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
+ playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i];
+ playerRecord->speechLost[i] = gSaveBlock1Ptr->easyChatBattleLost[i];
}
for (i = 0; i < 4; i++)
@@ -2437,7 +2437,7 @@ static void nullsub_61(void)
}
-static void nullsub_116(void)
+static void SpriteCB_Null6(void)
{
}
@@ -3059,7 +3059,7 @@ static void FillEReaderTrainerWithPlayerData(void)
j = 7;
for (i = 0; i < 6; i++)
{
- ereaderTrainer->greeting[i] = gSaveBlock1Ptr->unk2BBC[i];
+ ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i];
ereaderTrainer->farewellPlayerLost[i] = j;
ereaderTrainer->farewellPlayerWon[i] = j + 6;
j++;
diff --git a/src/battle_util.c b/src/battle_util.c
index 2f583a9c7..aa88cf952 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -106,10 +106,10 @@ void PressurePPLose(u8 target, u8 attacker, u16 move)
}
}
-void PressurePPLoseOnUsingImprision(u8 attacker)
+void PressurePPLoseOnUsingImprison(u8 attacker)
{
int i, j;
- int imprisionPos = 4;
+ int imprisonPos = 4;
u8 atkSide = GetBattlerSide(attacker);
for (i = 0; i < gBattlersCount; i++)
@@ -123,19 +123,19 @@ void PressurePPLoseOnUsingImprision(u8 attacker)
}
if (j != MAX_MON_MOVES)
{
- imprisionPos = j;
+ imprisonPos = j;
if (gBattleMons[attacker].pp[j] != 0)
gBattleMons[attacker].pp[j]--;
}
}
}
- if (imprisionPos != 4
+ if (imprisonPos != 4
&& !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisionPos]))
+ && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos]))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]);
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -224,7 +224,7 @@ bool8 WasUnableToUseMove(u8 battler)
{
if (gProtectStructs[battler].prlzImmobility
|| gProtectStructs[battler].targetNotAffected
- || gProtectStructs[battler].usedImprisionedMove
+ || gProtectStructs[battler].usedImprisonedMove
|| gProtectStructs[battler].loveImmobility
|| gProtectStructs[battler].usedDisabledMove
|| gProtectStructs[battler].usedTauntedMove
@@ -365,12 +365,12 @@ u8 TrySetCantSelectMoveBattleScript(void)
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMoveInPalace;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMoveInPalace;
gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
}
else
{
- gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMove;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMove;
limitations++;
}
}
@@ -438,7 +438,7 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
unusableMoves |= gBitTable[i];
if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
- if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON)
unusableMoves |= gBitTable[i];
if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
@@ -469,7 +469,7 @@ bool8 AreAllMovesUnusable(void)
u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
s32 i;
- u8 imprisionedMoves = 0;
+ u8 imprisonedMoves = 0;
u8 battlerSide = GetBattlerSide(battlerId);
for (i = 0; i < gBattlersCount; i++)
@@ -483,11 +483,11 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
break;
}
if (j < MAX_MON_MOVES)
- imprisionedMoves++;
+ imprisonedMoves++;
}
}
- return imprisionedMoves;
+ return imprisonedMoves;
}
enum
@@ -1466,7 +1466,7 @@ u8 AtkCanceller_UnableToUseMove(void)
case CANCELLER_IMPRISONED: // imprisoned
if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove))
{
- gProtectStructs[gBattlerAttacker].usedImprisionedMove = 1;
+ gProtectStructs[gBattlerAttacker].usedImprisonedMove = 1;
CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
@@ -1526,7 +1526,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else
{
- BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack);
+ BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gProtectStructs[gBattlerAttacker].loveImmobility = 1;
CancelMultiTurnMoves(gBattlerAttacker);
diff --git a/src/berry.c b/src/berry.c
index bd596db7f..cbac06a3d 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -11,11 +11,9 @@
#include "text.h"
#include "constants/event_object_movement_constants.h"
#include "constants/items.h"
+#include "event_object_movement.h"
+
-extern u8 EventObjectGetBerryTreeId(u8 eventObjectId);
-extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
-extern void CB2_ChooseBerry(void);
-extern bool8 IsBerryTreeSparkling(u8, u8, u8);
extern const u8 BerryTreeScript[];
diff --git a/src/berry_blender.c b/src/berry_blender.c
index c85d0e827..450bcae42 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -34,6 +34,8 @@
#include "battle_records.h"
#include "graphics.h"
#include "new_game.h"
+#include "save.h"
+#include "link.h"
#define BLENDER_SCORE_BEST 0
#define BLENDER_SCORE_GOOD 1
@@ -140,16 +142,6 @@ extern const u8 gText_Space[];
extern const u8 gText_BlenderMaxSpeedRecord[];
extern const u8 gText_234Players[];
-extern void sub_800A418(void);
-extern u8 sub_800A9D8(void);
-extern void sub_81AABF0(void (*callback)(void));
-extern void sub_800B4C0(void);
-extern void ClearLinkCallback(void);
-extern void sub_8009F8C(void);
-extern void sub_8153430(void);
-extern bool8 sub_8153474(void);
-extern void sub_80EECEC(void);
-
// this file's functions
static void BerryBlender_SetBackgroundsPos(void);
static void sub_8080EA4(u8 taskId);
@@ -945,7 +937,7 @@ static void InitBerryBlenderWindows(void)
DeactivateAllTextPrinters();
for (i = 0; i < 5; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
sub_81978B0(0xE0);
@@ -1251,7 +1243,7 @@ static void sub_8080018(void)
case 10:
if (++sBerryBlenderData->framesToWait > 20)
{
- sub_8197DF8(4, TRUE);
+ ClearDialogWindowAndFrameToTransparent(4, TRUE);
if (GetBlockReceivedStatus() == sub_800A9D8())
{
for (i = 0; i < GetLinkPlayerCount(); i++)
@@ -2600,7 +2592,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
}
break;
case 2:
- sub_8153430();
+ FullSaveGame();
sBerryBlenderData->field_1A0++;
sBerryBlenderData->framesToWait = 0;
break;
@@ -2614,7 +2606,7 @@ static bool8 LinkPlayAgainHandleSaving(void)
case 4:
if (IsLinkTaskFinished())
{
- if (sub_8153474())
+ if (CheckSaveFile())
{
sBerryBlenderData->field_1A0 = 5;
}
@@ -3325,7 +3317,7 @@ static bool8 Blender_PrintBlendingResults(void)
sBerryBlenderData->mainState++;
break;
case 5:
- sub_8198070(5, 1);
+ ClearStdWindowAndFrameToTransparent(5, 1);
for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
{
@@ -3466,7 +3458,7 @@ static bool8 Blender_PrintBlendingRanking(void)
}
break;
case 3:
- SetWindowBorderStyle(5, 0, 1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(5, 0, 1, 0xD);
xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8);
Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0);
@@ -3537,8 +3529,8 @@ void ShowBerryBlenderRecordWindow(void)
winTemplate = sBlenderRecordWindowTemplate;
gRecordsWindowId = AddWindow(&winTemplate);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, 0);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, 0);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL);
@@ -3647,7 +3639,7 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3
if (caseId != 3)
{
- FillWindowPixelBuffer(windowId, txtColor[0] | (txtColor[0] << 4));
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(txtColor[0]));
}
AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, 1, txtColor, speed, string);
@@ -3658,7 +3650,7 @@ static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed)
switch (*textState)
{
case 0:
- sub_8197B1C(4, FALSE, 0x14, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(4, FALSE, 0x14, 0xF);
Blender_AddTextPrinter(4, string, 0, 1, textSpeed, 0);
PutWindowTilemap(4);
CopyWindowToVram(4, 3);
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 3631c083a..37be569f8 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -226,9 +226,9 @@ static void berry_fix_gpu_set(void)
DmaCopy32(3, sUnknown_08618138, BG_PLTT + 0x1E0, 0x20);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP);
- FillWindowPixelBuffer(2, 0);
- FillWindowPixelBuffer(3, 0);
- FillWindowPixelBuffer(0, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
+ FillWindowPixelBuffer(0, PIXEL_FILL(0xA));
width = GetStringWidth(0, sUnknown_08617E9B, 0);
left = (0x78 - width) / 2;
@@ -273,7 +273,7 @@ static int berry_fix_text_update(int checkval)
static void berry_fix_text_print(int scene)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32);
- FillWindowPixelBuffer(1, 0xAA);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(1, 1, 0, 0, sUnknown_08618158, -1, gUnknown_08618160[scene]);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 6e968fc0a..a7cf4daf2 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -381,7 +381,7 @@ static void PrintTextInBerryTagScreen(u8 windowId, const u8 *text, u8 x, u8 y, s
static void AddBerryTagTextToBg0(void)
{
memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2]));
- FillWindowPixelBuffer(WIN_BERRY_TAG, 0xFF);
+ FillWindowPixelBuffer(WIN_BERRY_TAG, PIXEL_FILL(15));
PrintTextInBerryTagScreen(WIN_BERRY_TAG, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1);
PutWindowTilemap(WIN_BERRY_TAG);
schedule_bg_copy_tilemap_to_vram(0);
@@ -598,7 +598,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
switch (data[0])
{
case 0x30:
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
break;
case 0x40:
PrintBerryNumberAndName();
@@ -608,7 +608,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
CreateBerrySprite();
break;
case 0x60:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
break;
case 0x70:
PrintBerrySize();
@@ -620,7 +620,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
SetFlavorCirclesVisiblity();
break;
case 0xA0:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 0xB0:
PrintBerryDescription1();
@@ -635,7 +635,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
switch (data[0])
{
case 0x30:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 0x40:
PrintBerryDescription2();
@@ -647,7 +647,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
SetFlavorCirclesVisiblity();
break;
case 0x70:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
break;
case 0x80:
PrintBerryFirmness();
@@ -660,7 +660,7 @@ static void Task_DisplayAnotherBerry(u8 taskId)
CreateBerrySprite();
break;
case 0xB0:
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
break;
case 0xC0:
PrintBerryNumberAndName();
diff --git a/src/bg.c b/src/bg.c
index f73f5998d..1826f9a28 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -1056,7 +1056,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0);
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
@@ -1067,7 +1067,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt
for (x16 = x; x16 < (x + width); x16++)
{
((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum;
- firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF);
+ firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK);
}
}
break;
diff --git a/src/bike.c b/src/bike.c
index 1e91baab0..530742bdf 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -14,12 +14,6 @@
extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
-extern u8 sub_808B980(u8 direction);
-extern u8 sub_808B9BC(u8 direction);
-extern u8 sub_808B9A4(u8 direction);
-extern u8 sub_808C1B4(u8 direction);
-extern u8 sub_808B9D4(u8 direction);
-
// this file's functions
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
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/cable_club.c b/src/cable_club.c
index 303b0d016..b80e76e99 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -92,7 +92,9 @@ static void sub_80B23B0(u16 windowId, u32 value)
static void sub_80B241C(u16 windowId)
{
- sub_819746C(windowId, FALSE);
+ // Following this call with a copy-to-vram with mode 3 is identical to
+ // calling ClearStdWindowAndFrame(windowId, TRUE).
+ ClearStdWindowAndFrame(windowId, FALSE);
CopyWindowToVram(windowId, 3);
}
@@ -282,7 +284,7 @@ static void sub_80B2804(u8 taskId)
if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
{
- if (sub_800AA48() != GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() != GetLinkPlayerCount_2())
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
gTasks[taskId].func = sub_80B270C;
@@ -295,7 +297,7 @@ static void sub_80B2804(u8 taskId)
else if (gMain.heldKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B28A8;
}
}
@@ -310,7 +312,7 @@ static void sub_80B28A8(u8 taskId)
|| sub_80B2D6C(taskId) == TRUE)
return;
- if (GetLinkPlayerCount_2() != sub_800AA48())
+ if (GetLinkPlayerCount_2() != GetSavedPlayerCount())
{
gTasks[taskId].func = sub_80B2D2C;
}
@@ -352,7 +354,7 @@ static void sub_80B2918(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -399,7 +401,7 @@ static void sub_80B2A08(u8 taskId)
else
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03005DB4 = GetMultiplayerId();
+ gLocalLinkPlayerId = GetMultiplayerId();
sub_800AA04(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
@@ -764,9 +766,9 @@ static void sub_80B3194(u8 taskId)
static void sub_80B31E8(u8 taskId)
{
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gTasks[taskId].func = sub_80B3220;
}
}
@@ -972,7 +974,7 @@ void sub_80B360C(void)
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2)
{
- UpdatePlayerLinkBattleRecords(gUnknown_03005DB4 ^ 1);
+ UpdatePlayerLinkBattleRecords(gLocalLinkPlayerId ^ 1);
if (gWirelessCommType)
{
switch (gBattleOutcome)
@@ -993,13 +995,13 @@ void sub_80B360C(void)
}
else
{
- gMain.savedCallback = c2_8056854;
+ gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer;
}
SetMainCallback2(sub_80A0514);
}
-void sub_80B36EC(void)
+void CleanupLinkRoomState(void)
{
if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5 || gSpecialVar_0x8004 == 9)
{
@@ -1009,9 +1011,9 @@ void sub_80B36EC(void)
SetWarpDestinationToDynamicWarp(0x7F);
}
-void sub_80B371C(void)
+void ExitLinkRoom(void)
{
- sub_80872B0();
+ QueueExitLinkRoomKey();
}
static void sub_80B3728(u8 taskId)
@@ -1028,7 +1030,7 @@ static void sub_80B3728(u8 taskId)
if (IsFieldMessageBoxHidden())
{
sub_8087288();
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
task->data[0] = 2;
}
break;
@@ -1130,7 +1132,8 @@ static void sub_80B3894(u8 taskId)
}
}
-void sub_80B3924(void)
+// Note: VAR_0x8005 is set to the ID of the trade seat.
+void PlayerEnteredTradeSeat(void)
{
if (gWirelessCommType != 0)
{
@@ -1152,7 +1155,8 @@ void nullsub_37(void)
}
-void sub_80B3968(void)
+// Note: VAR_0x8005 is set to the ID of the player spot.
+void ColosseumPlayerSpotTriggered(void)
{
gLinkType = 0x2211;
@@ -1166,6 +1170,7 @@ void sub_80B3968(void)
}
}
+// This function is never called.
static void sub_80B39A4(void)
{
u8 taskId = CreateTask(sub_80B3728, 80);
@@ -1177,14 +1182,16 @@ void sp02A_crash_sound(void)
ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-bool32 sub_80B39D4(u8 linkPlayerIndex)
+// Returns FALSE if the player has no stars. Returns TRUE otherwise, and puts the name of the
+// color into gStringVar2.
+bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex)
{
u32 trainerCardColorIndex;
gSpecialVar_0x8006 = linkPlayerIndex;
StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name);
- trainerCardColorIndex = sub_80C4904(linkPlayerIndex);
+ trainerCardColorIndex = GetTrainerCardStars(linkPlayerIndex);
if (trainerCardColorIndex == 0)
return FALSE;
@@ -1263,13 +1270,13 @@ void sub_80B3AF8(u8 taskId)
}
break;
case 2:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++data[1] > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
data[0]++;
}
}
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 5ec90e10c..c1d6930c7 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -79,7 +79,7 @@ void CB2_InitClearSaveDataScreen(void)
static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
{
- SetWindowBorderStyle(0, 0, 2, 14);
+ DrawStdFrameWithCustomTileAndPalette(0, 0, 2, 14);
AddTextPrinterParameterized(0, 1, gText_ClearAllSaveData, 0, 1, 0, 0);
CreateYesNoMenu(sClearSaveYesNo, 2, 14, 1);
gTasks[taskId].func = Task_ClearSaveDataScreenYesNoChoice;
@@ -90,7 +90,7 @@ static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case 0:
- FillWindowPixelBuffer(0, 17);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_ClearingData, 0, 1, 0, 0);
gTasks[taskId].func = Task_ClearSaveData;
break;
@@ -203,7 +203,7 @@ static void InitClearSaveDataScreenWindows(void)
{
InitWindows(sClearSaveTextWindow);
DeactivateAllTextPrinters();
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
LoadWindowGfx(0, 0, 2, 224);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
}
diff --git a/src/coins.c b/src/coins.c
index 967eb92ac..b838c303e 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -27,15 +27,15 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
struct WindowTemplate template;
SetWindowTemplateFields(&template, 0, x, y, 8, 2, 0xF, 0x141);
sCoinsWindowId = AddWindow(&template);
- FillWindowPixelBuffer(sCoinsWindowId, 0);
+ FillWindowPixelBuffer(sCoinsWindowId, PIXEL_FILL(0));
PutWindowTilemap(sCoinsWindowId);
- SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x214, 0xE);
PrintCoinsString(coinAmount);
}
void HideCoinsWindow(void)
{
- sub_819746C(sCoinsWindowId, TRUE);
+ ClearStdWindowAndFrame(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
diff --git a/src/contest.c b/src/contest.c
index 7be4aa23b..114a1fb69 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -45,8 +45,6 @@
#include "constants/rgb.h"
#include "contest_ai.h"
-extern void sub_80FC9F8(u8); // contest_link_80FC4F4.c
-
// This file's functions.
static void sub_80D782C(void);
static void sub_80D7C7C(u8 taskId);
@@ -819,7 +817,7 @@ static void sub_80D8490(u8 taskId)
}
r5 = StringCopy(r5, gMoveNames[move]);
- FillWindowPixelBuffer(i + 5, 0);
+ FillWindowPixelBuffer(i + 5, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7);
}
@@ -941,7 +939,7 @@ static void sub_80D895C(u8 taskId)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(5 + i, 0);
+ FillWindowPixelBuffer(5 + i, PIXEL_FILL(0));
PutWindowTilemap(5 + i);
CopyWindowToVram(5 + i, 2);
}
@@ -2258,7 +2256,7 @@ static void sub_80DAEA4(void)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(gUnknown_02039F26[i], 0);
+ FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0));
sub_80DAF04(i);
sub_80DAF88(i);
}
@@ -2478,7 +2476,7 @@ static void prints_contest_move_description(u16 a)
ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
- FillWindowPixelBuffer(10, 0);
+ FillWindowPixelBuffer(10, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
Contest_PrintTextToBg0WindowStd(9, gText_Slash);
}
@@ -2621,7 +2619,7 @@ static void sub_80DB884(void)
static void sub_80DB89C(void)
{
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
CopyWindowToVram(4, 2);
Contest_SetBgCopyFlags(0);
}
@@ -3456,7 +3454,7 @@ static void sub_80DCD48(void)
break;
default:
for (i = 0; i < 4; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
for (i = 0; i < 4; i++)
{
value = sContestantStatus[i].unk4;
@@ -5038,7 +5036,7 @@ static void sub_80DF750(void)
return;
for (i = 0; i < 4; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
if (gHeap[0x1A000] == 2)
{
diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c
index 485065d71..a4b88c074 100644
--- a/src/contest_link_80F57C4.c
+++ b/src/contest_link_80F57C4.c
@@ -39,6 +39,7 @@
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "contest.h"
struct ContestLinkUnk0
{
@@ -99,8 +100,6 @@ extern const struct SpriteSheet gUnknown_0858D810[];
extern const struct SpritePalette gUnknown_0858D850;
extern const struct SpriteTemplate gSpriteTemplate_858D860;
-extern void sub_81D9DE4(u8);
-
static void sub_80F6A9C(void);
static void sub_80F71C8(void);
u8 sub_80F7310(u8, u8);
@@ -372,12 +371,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:
@@ -935,7 +934,7 @@ static void sub_80F6AE8(void)
// windowTemplate.width = 30;
// windowTemplate.height = 2;
// windowId = AddWindow(&windowTemplate);
-// FillWindowPixelBuffer(windowId, 0x11);
+// FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
// origWidth = GetStringWidth(1, text, 0) + 9;
// strWidth = origWidth;
// if (strWidth < 0)
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 2f0c97764..931deb01b 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -279,7 +279,7 @@ static void InitContestPaintingWindow(void)
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC);
DeactivateAllTextPrinters();
- FillWindowPixelBuffer(gContestPaintingWindowId, 0);
+ FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0));
PutWindowTilemap(gContestPaintingWindowId);
CopyWindowToVram(gContestPaintingWindowId, 3);
ShowBg(1);
diff --git a/src/credits.c b/src/credits.c
index aee5332f5..4483e3160 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1592,7 +1592,7 @@ static void sub_8175DA0(u8 taskIdB)
case 5:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
CopyWindowToVram(0, 2);
gTasks[taskIdB].data[TDB_0] = 2;
}
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/daycare.c b/src/daycare.c
index b75fab292..885ac31a1 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1259,7 +1259,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
break;
}
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
- sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -1268,7 +1268,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
gSpecialVar_Result = 2;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
- sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -1283,7 +1283,7 @@ void ShowDaycareLevelMenu(void)
u8 daycareMenuTaskId;
windowId = AddWindow(&sDaycareLevelMenuWindowTemplate);
- NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
+ DrawStdWindowFrame(windowId, FALSE);
menuTemplate = sDaycareListMenuLevelTemplate;
menuTemplate.windowId = windowId;
diff --git a/src/decoration.c b/src/decoration.c
index 2ac49b98c..0712b5d32 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -463,14 +463,14 @@ u8 sub_81269D4(u8 idx)
{
*winidx = AddWindow(&gUnknown_085A6B90[idx]);
}
- SetWindowBorderStyle(*winidx, 0, 0x214, 0xe);
+ DrawStdFrameWithCustomTileAndPalette(*winidx, 0, 0x214, 0xe);
schedule_bg_copy_tilemap_to_vram(0);
return *winidx;
}
void sub_8126A58(u8 idx)
{
- sub_8198070(sDecorMenuWindowIndices[idx], FALSE);
+ ClearStdWindowAndFrameToTransparent(sDecorMenuWindowIndices[idx], FALSE);
ClearWindowTilemap(sDecorMenuWindowIndices[idx]);
RemoveWindow(sDecorMenuWindowIndices[idx]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -543,7 +543,7 @@ void sub_8126B80(u8 taskId)
void sub_8126C08(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3);
}
@@ -572,7 +572,7 @@ void SecretBasePC_PutAway(u8 taskId)
else
{
sub_8126A58(0);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
FadeScreen(1, 0);
gTasks[taskId].data[2] = 0;
gTasks[taskId].func = sub_8129ABC;
@@ -617,7 +617,7 @@ void sub_8126DA4(u8 taskId)
void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
{
LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8126A58(0);
sub_8126DFC(taskId);
}
@@ -634,7 +634,7 @@ void sub_8126DFC(u8 taskId)
void sub_8126E44(u8 taskId)
{
- FillWindowPixelBuffer(sDecorMenuWindowIndices[1], 0x11);
+ FillWindowPixelBuffer(sDecorMenuWindowIndices[1], PIXEL_FILL(1));
sub_8126E8C(taskId);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory);
gTasks[taskId].func = sub_8127088;
@@ -751,7 +751,7 @@ void sub_81270E8(u8 taskId)
void sub_8127180(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8126DFC(taskId);
}
@@ -771,7 +771,7 @@ void sub_81271CC(u8 taskId)
{
sub_8126A58(1);
sub_8126A88();
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
sub_8126C08();
gTasks[taskId].func = sub_8126B80;
}
@@ -779,7 +779,7 @@ void sub_81271CC(u8 taskId)
void sub_8127208(u8 taskId)
{
LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gTasks[taskId].data[11] = 2;
sCurDecorationCategory = DECORCAT_DESK;
sub_8126DFC(taskId);
@@ -968,7 +968,7 @@ void sub_8127744(u32 a0)
const u8 *txt;
winidx = sDecorMenuWindowIndices[3];
- FillWindowPixelBuffer(winidx, 0x11);
+ FillWindowPixelBuffer(winidx, PIXEL_FILL(1));
if (a0 >= sCurDecorCatCount)
{
txt = gText_GoBackPrevMenu;
@@ -1095,7 +1095,7 @@ void sub_8127A14(u8 taskId)
void sub_8127A30(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gTasks[taskId].func = sub_8127A14;
}
@@ -1103,7 +1103,7 @@ void sub_8127A5C(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_81269D4(1);
sub_8127620(taskId);
}
@@ -1158,7 +1158,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
u16 i;
u16 j;
u16 behavior;
- u16 flags;
+ u16 impassableFlag;
u16 v0;
u16 v1;
s16 decLeft;
@@ -1173,11 +1173,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
{
- flags = 0xc00;
+ impassableFlag = METATILE_COLLISION_MASK;
}
else
{
- flags = 0x000;
+ impassableFlag = 0x000;
}
if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
{
@@ -1190,11 +1190,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j);
if (v1 != 0xFFFF)
{
- MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1);
+ MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag | v1);
}
else
{
- MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags);
+ MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag);
}
}
}
@@ -1254,7 +1254,7 @@ void sub_8127E18(void)
break;
}
}
- VarSet(VAR_0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+ VarSet(UNKNOWN_VAR_OFFSET_3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId;
gSpecialVar_0x8006 = sCurDecorMapX;
gSpecialVar_0x8007 = sCurDecorMapY;
@@ -1502,7 +1502,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!sub_81284F4(behaviorAt, decoration))
{
return FALSE;
@@ -1527,7 +1527,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
{
return FALSE;
@@ -1547,7 +1547,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].data[0] + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
{
return FALSE;
@@ -1628,13 +1628,13 @@ void sub_8128950(u8 taskId)
void sub_81289D0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72C4);
}
void sub_81289F0(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8128AAC(taskId);
if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT)
{
@@ -1693,13 +1693,13 @@ void sub_8128AAC(u8 taskId)
void sub_8128B80(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A72CC);
}
void sub_8128BA0(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_8128BBC(taskId);
}
@@ -1887,7 +1887,7 @@ void sub_8128E18(u8 taskId)
void sub_8128FD8(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gTasks[taskId].data[10] = 0;
gTasks[taskId].func = sub_8128E18;
@@ -2251,7 +2251,7 @@ void sub_81298EC(u8 taskId)
if (!gPaletteFade.active) {
DrawWholeMapView();
ScriptContext1_SetupScript(EventScript_275D2E);
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gTasks[taskId].data[2] = 2;
}
break;
@@ -2343,7 +2343,7 @@ void sub_8129ABC(u8 taskId)
void sub_8129B34(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
@@ -2588,7 +2588,7 @@ void sub_812A0E8(u8 taskId)
void sub_812A1A0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7348);
}
@@ -2601,13 +2601,13 @@ void sub_812A1C0(u8 taskId)
void sub_812A1F0(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A7350);
}
void sub_812A210(u8 taskId)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
sub_812A22C(taskId);
}
@@ -2671,7 +2671,7 @@ void sub_812A334(void)
u8 taskId;
pal_fill_black();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
sub_8126ABC();
taskId = CreateTask(sub_812A2C4, 8);
gTasks[taskId].data[2] = 0;
@@ -2725,7 +2725,7 @@ void sub_812A3D4(u8 taskId)
void sub_812A458(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_085A741C);
}
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index cad5ef9c2..ee310af04 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -159,7 +159,7 @@ static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c)
}
}
-void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused)
+void ReceiveEasyChatPairsData(struct EasyChatPair *a, size_t size, u8 unused)
{
u16 i, j, r3, players;
struct EasyChatPair *buffer1, *buffer2, *src, *dst, *foo_of_buffer2;
@@ -176,7 +176,7 @@ void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused)
{
players = GetLinkPlayerCount();
for (i = 0; i < players; i++)
- memcpy(&(buffer1[i * 5]), (u8 *)a + i * b, 40);
+ memcpy(&(buffer1[i * 5]), (u8 *)a + i * size, 40);
src = buffer1;
dst = buffer2;
r3 = 0;
diff --git a/src/diploma.c b/src/diploma.c
index b3d5a48fa..2113b09ed 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -13,8 +13,7 @@
#include "text.h"
#include "overworld.h"
#include "menu.h"
-
-extern bool16 sub_80C0944(void);
+#include "pokedex.h"
extern const u8 gText_DexNational[];
extern const u8 gText_DexHoenn[];
@@ -197,7 +196,7 @@ static void InitDiplomaWindow(void)
InitWindows(sDiplomaWinTemplates);
DeactivateAllTextPrinters();
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 5c55cd2ca..b03058eb9 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -1,12 +1,15 @@
-
-// 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"
@@ -16,111 +19,38 @@
#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
+#define EZCHAT_TASK_TYPE 1
#define EZCHAT_TASK_WORDS 2
#define EZCHAT_TASK_MAINCALLBACK 4
#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];
-};
-
-struct Unk203A11C
-{
- u16 unk0;
- u16 windowId;
- u16 unk4;
- u8 unk6;
- u8 unk7;
- s8 unk8;
- u8 filler9[0x1];
- u8 unkA;
- u8 unkB[0xC1];
- u8 unkCC[0x20C];
- int unk2D8;
- int unk2DC;
- int unk2E0;
- int unk2E4;
- int unk2E8;
- int unk2EC;
- int unk2F0;
- int unk2F4;
- int unk2F8;
- int unk2FC;
- u16 unk300[BG_SCREEN_SIZE / 2];
- u16 unkB00[BG_SCREEN_SIZE / 2];
-};
-
-struct Unk08597C30
-{
- u8 unk0_0:5;
- u8 unk0_5:3;
- u8 unk1;
- u8 unk2;
- u8 unk3;
-};
-
-EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL;
-EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0;
-EWRAM_DATA void *gUnknown_0203A120 = 0;
+static EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL;
+static EWRAM_DATA struct Unk203A11C *sUnknown_0203A11C = NULL;
+static EWRAM_DATA struct Unk203A120 *sUnknown_0203A120 = NULL;
static void sub_811A2C0(u8);
-static void sub_811A278(void);
+static void MainCallback_EasyChatScreen(void);
static bool8 sub_811A428(u8);
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);
@@ -136,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 u8 sub_811BCC8(u8);
+static u16 sub_811B1B4(void);
+static u8 GetEasyChatScreenFrameId(void);
+static u8 GetEachChatScreenTemplateId(u8);
static void sub_811BDF0(u8 *);
-void sub_811BF78(void);
+static void sub_811BF78(void);
static bool8 sub_811BF8C(void);
static bool8 sub_811BFA4(void);
static 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_811F28C(void);
+static void sub_811F2B8(void);
+static u8 sub_811F3AC(void);
+static int FooterHasFourOptions(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);
@@ -168,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);
@@ -197,17 +127,18 @@ static void sub_811CF04(void);
static void sub_811D60C(void);
static void sub_811D424(u16 *);
static void sub_811D230(void);
-void sub_811E948(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);
-void sub_811DE90(void);
-void sub_811DEC4(void);
-void sub_811DE5C(u8, u8, u8, u8);
-void sub_811E5D4(void);
-void sub_811E720(void);
-void sub_811E828(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);
@@ -237,88 +168,930 @@ static bool8 sub_811CD94(void);
static bool8 sub_811CDD4(void);
static bool8 sub_811CE14(void);
static bool8 sub_811CE54(void);
-void sub_811DF60(u8, u8);
-int sub_811E920(int);
-void sub_811DF90(void);
+static void sub_811DF60(u8, u8);
+static int GetFooterOptionXOffset(int);
+static void sub_811DF90(void);
static void sub_811D104(u8);
static void sub_811D214(u8);
-void sub_811DFB0(void);
+static void sub_811DFB0(void);
static void sub_811D6D4(void);
static void sub_811D9CC(int);
-void sub_811E3AC(void);
-bool8 sub_811E418(void);
-void sub_811DFC8(void);
-void sub_811E6E0(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);
-void sub_811E64C(void);
-void sub_811E050(void);
-void sub_811E4AC(void);
-void sub_811E6B0(void);
-void sub_811E55C(void);
-bool8 sub_811E4D0(void);
-bool8 sub_811E5B8(void);
-void sub_811E578(void);
-void sub_811E088(void);
-void sub_811DDAC(s16, u8);
-bool8 sub_811DE10(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);
-void sub_811E288(void);
-void sub_811E794(void);
-void sub_811E380(void);
-void sub_811E7F8(void);
-void sub_811E30C(void);
+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);
-int sub_811DE48(void);
+static int sub_811DE48(void);
static void sub_811D7EC(void);
static void sub_811D830(void);
-void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8);
-void sub_811DD84(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);
-const u8 *sub_811F424(u8);
+static const u8 *GetEasyChatWordGroupName(u8);
static void sub_811D864(u8, u8);
static void sub_811D950(u8, u8);
-void sub_811DADC(u8);
-u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
-
-extern const struct {
+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 DoQuizAnswerEasyChatScreen(void);
+static void DoQuizQuestionEasyChatScreen(void);
+static void DoQuizSetAnswerEasyChatScreen(void);
+static void DoQuizSetQuestionEasyChatScreen(void);
+
+struct Unk8597530
+{
u16 word;
MainCallback callback;
-} gUnknown_08597530[4];
-
-extern const struct EasyChatScreenTemplate gEasyChatScreenTemplates[21];
-extern const u8 gUnknown_08597748[][7];
-extern const u16 gUnknown_08597764[];
-extern const u16 gUnknown_0859776C[][2];
-extern const struct BgTemplate gUnknown_08597C54[4];
-extern const struct WindowTemplate gUnknown_08597C64[];
-extern const u32 gUnknown_08597B54[];
-extern const struct Unk08597C30 gUnknown_08597C30[];
-extern const u16 gUnknown_08597B14[];
-extern const u16 gUnknown_08597B34[];
-extern const u16 gUnknown_08597C1C[];
-extern const u16 gUnknown_08597C24[];
-extern const struct WindowTemplate gUnknown_08597C84;
-extern const u8 gUnknown_08597C8C[4];
-extern const u8 *const gUnknown_08597C90[4];
-
-void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
+};
+
+static const struct Unk8597530 sUnknown_08597530[] = {
+ {
+ .word = 26,
+ .callback = DoQuizAnswerEasyChatScreen,
+ },
+ {
+ .word = 25,
+ .callback = DoQuizQuestionEasyChatScreen,
+ },
+ {
+ .word = 28,
+ .callback = DoQuizSetAnswerEasyChatScreen,
+ },
+ {
+ .word = 27,
+ .callback = DoQuizSetQuestionEasyChatScreen,
+ },
+};
+
+static const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = {
+ {
+ .type = EASY_CHAT_TYPE_PROFILE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Profile,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeYourProfile,
+ .confirmText1 = gText_YourProfile,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_START,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_AtTheBattlesStart,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_YourFeelingAtTheBattlesStart,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_WON,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_UponWinningABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouWin,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_LOST,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_UponLosingABattle,
+ .instructionsText1 = gText_CombineSixWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage,
+ .confirmText1 = gText_WhatYouSayIfYouLose,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_MAIL,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 2,
+ .fourFooterOptions = FALSE,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeAMessage2,
+ .confirmText1 = gText_TheMailMessage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_INTERVIEW,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 5,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_CombineFourWordsOrPhrases,
+ .instructionsText2 = gText_LetsReplyToTheInterview,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BARD_SONG,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_FAN_CLUB,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_TRENDY_PHRASE,
+ .numColumns = 2,
+ .numRows = 1,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_WhatsHipAndHappening,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases,
+ .instructionsText2 = gText_AndMakeATrendySaying,
+ .confirmText1 = gText_TheTrendySaying,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_QUESTION,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 7,
+ .fourFooterOptions = TRUE,
+ .titleText = NULL,
+ .instructionsText1 = gText_AfterYouHaveReadTheQuiz,
+ .instructionsText2 = gText_QuestionPressTheAButton,
+ .confirmText1 = NULL,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_ANSWER,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_OutOfTheListedChoices,
+ .instructionsText2 = gText_SelectTheAnswerToTheQuiz,
+ .confirmText1 = gText_TheAnswerColon,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
+ .numColumns = 2,
+ .numRows = 5,
+ .frameId = 8,
+ .fourFooterOptions = TRUE,
+ .titleText = NULL,
+ .instructionsText1 = gText_CombineNineWordsOrPhrases,
+ .instructionsText2 = gText_AndCreateAQuiz,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 6,
+ .fourFooterOptions = TRUE,
+ .titleText = gText_TheQuizAnswerIs,
+ .instructionsText1 = gText_PickAWordOrPhraseAnd,
+ .instructionsText2 = gText_SetTheQuizAnswer,
+ .confirmText1 = gText_IsThisQuizOK,
+ .confirmText2 = NULL,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BARD_SONG,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_TheBardsSong,
+ .instructionsText1 = gText_ChangeJustOneWordOrPhrase,
+ .instructionsText2 = gText_AndImproveTheBardsSong,
+ .confirmText1 = gText_TheBardsSong2,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_APPRENTICE,
+ .numColumns = 2,
+ .numRows = 3,
+ .frameId = 1,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_ApprenticesPhrase,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_ApprenticePhrase,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_GOOD_SAYING,
+ .numColumns = 2,
+ .numRows = 1,
+ .frameId = 3,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_GoodSaying,
+ .instructionsText1 = gText_CombineTwoWordsOrPhrases2,
+ .instructionsText2 = gText_ToTeachHerAGoodSaying,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_GABBY_AND_TY,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_CONTEST_INTERVIEW,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_Interview,
+ .instructionsText1 = gText_FindWordsThatDescribeYour,
+ .instructionsText2 = gText_FeelingsRightNow,
+ .confirmText1 = gText_TheAnswer,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_FAN_QUESTION,
+ .numColumns = 1,
+ .numRows = 1,
+ .frameId = 4,
+ .fourFooterOptions = FALSE,
+ .titleText = gText_FansQuestion,
+ .instructionsText1 = gText_FindWordsWhichFit,
+ .instructionsText2 = gText_TheTrainersImage,
+ .confirmText1 = gText_TheImage,
+ .confirmText2 = gText_IsAsShownOkay,
+ },
+ {
+ .type = EASY_CHAT_TYPE_QUESTIONNAIRE,
+ .numColumns = 2,
+ .numRows = 2,
+ .frameId = 0,
+ .fourFooterOptions = FALSE,
+ .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 sEasyChatTriangleCursorPalette[] = INCBIN_U16("graphics/easy_chat/triangle_cursor.gbapal");
+static const u32 sEasyChatTriangleCursorGfx[] = INCBIN_U32("graphics/easy_chat/triangle_cursor.4bpp");
+static const u32 sEasyChatScrollIndicatorGfx[] = INCBIN_U32("graphics/easy_chat/scroll_indicator.4bpp");
+static const u32 sEasyChatStartSelectButtonsGfx[] = INCBIN_U32("graphics/easy_chat/start_select_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 EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = {
+ {
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 3,
+ .width = 24,
+ .height = 6,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 5,
+ .width = 24,
+ .height = 2,
+ .footerId = 0,
+ },
+ {
+ .left = 16,
+ .top = 5,
+ .width = 12,
+ .height = 2,
+ .footerId = 0,
+ },
+ {
+ .left = 3,
+ .top = 4,
+ .width = 24,
+ .height = 4,
+ .footerId = 0,
+ },
+ {
+ .left = 9,
+ .top = 4,
+ .width = 12,
+ .height = 2,
+ .footerId = 1,
+ },
+ {
+ .left = 5,
+ .top = 3,
+ .width = 0x14,
+ .height = 10,
+ .footerId = 3,
+ },
+ {
+ .left = 3,
+ .top = 0,
+ .width = 24,
+ .height = 10,
+ .footerId = 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 sEasyChatSpriteSheets[] = {
+ {
+ .data = sEasyChatTriangleCursorGfx,
+ .size = 0x0020,
+ .tag = 0
+ },
+ {
+ .data = sEasyChatScrollIndicatorGfx,
+ .size = 0x0100,
+ .tag = 2
+ },
+ {
+ .data = sEasyChatStartSelectButtonsGfx,
+ .size = 0x0100,
+ .tag = 3
+ },
+ {0}
+};
+
+static const struct SpritePalette sEasyChatSpritePalettes[] = {
+ {
+ .data = sEasyChatTriangleCursorPalette,
+ .tag = 0,
+ },
+ {
+ .data = gEasyChatCursor_Pal,
+ .tag = 1,
+ },
+ {
+ .data = gEasyChatRightWindow_Pal,
+ .tag = 2,
+ },
+ {
+ .data = sUnknown_085979C0,
+ .tag = 3,
+ },
+ {0}
+};
+
+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 sFooterOptionXOffsets[][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 sDefaultProfileWords[] = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_POKEMON,
+ EC_WORD_FRIEND,
+};
+
+static const u16 sDefaultBattleStartWords[] = {
+ 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 DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType)
{
u8 taskId;
ResetTasks();
taskId = CreateTask(sub_811A2C0, 0);
- gTasks[taskId].data[EZCHAT_TASK_KIND] = kind;
- gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam;
+ gTasks[taskId].data[EZCHAT_TASK_TYPE] = type;
+ gTasks[taskId].data[EZCHAT_TASK_SIZE] = displayedPersonType;
SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
- SetMainCallback2(sub_811A278);
+ SetMainCallback2(MainCallback_EasyChatScreen);
}
-static void sub_811A278(void)
+static void MainCallback_EasyChatScreen(void)
{
RunTasks();
AnimateSprites();
@@ -326,7 +1099,7 @@ static void sub_811A278(void)
UpdatePaletteFade();
}
-static void sub_811A290(void)
+static void VBlankCallback_EasyChatScreen(void)
{
TransferPlttBuffer();
LoadOam();
@@ -341,7 +1114,7 @@ static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
static void sub_811A2C0(u8 taskId)
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
while (sub_811A428(taskId));
}
@@ -364,22 +1137,22 @@ static void sub_811A2FC(u8 taskId)
switch (data[EZCHAT_TASK_STATE])
{
case 0:
- SetVBlankCallback(sub_811A290);
+ SetVBlankCallback(VBlankCallback_EasyChatScreen);
BlendPalettes(0xFFFFFFFF, 16, 0);
- BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, 0);
data[EZCHAT_TASK_STATE] = 5;
break;
case 1:
v0 = sub_811AAAC();
if (sub_811A88C(v0))
{
- BeginNormalPaletteFade(-1, -2, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 3;
data[EZCHAT_TASK_UNK06] = v0;
}
else if (v0 == 0x18)
{
- BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0);
data[EZCHAT_TASK_STATE] = 4;
}
else if (v0 != 0)
@@ -391,27 +1164,19 @@ static void sub_811A2FC(u8 taskId)
break;
case 2:
if (!sub_811C170())
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
case 3:
if (!gPaletteFade.active)
- {
sub_811A8A4(data[EZCHAT_TASK_UNK06]);
- }
break;
case 4:
if (!gPaletteFade.active)
- {
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
- }
break;
case 5:
if (!gPaletteFade.active)
- {
data[EZCHAT_TASK_STATE] = 1;
- }
break;
}
}
@@ -436,7 +1201,7 @@ static bool8 sub_811A428(u8 taskId)
}
break;
case 2:
- if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
+ if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
{
sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
}
@@ -469,98 +1234,98 @@ static void sub_811A4D0(MainCallback callback)
SetMainCallback2(callback);
}
-void easy_chat_input_maybe(void)
+void ShowEasyChatScreen(void)
{
int i;
u16 *words;
struct MauvilleManBard *bard;
- u8 sizeParam = 3;
+ u8 displayedPersonType = EASY_CHAT_PERSON_DISPLAY_NONE;
switch (gSpecialVar_0x8004)
{
- case 0:
- words = gSaveBlock1Ptr->unk2BB0;
+ case EASY_CHAT_TYPE_PROFILE:
+ words = gSaveBlock1Ptr->easyChatProfile;
break;
- case 1:
- words = gSaveBlock1Ptr->unk2BBC;
+ case EASY_CHAT_TYPE_BATTLE_START:
+ words = gSaveBlock1Ptr->easyChatBattleStart;
break;
- case 2:
- words = gSaveBlock1Ptr->unk2BC8;
+ case EASY_CHAT_TYPE_BATTLE_WON:
+ words = gSaveBlock1Ptr->easyChatBattleWon;
break;
- case 3:
- words = gSaveBlock1Ptr->unk2BD4;
+ case EASY_CHAT_TYPE_BATTLE_LOST:
+ words = gSaveBlock1Ptr->easyChatBattleLost;
break;
- case 4:
+ case EASY_CHAT_TYPE_MAIL:
words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
break;
- case 6:
+ case EASY_CHAT_TYPE_BARD_SONG:
bard = &gSaveBlock1Ptr->oldMan.bard;
for (i = 0; i < 6; i ++)
- {
bard->temporaryLyrics[i] = bard->songLyrics[i];
- }
+
words = bard->temporaryLyrics;
break;
- case 5:
+ case EASY_CHAT_TYPE_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
- sizeParam = gSpecialVar_0x8006;
+ displayedPersonType = gSpecialVar_0x8006;
break;
- case 7:
+ case EASY_CHAT_TYPE_FAN_CLUB:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 8:
+ case EASY_CHAT_TYPE_UNK_8:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 9:
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
words = (u16 *)gStringVar3;
words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
break;
- case 10:
+ case EASY_CHAT_TYPE_GABBY_AND_TY:
words = gSaveBlock1Ptr->gabbyAndTyData.quote;
*words = -1;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 11:
+ case EASY_CHAT_TYPE_CONTEST_INTERVIEW:
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
- sizeParam = 0;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
- case 12:
+ case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
- sizeParam = 1;
+ displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case 13:
+ case EASY_CHAT_TYPE_GOOD_SAYING:
words = (u16 *)gStringVar3;
InitializeEasyChatWordArray(words, 2);
break;
- case 14:
+ case EASY_CHAT_TYPE_FAN_QUESTION:
words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
words[0] = -1;
- sizeParam = 2;
+ displayedPersonType = EASY_CHAT_PERSON_BOY;
break;
- case 15:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
break;
- case 16:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
return;
- case 17:
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
break;
- case 18:
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
break;
- case 19:
+ case EASY_CHAT_TYPE_APPRENTICE:
words = gSaveBlock2Ptr->apprentices[0].easyChatWords;
break;
- case 20:
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
words = GetSaveBlock1Field3564();
break;
default:
return;
}
+
CleanupOverworldWindowsAndTilemaps();
- sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam);
+ DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType);
}
static void sub_811A7E4(void)
@@ -579,7 +1344,7 @@ static void sub_811A7E4(void)
lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
lilycoveLady->quiz.unk_016 = -1;
CleanupOverworldWindowsAndTilemaps();
- sub_811A8F0();
+ DoQuizQuestionEasyChatScreen();
}
return;
}
@@ -595,9 +1360,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;
@@ -614,91 +1379,103 @@ 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 DoQuizAnswerEasyChatScreen(void)
{
- sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_QUIZ_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A8F0(void)
+static void DoQuizQuestionEasyChatScreen(void)
{
- sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A914(void)
+static void DoQuizSetAnswerEasyChatScreen(void)
{
- sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER,
+ &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-void sub_811A938(void)
+static void DoQuizSetQuestionEasyChatScreen(void)
{
- sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+ DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION,
+ gSaveBlock1Ptr->lilycoveLady.quiz.unk_002,
+ CB2_ReturnToFieldContinueScript,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
-static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam)
+static bool8 EasyChat_AllocateResources(u8 type, u16 *words, u8 displayedPersonType)
{
u8 templateId;
int i;
- gEasyChatScreen = malloc(sizeof(*gEasyChatScreen));
- if (gEasyChatScreen == NULL)
- {
+ sEasyChatScreen = malloc(sizeof(*sEasyChatScreen));
+ if (sEasyChatScreen == NULL)
return FALSE;
- }
- gEasyChatScreen->kind = kind;
- gEasyChatScreen->words = words;
- gEasyChatScreen->mainCursorColumn = 0;
- gEasyChatScreen->mainCursorRow = 0;
- gEasyChatScreen->unk_09 = 0;
- gEasyChatScreen->sizeParam = sizeParam;
- gEasyChatScreen->unk_13 = 0;
- templateId = sub_811BCC8(kind);
- if (kind == 0x10)
+
+ sEasyChatScreen->type = type;
+ sEasyChatScreen->words = words;
+ sEasyChatScreen->mainCursorColumn = 0;
+ sEasyChatScreen->mainCursorRow = 0;
+ sEasyChatScreen->unk_09 = 0;
+ sEasyChatScreen->displayedPersonType = displayedPersonType;
+ sEasyChatScreen->unk_13 = 0;
+ templateId = GetEachChatScreenTemplateId(type);
+ if (type == EASY_CHAT_TYPE_QUIZ_QUESTION)
{
- sub_811BDF0(gEasyChatScreen->unk_14);
- gEasyChatScreen->titleText = gEasyChatScreen->unk_14;
- gEasyChatScreen->state = 7;
+ sub_811BDF0(sEasyChatScreen->unk_14);
+ sEasyChatScreen->titleText = sEasyChatScreen->unk_14;
+ sEasyChatScreen->state = 7;
}
else
{
- gEasyChatScreen->state = 0;
- gEasyChatScreen->titleText = gEasyChatScreenTemplates[templateId].titleText;
- }
- gEasyChatScreen->numColumns = gEasyChatScreenTemplates[templateId].numColumns;
- gEasyChatScreen->numRows = gEasyChatScreenTemplates[templateId].numRows;
- gEasyChatScreen->unk_07 = gEasyChatScreen->numColumns * gEasyChatScreen->numRows;
- gEasyChatScreen->templateId = templateId;
- if (gEasyChatScreen->unk_07 > 9)
- {
- gEasyChatScreen->unk_07 = 9;
+ sEasyChatScreen->state = 0;
+ sEasyChatScreen->titleText = sEasyChatScreenTemplates[templateId].titleText;
}
+
+ sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns;
+ sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows;
+ sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows;
+ sEasyChatScreen->templateId = templateId;
+ if (sEasyChatScreen->unk_07 > 9)
+ sEasyChatScreen->unk_07 = 9;
+
if (words != NULL)
{
- CpuCopy16(words, gEasyChatScreen->ecWordBuffer, gEasyChatScreen->unk_07 * sizeof(u16));
+ CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16));
}
else
{
- for (i = 0; i < gEasyChatScreen->unk_07; i ++)
- {
- gEasyChatScreen->ecWordBuffer[i] = -1;
- }
- gEasyChatScreen->words = gEasyChatScreen->ecWordBuffer;
+ for (i = 0; i < sEasyChatScreen->unk_07; i ++)
+ sEasyChatScreen->ecWordBuffer[i] = -1;
+
+ sEasyChatScreen->words = sEasyChatScreen->ecWordBuffer;
}
- gEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
+
+ sEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
return TRUE;
}
static void EasyChat_FreeResources(void)
{
- if (gEasyChatScreen != NULL)
- FREE_AND_SET_NULL(gEasyChatScreen);
+ if (sEasyChatScreen != NULL)
+ FREE_AND_SET_NULL(sEasyChatScreen);
}
static u16 sub_811AAAC(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 0:
return sub_811AB68();
@@ -728,7 +1505,7 @@ static u16 sub_811AAAC(void)
bool32 sub_811AB44(void)
{
- switch (sub_811BA68())
+ switch (GetEasyChatScreenFrameId())
{
case 2:
case 7:
@@ -738,508 +1515,150 @@ 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();
+ sEasyChatScreen->state = 2;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->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)
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ sEasyChatScreen->mainCursorRow++;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ sEasyChatScreen->mainCursorColumn++;
+ break;
+ }
+
return 0;
- }
-
- if (gEasyChatScreen->mainCursorRow < 0)
- gEasyChatScreen->mainCursorRow = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows;
+ } while (0);
+
+ if (sEasyChatScreen->mainCursorRow < 0)
+ sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows;
- if (gEasyChatScreen->mainCursorRow > gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
- gEasyChatScreen->mainCursorRow = 0;
+ if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
+ sEasyChatScreen->mainCursorRow = 0;
- if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows)
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
{
- if (gEasyChatScreen->mainCursorColumn > 2)
- gEasyChatScreen->mainCursorColumn = 2;
+ if (sEasyChatScreen->mainCursorColumn > 2)
+ sEasyChatScreen->mainCursorColumn = 2;
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 3;
}
- if (gEasyChatScreen->mainCursorColumn < 0)
- gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1;
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
- if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
- if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
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 (sEasyChatScreen->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)
+ {
+ sEasyChatScreen->mainCursorRow--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ sEasyChatScreen->mainCursorColumn--;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ sEasyChatScreen->mainCursorRow = 0;
+ break;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ sEasyChatScreen->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)
+ if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows)
{
- numFooterColumns = sub_811BA3C() ? 4 : 3;
- if (gEasyChatScreen->mainCursorColumn < 0)
- gEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
+ int numFooterColumns = FooterHasFourOptions() ? 4 : 3;
+ if (sEasyChatScreen->mainCursorColumn < 0)
+ sEasyChatScreen->mainCursorColumn = numFooterColumns - 1;
- if (gEasyChatScreen->mainCursorColumn >= numFooterColumns)
- gEasyChatScreen->mainCursorColumn = 0;
+ if (sEasyChatScreen->mainCursorColumn >= numFooterColumns)
+ sEasyChatScreen->mainCursorColumn = 0;
return 3;
}
- 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;
+ if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns)
+ sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1;
+
+ if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4)
+ sEasyChatScreen->mainCursorColumn = 0;
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->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)
{
@@ -1248,10 +1667,10 @@ static u16 sub_811AE44(void)
if (gMain.newKeys & A_BUTTON)
{
- if (gEasyChatScreen->unk_0a != -1)
+ if (sEasyChatScreen->unk_0a != -1)
return sub_811B2B0();
- switch (gEasyChatScreen->unk_0b)
+ switch (sEasyChatScreen->unk_0b)
{
case 0:
return sub_811B33C();
@@ -1284,7 +1703,7 @@ static u16 sub_811AF00(void)
{
if (gMain.newKeys & B_BUTTON)
{
- gEasyChatScreen->state = 2;
+ sEasyChatScreen->state = 2;
return 14;
}
@@ -1320,11 +1739,11 @@ static u16 sub_811AF8C(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
case 0: // Yes
gSpecialVar_Result = 0;
- var0 = gEasyChatScreen->kind - 17;
+ var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
if (var0 < 2)
sub_811B3E4();
@@ -1340,7 +1759,7 @@ static u16 sub_811AFEC(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
case 0: // Yes
sub_811BE9C();
@@ -1358,11 +1777,11 @@ static u16 sub_811B040(void)
{
case MENU_B_PRESSED: // B Button
case 1: // No
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 7;
case 0: // Yes
sub_811B418();
- gEasyChatScreen->state = 1;
+ sEasyChatScreen->state = 1;
return 8;
default:
return 0;
@@ -1384,7 +1803,7 @@ static u16 sub_811B0BC(void)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- gEasyChatScreen->state = sub_811B2A4();
+ sEasyChatScreen->state = sub_811B2A4();
return 7;
}
@@ -1393,7 +1812,7 @@ static u16 sub_811B0BC(void)
static u16 sub_811B0E8(void)
{
- gEasyChatScreen->state = 10;
+ sEasyChatScreen->state = 10;
return 6;
}
@@ -1404,8 +1823,8 @@ static u16 sub_811B0F8(void)
case MENU_B_PRESSED: // B Button
case 1: // No
sub_811B454();
- gEasyChatScreen->unk_08 = 0;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = 0;
+ sEasyChatScreen->state = 8;
return 31;
case 0: // Yes
gSpecialVar_Result = sub_811B4EC();
@@ -1418,124 +1837,127 @@ static u16 sub_811B0F8(void)
static u16 sub_811B150(void)
{
- if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
return 34;
}
else
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 4;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 4;
return 5;
}
}
-int sub_811B184(void)
+static int sub_811B184(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- if (gEasyChatScreen->kind != 6)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
{
- gEasyChatScreen->state = 5;
+ sEasyChatScreen->state = 5;
return 4;
}
else
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ sEasyChatScreen->state = 8;
return 32;
}
}
-u16 sub_811B1B4(void)
+static u16 sub_811B1B4(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- if (gEasyChatScreen->kind == 17)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
{
if (sub_811BD64())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 29;
}
if (sub_811BDB0())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 30;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 18)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
{
if (sub_811BDB0())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 30;
}
if (sub_811BD64())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 29;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 9 || gEasyChatScreen->kind == 13)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_TRENDY_PHRASE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_GOOD_SAYING)
{
if (!sub_811BD2C())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 33;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE
+ || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW)
{
if (sub_811BCF4())
{
- gEasyChatScreen->state = 8;
+ sEasyChatScreen->state = 8;
return 34;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
- else if (gEasyChatScreen->kind == 20)
+ else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUESTIONNAIRE)
{
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
else
{
if (sub_811BCF4() == 1 || !sub_811B4EC())
{
- gEasyChatScreen->state = 4;
+ sEasyChatScreen->state = 4;
return 5;
}
- gEasyChatScreen->state = 6;
+ sEasyChatScreen->state = 6;
return 6;
}
}
-int sub_811B264(void)
+static int sub_811B264(void)
{
- gEasyChatScreen->unk_08 = gEasyChatScreen->state;
- switch (gEasyChatScreen->kind)
+ sEasyChatScreen->stateBackup = sEasyChatScreen->state;
+ switch (sEasyChatScreen->type)
{
- case 15:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
return 25;
- case 17:
+ case EASY_CHAT_TYPE_QUIZ_SET_QUESTION:
sub_811B3E4();
return 28;
- case 18:
+ case EASY_CHAT_TYPE_QUIZ_SET_ANSWER:
sub_811B3E4();
return 27;
default:
@@ -1545,17 +1967,17 @@ int sub_811B264(void)
static u8 sub_811B2A4(void)
{
- return gEasyChatScreen->unk_08;
+ return sEasyChatScreen->stateBackup;
}
static int sub_811B2B0(void)
{
u16 var1;
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
{
- u8 var0 = sub_811F3B8(sub_811B8E8());
- sub_811F548(0, var0);
+ u8 groupId = sub_811F3B8(sub_811B8E8());
+ sub_811F548(0, groupId);
}
else
{
@@ -1565,37 +1987,37 @@ 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;
- gEasyChatScreen->unk_11 = 0;
- gEasyChatScreen->state = 3;
+
+ sEasyChatScreen->unk_0f = (var1 - 1) / 2;
+ sEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_11 = 0;
+ sEasyChatScreen->state = 3;
return 11;
}
static int sub_811B32C(void)
{
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->state = 0;
return 10;
}
static int sub_811B33C(void)
{
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b = 0;
- gEasyChatScreen->unk_0c = 0;
- if (!gEasyChatScreen->unk_09)
- gEasyChatScreen->unk_09 = 1;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0c = 0;
+ if (!sEasyChatScreen->unk_09)
+ sEasyChatScreen->unk_09 = 1;
else
- gEasyChatScreen->unk_09 = 0;
+ sEasyChatScreen->unk_09 = 0;
return 23;
}
static int sub_811B368(void)
{
- if (gEasyChatScreen->kind == 6)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG)
{
PlaySE(SE_HAZURE);
return 0;
@@ -1618,14 +2040,14 @@ static int sub_811B394(void)
else
{
sub_811B488(easyChatWord);
- if (gEasyChatScreen->kind != 6)
+ if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG)
{
- gEasyChatScreen->state = 0;
+ sEasyChatScreen->state = 0;
return 12;
}
else
{
- gEasyChatScreen->state = 9;
+ sEasyChatScreen->state = 9;
return 13;
}
}
@@ -1634,36 +2056,36 @@ static int sub_811B394(void)
static void sub_811B3E4(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->words[i] = gEasyChatScreen->ecWordBuffer[i];
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i];
}
static void sub_811B418(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = 0xFFFF;
}
static void sub_811B454(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
- gEasyChatScreen->ecWordBuffer[i] = gEasyChatScreen->words[i];
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
+ sEasyChatScreen->ecWordBuffer[i] = sEasyChatScreen->words[i];
}
static void sub_811B488(u16 easyChatWord)
{
u16 index = sub_811B8C8();
- gEasyChatScreen->ecWordBuffer[index] = easyChatWord;
+ sEasyChatScreen->ecWordBuffer[index] = easyChatWord;
}
static u8 sub_811B4AC(void)
{
u16 i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] != gEasyChatScreen->words[i])
+ if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i])
return 1;
}
@@ -1672,7 +2094,7 @@ static u8 sub_811B4AC(void)
static int sub_811B4EC(void)
{
- u8 var0 = gEasyChatScreen->kind - 17;
+ u8 var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
if (var0 < 2)
{
if (sub_811BD64())
@@ -1691,9 +2113,9 @@ static int sub_811B4EC(void)
static u16 sub_811B528(int arg0)
{
- if (gEasyChatScreen->unk_0a != -1)
+ if (sEasyChatScreen->unk_0a != -1)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
return sub_811B568(arg0);
else
return sub_811B634(arg0);
@@ -1709,32 +2131,32 @@ static int sub_811B568(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b != -gEasyChatScreen->unk_0c)
+ if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c)
{
- if (gEasyChatScreen->unk_0b)
+ if (sEasyChatScreen->unk_0b)
{
- gEasyChatScreen->unk_0b--;
+ sEasyChatScreen->unk_0b--;
return 15;
}
else
{
- gEasyChatScreen->unk_0c--;
+ sEasyChatScreen->unk_0c--;
return 17;
}
}
break;
case 3:
- if (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c < gEasyChatScreen->unk_0d - 1)
+ if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1)
{
int var0;
- if (gEasyChatScreen->unk_0b < 3)
+ if (sEasyChatScreen->unk_0b < 3)
{
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0b++;
var0 = 15;
}
else
{
- gEasyChatScreen->unk_0c++;
+ sEasyChatScreen->unk_0c++;
var0 = 16;
}
@@ -1743,16 +2165,16 @@ static int sub_811B568(u32 arg0)
}
break;
case 1:
- if (gEasyChatScreen->unk_0a)
- gEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
else
sub_811B744();
return 15;
case 0:
- if (gEasyChatScreen->unk_0a < 1)
+ if (sEasyChatScreen->unk_0a < 1)
{
- gEasyChatScreen->unk_0a++;
+ sEasyChatScreen->unk_0a++;
if (sub_811B9C8())
sub_811B744();
}
@@ -1771,30 +2193,30 @@ static int sub_811B634(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b > 0)
- gEasyChatScreen->unk_0b--;
+ if (sEasyChatScreen->unk_0b > 0)
+ sEasyChatScreen->unk_0b--;
else
- gEasyChatScreen->unk_0b = 3;
+ sEasyChatScreen->unk_0b = 3;
sub_811B978();
return 15;
case 3:
- if (gEasyChatScreen->unk_0b < 3)
- gEasyChatScreen->unk_0b++;
+ if (sEasyChatScreen->unk_0b < 3)
+ sEasyChatScreen->unk_0b++;
else
- gEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0b = 0;
sub_811B978();
return 15;
case 0:
- gEasyChatScreen->unk_0a++;
+ sEasyChatScreen->unk_0a++;
if (sub_811B9C8())
sub_811B744();
return 15;
case 1:
- gEasyChatScreen->unk_0a--;
- if (gEasyChatScreen->unk_0a < 0)
+ sEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a < 0)
sub_811B744();
return 15;
@@ -1808,26 +2230,26 @@ static int sub_811B6C4(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_0b)
- gEasyChatScreen->unk_0b--;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
else
- gEasyChatScreen->unk_0b = 2;
+ sEasyChatScreen->unk_0b = 2;
return 15;
case 3:
- if (gEasyChatScreen->unk_0b < 2)
- gEasyChatScreen->unk_0b++;
+ if (sEasyChatScreen->unk_0b < 2)
+ sEasyChatScreen->unk_0b++;
else
- gEasyChatScreen->unk_0b = 0;
+ sEasyChatScreen->unk_0b = 0;
return 15;
case 1:
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0b++;
sub_811B768();
return 15;
case 0:
- gEasyChatScreen->unk_0a = 0;
- gEasyChatScreen->unk_0b++;
+ sEasyChatScreen->unk_0a = 0;
+ sEasyChatScreen->unk_0b++;
return 15;
}
@@ -1836,21 +2258,21 @@ static int sub_811B6C4(u32 arg0)
static void sub_811B744(void)
{
- gEasyChatScreen->unk_0a = 0xFF;
- if (gEasyChatScreen->unk_0b)
- gEasyChatScreen->unk_0b--;
+ sEasyChatScreen->unk_0a = 0xFF;
+ if (sEasyChatScreen->unk_0b)
+ sEasyChatScreen->unk_0b--;
}
static void sub_811B768(void)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
{
- gEasyChatScreen->unk_0a = 1;
+ sEasyChatScreen->unk_0a = 1;
sub_811B978();
}
else
{
- gEasyChatScreen->unk_0a = sub_811B960(gEasyChatScreen->unk_0b);
+ sEasyChatScreen->unk_0a = sub_811B960(sEasyChatScreen->unk_0b);
}
}
@@ -1860,16 +2282,16 @@ static u16 sub_811B794(u32 arg0)
switch (arg0)
{
case 2:
- if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e > 0)
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0)
{
- if (gEasyChatScreen->unk_11 > 0)
+ if (sEasyChatScreen->unk_11 > 0)
{
- gEasyChatScreen->unk_11--;
+ sEasyChatScreen->unk_11--;
result = 18;
}
else
{
- gEasyChatScreen->unk_0e--;
+ sEasyChatScreen->unk_0e--;
result = 19;
}
@@ -1878,16 +2300,16 @@ static u16 sub_811B794(u32 arg0)
}
break;
case 3:
- if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e < gEasyChatScreen->unk_0f)
+ if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f)
{
- if (gEasyChatScreen->unk_11 < 3)
+ if (sEasyChatScreen->unk_11 < 3)
{
- gEasyChatScreen->unk_11++;
+ sEasyChatScreen->unk_11++;
result = 18;
}
else
{
- gEasyChatScreen->unk_0e++;
+ sEasyChatScreen->unk_0e++;
result = 20;
}
@@ -1896,43 +2318,43 @@ static u16 sub_811B794(u32 arg0)
}
break;
case 1:
- if (gEasyChatScreen->unk_10 > 0)
- gEasyChatScreen->unk_10--;
+ if (sEasyChatScreen->unk_10 > 0)
+ sEasyChatScreen->unk_10--;
else
- gEasyChatScreen->unk_10 = 1;
+ sEasyChatScreen->unk_10 = 1;
sub_811B9A0();
return 18;
case 0:
- if (gEasyChatScreen->unk_10 < 1)
+ if (sEasyChatScreen->unk_10 < 1)
{
- gEasyChatScreen->unk_10++;
+ sEasyChatScreen->unk_10++;
if (sub_811BA1C())
- gEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_10 = 0;
}
else
{
- gEasyChatScreen->unk_10 = 0;
+ sEasyChatScreen->unk_10 = 0;
}
return 18;
case 4:
- if (gEasyChatScreen->unk_0e)
+ if (sEasyChatScreen->unk_0e)
{
- if (gEasyChatScreen->unk_0e > 3)
- gEasyChatScreen->unk_0e -= 4;
+ if (sEasyChatScreen->unk_0e > 3)
+ sEasyChatScreen->unk_0e -= 4;
else
- gEasyChatScreen->unk_0e = 0;
+ sEasyChatScreen->unk_0e = 0;
return 21;
}
break;
case 5:
- if (gEasyChatScreen->unk_0e <= gEasyChatScreen->unk_0f - 4)
+ if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4)
{
- gEasyChatScreen->unk_0e += 4;
- if (gEasyChatScreen->unk_0e > gEasyChatScreen->unk_0f - 3)
- gEasyChatScreen->unk_0e = gEasyChatScreen->unk_0f + 0xFD;
-
+ sEasyChatScreen->unk_0e += 4;
+ if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3)
+ sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + 0xFD;
+
sub_811B9A0();
return 22;
}
@@ -1944,24 +2366,24 @@ static u16 sub_811B794(u32 arg0)
static u16 sub_811B8C8(void)
{
- return (gEasyChatScreen->mainCursorRow * gEasyChatScreen->numColumns) + gEasyChatScreen->mainCursorColumn;
+ return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn;
}
static u16 sub_811B8E8(void)
{
- return 2 * (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c) + gEasyChatScreen->unk_0a;
+ return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a;
}
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];
+ int var0 = (u8)sEasyChatScreen->unk_0a < 7 ? sEasyChatScreen->unk_0a : 0;
+ int var1 = (u8)sEasyChatScreen->unk_0b < 4 ? sEasyChatScreen->unk_0b : 0;
+ 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;
+ return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10;
}
static u8 sub_811B960(u8 arg0)
@@ -1980,8 +2402,8 @@ static void sub_811B978(void)
{
while (sub_811B9C8())
{
- if (gEasyChatScreen->unk_0a)
- gEasyChatScreen->unk_0a--;
+ if (sEasyChatScreen->unk_0a)
+ sEasyChatScreen->unk_0a--;
else
break;
}
@@ -1991,8 +2413,8 @@ static void sub_811B9A0(void)
{
while (sub_811BA1C())
{
- if (gEasyChatScreen->unk_10)
- gEasyChatScreen->unk_10--;
+ if (sEasyChatScreen->unk_10)
+ sEasyChatScreen->unk_10--;
else
break;
}
@@ -2000,10 +2422,10 @@ static void sub_811B9A0(void)
static u8 sub_811B9C8(void)
{
- if (gEasyChatScreen->unk_09 == 0)
+ if (sEasyChatScreen->unk_09 == 0)
return sub_811B8E8() >= sub_811F3AC() ? 1 : 0;
else
- return gEasyChatScreen->unk_0a > sub_811B960(gEasyChatScreen->unk_0b) ? 1 : 0;
+ return sEasyChatScreen->unk_0a > sub_811B960(sEasyChatScreen->unk_0b) ? 1 : 0;
}
static u8 sub_811BA1C(void)
@@ -2011,73 +2433,73 @@ static u8 sub_811BA1C(void)
return sub_811B940() >= sub_811F5B0() ? 1 : 0;
}
-int sub_811BA3C(void)
+static int FooterHasFourOptions(void)
{
- return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_7;
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].fourFooterOptions;
}
-u8 sub_811BA5C(void)
+static u8 GetEasyChatScreenType(void)
{
- return gEasyChatScreen->kind;
+ return sEasyChatScreen->type;
}
-u8 sub_811BA68(void)
+static u8 GetEasyChatScreenFrameId(void)
{
- return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_0;
+ return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId;
}
-const u8 *sub_811BA88(void)
+const u8 *GetTitleText(void)
{
- return gEasyChatScreen->titleText;
+ return sEasyChatScreen->titleText;
}
-u16 *sub_811BA94(void)
+static u16 *GetEasyChatWordBuffer(void)
{
- return gEasyChatScreen->ecWordBuffer;
+ return sEasyChatScreen->ecWordBuffer;
}
-u8 sub_811BAA0(void)
+static u8 GetNumRows(void)
{
- return gEasyChatScreen->numRows;
+ return sEasyChatScreen->numRows;
}
-u8 sub_811BAAC(void)
+static u8 GetNumColumns(void)
{
- return gEasyChatScreen->numColumns;
+ return sEasyChatScreen->numColumns;
}
-u8 sub_811BAB8(void)
+static u8 GetMainCursorColumn(void)
{
- return gEasyChatScreen->mainCursorColumn;
+ return sEasyChatScreen->mainCursorColumn;
}
-u8 sub_811BAC4(void)
+static u8 GetMainCursorRow(void)
{
- return gEasyChatScreen->mainCursorRow;
+ return sEasyChatScreen->mainCursorRow;
}
static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2)
{
- *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText1;
- *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText2;
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2;
}
static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2)
{
- *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText1;
- *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText2;
+ *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1;
+ *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2;
}
static void sub_811BB40(const u8 **str1, const u8 **str2)
{
- switch (gEasyChatScreen->kind)
+ switch (sEasyChatScreen->type)
{
- case 4:
+ case EASY_CHAT_TYPE_MAIL:
*str1 = gText_StopGivingPkmnMail;
*str2 = NULL;
break;
- case 15:
- case 16:
+ case EASY_CHAT_TYPE_QUIZ_ANSWER:
+ case EASY_CHAT_TYPE_QUIZ_QUESTION:
*str1 = gText_LikeToQuitQuiz;
*str2 = gText_ChallengeQuestionMark;
break;
@@ -2097,34 +2519,34 @@ static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2)
void sub_811BB9C(u8 *arg0, u8 *arg1)
{
- *arg0 = gEasyChatScreen->unk_0a;
- *arg1 = gEasyChatScreen->unk_0b;
+ *arg0 = sEasyChatScreen->unk_0a;
+ *arg1 = sEasyChatScreen->unk_0b;
}
u8 sub_811BBB0(void)
{
- return gEasyChatScreen->unk_09;
+ return sEasyChatScreen->unk_09;
}
u8 sub_811BBBC(void)
{
- return gEasyChatScreen->unk_0c;
+ return sEasyChatScreen->unk_0c;
}
void sub_811BBC8(u8 *arg0, u8 *arg1)
{
- *arg0 = gEasyChatScreen->unk_10;
- *arg1 = gEasyChatScreen->unk_11;
+ *arg0 = sEasyChatScreen->unk_10;
+ *arg1 = sEasyChatScreen->unk_11;
}
u8 sub_811BBDC(void)
{
- return gEasyChatScreen->unk_0e;
+ return sEasyChatScreen->unk_0e;
}
u8 sub_811BBE8(void)
{
- return gEasyChatScreen->unk_0f;
+ return sEasyChatScreen->unk_0f;
}
static u8 unref_sub_811BBF4(void)
@@ -2134,14 +2556,14 @@ static u8 unref_sub_811BBF4(void)
int sub_811BBF8(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 2:
- if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c)
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c)
return 1;
break;
case 3:
- if (gEasyChatScreen->unk_0e)
+ if (sEasyChatScreen->unk_0e)
return 1;
break;
}
@@ -2151,14 +2573,14 @@ int sub_811BBF8(void)
int sub_811BC2C(void)
{
- switch (gEasyChatScreen->state)
+ switch (sEasyChatScreen->state)
{
case 2:
- if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c + 4 <= gEasyChatScreen->unk_0d - 1)
+ if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1)
return 1;
break;
case 3:
- if (gEasyChatScreen->unk_0e + 4 <= gEasyChatScreen->unk_0f)
+ if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f)
return 1;
break;
}
@@ -2166,9 +2588,9 @@ int sub_811BC2C(void)
return 0;
}
-static int sub_811BC70(void)
+static int FooterHasFourOptions_(void)
{
- return sub_811BA3C();
+ return FooterHasFourOptions();
}
u8 sub_811BC7C(const u16 *arg0, u8 arg1)
@@ -2177,38 +2599,38 @@ u8 sub_811BC7C(const u16 *arg0, u8 arg1)
for (i = 0; i < arg1; i++)
{
- if (arg0[i] != gEasyChatScreen->ecWordBuffer[i])
+ if (arg0[i] != sEasyChatScreen->ecWordBuffer[i])
return 1;
}
return 0;
}
-u8 sub_811BCBC(void)
+static u8 GetDisplayedPersonType(void)
{
- return gEasyChatScreen->sizeParam;
+ return sEasyChatScreen->displayedPersonType;
}
-static u8 sub_811BCC8(u8 entryType)
+static u8 GetEachChatScreenTemplateId(u8 type)
{
u32 i;
- for (i = 0; i < ARRAY_COUNT(gEasyChatScreenTemplates); i++)
+ for (i = 0; i < ARRAY_COUNT(sEasyChatScreenTemplates); i++)
{
- if (gEasyChatScreenTemplates[i].unk_00 == entryType)
+ if (sEasyChatScreenTemplates[i].type == type)
return i;
}
return 0;
}
-int sub_811BCF4(void)
+static int sub_811BCF4(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
+ if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF)
return 0;
}
@@ -2219,9 +2641,9 @@ static int sub_811BD2C(void)
{
int i;
- for (i = 0; i < gEasyChatScreen->unk_07; i++)
+ for (i = 0; i < sEasyChatScreen->unk_07; i++)
{
- if (gEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
+ if (sEasyChatScreen->ecWordBuffer[i] == 0xFFFF)
return 0;
}
@@ -2233,9 +2655,9 @@ static int sub_811BD64(void)
int i;
struct SaveBlock1 *saveBlock1;
- if (gEasyChatScreen->kind == 17)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION)
return sub_811BCF4();
-
+
saveBlock1 = gSaveBlock1Ptr;
for (i = 0; i < 9; i++)
{
@@ -2249,7 +2671,7 @@ static int sub_811BD64(void)
static int sub_811BDB0(void)
{
struct LilycoveLadyQuiz *quiz;
- if (gEasyChatScreen->kind == 18)
+ if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER)
return sub_811BCF4();
quiz = &gSaveBlock1Ptr->lilycoveLady.quiz;
@@ -2280,10 +2702,10 @@ static void sub_811BE54(void)
u16 *ecWord;
u8 *str;
- ecWord = gEasyChatScreen->ecWordBuffer;
+ ecWord = sEasyChatScreen->ecWordBuffer;
str = gStringVar2;
i = 0;
- while (i < gEasyChatScreen->unk_07)
+ while (i < sEasyChatScreen->unk_07)
{
str = CopyEasyChatWordPadded(str, *ecWord, 0);
*str = 0;
@@ -2298,22 +2720,22 @@ static void sub_811BE54(void)
static void sub_811BE9C(void)
{
- switch (gEasyChatScreen->kind)
+ switch (sEasyChatScreen->type)
{
- case 0:
+ case EASY_CHAT_TYPE_PROFILE:
FlagSet(FLAG_SYS_CHAT_USED);
break;
- case 20:
+ case EASY_CHAT_TYPE_QUESTIONNAIRE:
if (sub_811BF20())
gSpecialVar_0x8004 = 2;
else
gSpecialVar_0x8004 = 0;
break;
- case 9:
+ case EASY_CHAT_TYPE_TRENDY_PHRASE:
sub_811BE54();
- gSpecialVar_0x8004 = sub_81226D8(gEasyChatScreen->ecWordBuffer);
+ gSpecialVar_0x8004 = sub_81226D8(sEasyChatScreen->ecWordBuffer);
break;
- case 13:
+ case EASY_CHAT_TYPE_GOOD_SAYING:
gSpecialVar_0x8004 = sub_811BF40();
break;
}
@@ -2321,7 +2743,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)
@@ -2329,19 +2751,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;
+ sEasyChatScreen->unk_13 = 0;
}
-int sub_811BF88(int easyChatWord)
+static int sub_811BF88(int easyChatWord)
{
return 0;
}
@@ -2349,21 +2771,21 @@ 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)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_08597C54, ARRAY_COUNT(gUnknown_08597C54));
- SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00);
- SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300);
- InitWindows(gUnknown_08597C64);
+ InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates));
+ SetBgTilemapBuffer(3, sUnknown_0203A11C->unkB00);
+ SetBgTilemapBuffer(1, sUnknown_0203A11C->unk300);
+ InitWindows(sEasyChatWindowTemplates);
DeactivateAllTextPrinters();
sub_811CF64();
sub_811CF04();
@@ -2373,13 +2795,13 @@ static bool8 sub_811BFA4(void)
DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0);
CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0);
sub_811D60C();
- sub_811D424(gUnknown_0203A11C->unk300);
+ sub_811D424(sUnknown_0203A11C->unk300);
sub_811D230();
sub_811E948();
CopyBgTilemapBufferToVram(3);
break;
case 2:
- DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08597B54, 0, 0, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, sUnknown_08597B54, 0, 0, 0);
CopyBgTilemapBufferToVram(1);
break;
case 3:
@@ -2390,7 +2812,7 @@ static bool8 sub_811BFA4(void)
break;
case 4:
sub_811DE90();
- if (sub_811BA5C() != 16)
+ if (GetEasyChatScreenType() != EASY_CHAT_TYPE_QUIZ_QUESTION)
sub_811DEC4();
break;
case 5:
@@ -2416,26 +2838,26 @@ static bool8 sub_811BFA4(void)
return FALSE;
}
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return TRUE;
}
static void sub_811C13C(void)
{
- if (gUnknown_0203A11C)
- FREE_AND_SET_NULL(gUnknown_0203A11C);
+ if (sUnknown_0203A11C)
+ FREE_AND_SET_NULL(sUnknown_0203A11C);
}
static void sub_811C158(u16 arg0)
{
- gUnknown_0203A11C->unk4 = arg0;
- gUnknown_0203A11C->unk0 = 0;
+ sUnknown_0203A11C->unk4 = arg0;
+ sUnknown_0203A11C->unk0 = 0;
sub_811C170();
}
static bool8 sub_811C170(void)
{
- switch (gUnknown_0203A11C->unk4)
+ switch (sUnknown_0203A11C->unk4)
{
case 0: return FALSE;
case 1: return sub_811C2D4();
@@ -2478,11 +2900,11 @@ static bool8 sub_811C170(void)
static bool8 sub_811C2D4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2496,21 +2918,21 @@ static bool8 sub_811C30C(void)
u8 i;
u16 *ecWordBuffer;
u16 *ecWord;
- u8 var0;
+ u8 frameId;
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();
+ u8 str[64];
+
+ ecWordBuffer = GetEasyChatWordBuffer();
+ frameId = GetEasyChatScreenFrameId();
+ cursorColumn = GetMainCursorColumn();
+ cursorRow = GetMainCursorRow();
+ numColumns = GetNumColumns();
ecWord = &ecWordBuffer[cursorRow * numColumns];
- var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13;
+ var1 = 8 * sPhraseFrameDimensions[frameId].left + 13;
for (i = 0; i < cursorColumn; i++)
{
if (*ecWord == 0xFFFF)
@@ -2519,8 +2941,8 @@ static bool8 sub_811C30C(void)
}
else
{
- CopyEasyChatWord(sp0, *ecWord);
- stringWidth = GetStringWidth(1, sp0, 0);
+ CopyEasyChatWord(str, *ecWord);
+ stringWidth = GetStringWidth(1, str, 0);
}
trueStringWidth = stringWidth + 17;
@@ -2528,27 +2950,27 @@ static bool8 sub_811C30C(void)
ecWord++;
}
- var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2);
+ var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2);
sub_811DF60(var1, var2 + 8);
return FALSE;
}
static bool8 sub_811C3E4(void)
{
- u8 var0 = sub_811E920(sub_811BAB8());
- sub_811DF60(var0, 96);
+ u8 xOffset = GetFooterOptionXOffset(GetMainCursorColumn());
+ sub_811DF60(xOffset, 96);
return FALSE;
}
static bool8 sub_811C404(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(2);
sub_811D214(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2559,13 +2981,13 @@ static bool8 sub_811C404(void)
static bool8 sub_811C448(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(3);
sub_811D214(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2576,13 +2998,13 @@ static bool8 sub_811C448(void)
static bool8 sub_811C48C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(1);
sub_811D214(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2593,14 +3015,14 @@ static bool8 sub_811C48C(void)
static bool8 sub_811C4D0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DFB0();
sub_811D104(0);
sub_811D2C8();
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2611,13 +3033,13 @@ static bool8 sub_811C4D0(void)
static bool8 sub_811C518(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DFB0();
sub_811D104(0);
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -2628,31 +3050,31 @@ static bool8 sub_811C518(void)
static bool8 sub_811C554(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
HideBg(0);
sub_811DE5C(0, 0, 0, 0);
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4())
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811E3AC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -2661,7 +3083,7 @@ static bool8 sub_811C554(void)
sub_811DFC8();
sub_811E6E0(0);
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2674,31 +3096,31 @@ static bool8 sub_811C554(void)
static bool8 sub_811C620(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E4AC();
sub_811E6B0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (sub_811E4D0() == TRUE)
break;
sub_811D9CC(1);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 2:
if (!sub_811DAA4())
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -2710,20 +3132,20 @@ static bool8 sub_811C620(void)
static bool8 sub_811C6C0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E6B0();
sub_811E55C();
sub_811D9CC(5);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!sub_811DAA4() && !sub_811E5B8())
{
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -2731,7 +3153,7 @@ static bool8 sub_811C6C0(void)
{
sub_811D9CC(6);
sub_811E578();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
@@ -2739,7 +3161,7 @@ static bool8 sub_811C6C0(void)
{
sub_811E64C();
sub_811DFC8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2758,11 +3180,11 @@ static bool8 sub_811C780(void)
static bool8 sub_811C78C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DDAC(1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
if (!sub_811DE10())
@@ -2779,17 +3201,17 @@ static bool8 sub_811C78C(void)
static bool8 sub_811C7D4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DDAC(-1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
// Fall through
case 1:
if (!sub_811DE10())
{
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2802,33 +3224,33 @@ static bool8 sub_811C7D4(void)
static bool8 sub_811C830(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E050();
sub_811E4AC();
sub_811E6B0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!sub_811E4D0())
{
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(2);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
sub_811D698(2);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -2838,7 +3260,7 @@ static bool8 sub_811C830(void)
sub_811E6E0(1);
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2851,38 +3273,38 @@ static bool8 sub_811C830(void)
static bool8 sub_811C8F0(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2895,45 +3317,45 @@ static bool8 sub_811C8F0(void)
static bool8 sub_811C99C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D2C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!sub_811DAA4())
{
sub_811D104(3);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
ShowBg(0);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 5:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DFB0();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2946,34 +3368,34 @@ static bool8 sub_811C99C(void)
static bool8 sub_811CA5C(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811E380();
sub_811E6B0();
sub_811E7F8();
sub_811D9B4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811D9CC(4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
if (!sub_811DAA4())
{
sub_811D6D4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811E3AC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 4:
@@ -2982,7 +3404,7 @@ static bool8 sub_811CA5C(void)
sub_811DFC8();
sub_811E6E0(0);
sub_811E64C();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -2999,17 +3421,17 @@ static bool8 sub_811CB18(void)
static bool8 sub_811CB24(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7A4();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DDAC(1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3018,7 +3440,7 @@ static bool8 sub_811CB24(void)
sub_811E30C();
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3031,17 +3453,17 @@ static bool8 sub_811CB24(void)
static bool8 sub_811CB98(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7C8();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_811DDAC(-1, 4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3049,7 +3471,7 @@ static bool8 sub_811CB98(void)
{
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3062,18 +3484,18 @@ static bool8 sub_811CB98(void)
static bool8 sub_811CC08(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D7EC();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
s16 var0 = sub_811BBDC() - sub_811DE48();
sub_811DDAC(var0, 8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3082,7 +3504,7 @@ static bool8 sub_811CC08(void)
sub_811E30C();
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3095,18 +3517,18 @@ static bool8 sub_811CC08(void)
static bool8 sub_811CC90(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811D830();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
s16 var0 = sub_811BBDC() - sub_811DE48();
sub_811DDAC(var0, 8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
}
break;
case 2:
@@ -3114,7 +3536,7 @@ static bool8 sub_811CC90(void)
{
sub_811E64C();
sub_811E794();
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
return FALSE;
}
break;
@@ -3127,12 +3549,12 @@ static bool8 sub_811CC90(void)
static bool8 sub_811CD14(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(4);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3143,12 +3565,12 @@ static bool8 sub_811CD14(void)
static bool8 sub_811CD54(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(5);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3159,12 +3581,12 @@ static bool8 sub_811CD54(void)
static bool8 sub_811CD94(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(6);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3175,12 +3597,12 @@ static bool8 sub_811CD94(void)
static bool8 sub_811CDD4(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(7);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3191,12 +3613,12 @@ static bool8 sub_811CDD4(void)
static bool8 sub_811CE14(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(8);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3207,12 +3629,12 @@ static bool8 sub_811CE14(void)
static bool8 sub_811CE54(void)
{
- switch (gUnknown_0203A11C->unk0)
+ switch (sUnknown_0203A11C->unk0)
{
case 0:
sub_811DF90();
sub_811D104(9);
- gUnknown_0203A11C->unk0++;
+ sUnknown_0203A11C->unk0++;
break;
case 1:
return IsDma3ManagerBusyWithBgCopy();
@@ -3223,22 +3645,22 @@ static bool8 sub_811CE54(void)
static bool8 sub_811CE94(void)
{
- gUnknown_0203A11C = Alloc(sizeof(*gUnknown_0203A11C));
- if (!gUnknown_0203A11C)
+ sUnknown_0203A11C = Alloc(sizeof(*sUnknown_0203A11C));
+ if (!sUnknown_0203A11C)
return FALSE;
- gUnknown_0203A11C->unk0 = 0;
- gUnknown_0203A11C->unk2D8 = 0;
- gUnknown_0203A11C->unk2DC = 0;
- gUnknown_0203A11C->unk2E0 = 0;
- gUnknown_0203A11C->unk2E4 = 0;
- gUnknown_0203A11C->unk2E8 = 0;
- gUnknown_0203A11C->unk2EC = 0;
- gUnknown_0203A11C->unk2F0 = 0;
- gUnknown_0203A11C->unk2F4 = 0;
- gUnknown_0203A11C->unk2F8 = 0;
- gUnknown_0203A11C->unk2FC = 0;
- gUnknown_0203A11C->unkA = sub_811BC70();
+ sUnknown_0203A11C->unk0 = 0;
+ sUnknown_0203A11C->unk2D8 = NULL;
+ sUnknown_0203A11C->unk2DC = NULL;
+ sUnknown_0203A11C->unk2E0 = NULL;
+ sUnknown_0203A11C->unk2E4 = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2F0 = NULL;
+ sUnknown_0203A11C->unk2F4 = NULL;
+ sUnknown_0203A11C->unk2F8 = NULL;
+ sUnknown_0203A11C->unk2FC = NULL;
+ sUnknown_0203A11C->unkA = FooterHasFourOptions_();
return TRUE;
}
@@ -3259,23 +3681,23 @@ static void sub_811CF64(void)
{
ResetPaletteFade();
LoadPalette(gEasyChatMode_Pal, 0, 32);
- LoadPalette(gUnknown_08597B14, 1 * 16, 32);
- LoadPalette(gUnknown_08597B34, 4 * 16, 32);
- LoadPalette(gUnknown_08597C1C, 10 * 16, 8);
- LoadPalette(gUnknown_08597C24, 11 * 16, 12);
- LoadPalette(gUnknown_08597C24, 15 * 16, 12);
- LoadPalette(gUnknown_08597C24, 3 * 16, 12);
+ 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();
+ const u8 *titleText = GetTitleText();
if (!titleText)
return;
xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
sub_811D058(0, 1, titleText, xOffset, 1, 0xFF, 0, 2, 3);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -3286,7 +3708,7 @@ void sub_811D028(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, vo
AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback);
}
-void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue)
+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;
@@ -3345,7 +3767,7 @@ static void sub_811D104(u8 arg0)
break;
}
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
if (text1)
sub_811D028(1, 1, text1, 0, 1, 0xFF, 0);
@@ -3357,24 +3779,24 @@ static void sub_811D104(u8 arg0)
static void sub_811D214(u8 initialCursorPos)
{
- CreateYesNoMenu(&gUnknown_08597C84, 1, 14, initialCursorPos);
+ CreateYesNoMenu(&sEasyChatYesNoWindowTemplate, 1, 14, initialCursorPos);
}
static void sub_811D230(void)
{
- u8 var0;
+ u8 frameId;
struct WindowTemplate template;
- var0 = sub_811BA68();
+ frameId = GetEasyChatScreenFrameId();
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.tilemapLeft = sPhraseFrameDimensions[frameId].left;
+ template.tilemapTop = sPhraseFrameDimensions[frameId].top;
+ template.width = sPhraseFrameDimensions[frameId].width;
+ template.height = sPhraseFrameDimensions[frameId].height;
template.paletteNum = 11;
template.baseBlock = 0x6C;
- gUnknown_0203A11C->windowId = AddWindow(&template);
- PutWindowTilemap(gUnknown_0203A11C->windowId);
+ sUnknown_0203A11C->windowId = AddWindow(&template);
+ PutWindowTilemap(sUnknown_0203A11C->windowId);
}
static void sub_811D2C8(void)
@@ -3383,27 +3805,27 @@ static void sub_811D2C8(void)
u16 *ecWord;
u8 numColumns, numRows;
u8 *str;
- int var0;
+ int frameId;
int var1;
int i, j, k;
- ecWord = sub_811BA94();
- numColumns = sub_811BAAC();
- numRows = sub_811BAA0();
- var0 = sub_811BA68();
+ ecWord = GetEasyChatWordBuffer();
+ numColumns = GetNumColumns();
+ numRows = GetNumRows();
+ frameId = GetEasyChatScreenFrameId();
var1 = 0;
- if (var0 == 7)
+ if (frameId == 7)
var1 = 1;
- FillWindowPixelBuffer(gUnknown_0203A11C->windowId, 0x11);
+ FillWindowPixelBuffer(sUnknown_0203A11C->windowId, PIXEL_FILL(1));
for (i = 0; i < numRows; i++)
{
- memcpy(spC, gUnknown_08597C8C, sizeof(gUnknown_08597C8C));
+ memcpy(spC, sText_Clear17, sizeof(sText_Clear17));
if (var1)
spC[2] = 6;
- str = gUnknown_0203A11C->unkB;
- gUnknown_0203A11C->unkB[0] = EOS;
+ str = sUnknown_0203A11C->unkB;
+ sUnknown_0203A11C->unkB[0] = EOS;
str = StringAppend(str, spC);
for (j = 0; j < numColumns; j++)
{
@@ -3432,7 +3854,7 @@ static void sub_811D2C8(void)
spC[2] = 3;
str = StringAppend(str, spC);
- if (var0 == 2 || var0 == 7 || var0 == 8)
+ if (frameId == 2 || frameId == 7 || frameId == 8)
{
if (j == 0 && i == 4)
break;
@@ -3440,41 +3862,41 @@ static void sub_811D2C8(void)
}
*str = EOS;
- sub_811D028(gUnknown_0203A11C->windowId, 1, gUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
+ sub_811D028(sUnknown_0203A11C->windowId, 1, sUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0);
}
- CopyWindowToVram(gUnknown_0203A11C->windowId, 3);
+ CopyWindowToVram(sUnknown_0203A11C->windowId, 3);
}
static void sub_811D424(u16 *tilemap)
{
- u8 var0;
+ u8 frameId;
int right, bottom;
int x, y;
- var0 = sub_811BA68();
+ frameId = GetEasyChatScreenFrameId();
CpuFastFill(0, tilemap, BG_SCREEN_SIZE);
- if (var0 == 2 || var0 == 8)
+ if (frameId == 2 || frameId == 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++)
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
+ for (y = sPhraseFrameDimensions[frameId].top; y < bottom; y++)
{
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 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;
+ y = sPhraseFrameDimensions[frameId].top - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
+ right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width;
+ bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height;
tilemap[y * 32 + x] = 0x1001;
x++;
for (; x < right; x++)
@@ -3484,7 +3906,7 @@ static void sub_811D424(u16 *tilemap)
y++;
for (; y < bottom; y++)
{
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
tilemap[y * 32 + x] = 0x1005;
x++;
for (; x < right; x++)
@@ -3493,7 +3915,7 @@ static void sub_811D424(u16 *tilemap)
tilemap[y* 32 + x] = 0x1007;
}
- x = gUnknown_08597C30[var0].unk0_0 - 1;
+ x = sPhraseFrameDimensions[frameId].left - 1;
tilemap[y * 32 + x] = 0x1009;
x++;
for (; x < right; x++)
@@ -3505,12 +3927,12 @@ static void sub_811D424(u16 *tilemap)
static void sub_811D60C(void)
{
- u8 var0;
+ u8 frameId;
u16 *tilemap;
tilemap = GetBgTilemapBuffer(3);
- var0 = sub_811BA68();
- switch (gUnknown_08597C30[var0].unk3)
+ frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
{
case 2:
tilemap += 0x2A0;
@@ -3535,7 +3957,7 @@ static void sub_811D684(void)
static void sub_811D698(u32 arg0)
{
sub_811DD84();
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
switch (arg0)
{
case 0:
@@ -3571,14 +3993,14 @@ static void sub_811D6F4(void)
{
for (x = 0; x < 2; x++)
{
- u8 index = sub_811F3B8(i++);
- if (index == 22)
+ u8 groupId = sub_811F3B8(i++);
+ if (groupId == EC_NUM_GROUPS)
{
sub_811DDAC(sub_811BBBC(), 0);
return;
}
- sub_811D028(2, 1, sub_811F424(index), x * 84 + 10, y, 0xFF, NULL);
+ sub_811D028(2, 1, GetEasyChatWordGroupName(groupId), x * 84 + 10, y, 0xFF, NULL);
}
y += 16;
@@ -3589,8 +4011,8 @@ static void sub_811D758(void)
{
u32 i;
- for (i = 0; i < 4; i++)
- sub_811D028(2, 1, gUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL);
+ 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)
@@ -3658,11 +4080,11 @@ static void sub_811D864(u8 arg0, u8 arg1)
easyChatWord = sub_811F578(var0++);
if (easyChatWord != 0xFFFF)
{
- CopyEasyChatWordPadded(gUnknown_0203A11C->unkCC, easyChatWord, 0);
+ CopyEasyChatWordPadded(sUnknown_0203A11C->unkCC, easyChatWord, 0);
if (!sub_811BF88(easyChatWord))
- sub_811D028(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL);
+ sub_811D028(2, 1, sUnknown_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);
+ sub_811D058(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3);
}
}
@@ -3692,14 +4114,14 @@ static void sub_811D950(u8 arg0, u8 arg1)
var1 = 0;
}
- FillWindowPixelRect(2, 0x11, 0, y, 224, var2);
+ FillWindowPixelRect(2, PIXEL_FILL(1), 0, y, 224, var2);
if (var1)
- FillWindowPixelRect(2, 0x11, 0, 0, 224, var1);
+ FillWindowPixelRect(2, PIXEL_FILL(1), 0, 0, 224, var1);
}
static void sub_811D9B4(void)
{
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
CopyWindowToVram(2, 2);
}
@@ -3708,47 +4130,1419 @@ static void sub_811D9CC(int arg0)
switch (arg0)
{
case 0:
- gUnknown_0203A11C->unk6 = 0;
- gUnknown_0203A11C->unk7 = 10;
+ sUnknown_0203A11C->unk6 = 0;
+ sUnknown_0203A11C->unk7 = 10;
break;
case 1:
- gUnknown_0203A11C->unk6 = 9;
- gUnknown_0203A11C->unk7 = 0;
+ sUnknown_0203A11C->unk6 = 9;
+ sUnknown_0203A11C->unk7 = 0;
break;
case 2:
- gUnknown_0203A11C->unk6 = 11;
- gUnknown_0203A11C->unk7 = 17;
+ sUnknown_0203A11C->unk6 = 11;
+ sUnknown_0203A11C->unk7 = 17;
break;
case 3:
- gUnknown_0203A11C->unk6 = 17;
- gUnknown_0203A11C->unk7 = 0;
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 0;
break;
case 4:
- gUnknown_0203A11C->unk6 = 17;
- gUnknown_0203A11C->unk7 = 10;
+ sUnknown_0203A11C->unk6 = 17;
+ sUnknown_0203A11C->unk7 = 10;
break;
case 5:
- gUnknown_0203A11C->unk6 = 18;
- gUnknown_0203A11C->unk7 = 22;
+ sUnknown_0203A11C->unk6 = 18;
+ sUnknown_0203A11C->unk7 = 22;
break;
case 6:
- gUnknown_0203A11C->unk6 = 22;
- gUnknown_0203A11C->unk7 = 18;
+ sUnknown_0203A11C->unk6 = 22;
+ sUnknown_0203A11C->unk7 = 18;
break;
}
- gUnknown_0203A11C->unk8 = gUnknown_0203A11C->unk6 < gUnknown_0203A11C->unk7 ? 1 : -1;
+ sUnknown_0203A11C->unk8 = sUnknown_0203A11C->unk6 < sUnknown_0203A11C->unk7 ? 1 : -1;
}
static bool8 sub_811DAA4(void)
{
u8 var0, var1;
- if (gUnknown_0203A11C->unk6 == gUnknown_0203A11C->unk7)
+ if (sUnknown_0203A11C->unk6 == sUnknown_0203A11C->unk7)
return FALSE;
- gUnknown_0203A11C->unk6 += gUnknown_0203A11C->unk8;
- sub_811DADC(gUnknown_0203A11C->unk6);
- var0 = gUnknown_0203A11C->unk6;
- var1 = gUnknown_0203A11C->unk7;
+ sUnknown_0203A11C->unk6 += sUnknown_0203A11C->unk8;
+ sub_811DADC(sUnknown_0203A11C->unk6);
+ var0 = sUnknown_0203A11C->unk6;
+ var1 = sUnknown_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 = sUnknown_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);
+ sUnknown_0203A11C->unk2CE = 0;
+}
+
+static void sub_811DDAC(s16 arg0, u8 arg1)
+{
+ int bgY;
+ s16 var0;
+
+ bgY = GetBgY(2);
+ sUnknown_0203A11C->unk2CE += arg0;
+ var0 = arg0 * 16;
+ bgY += var0 << 8;
+ if (arg1)
+ {
+ sUnknown_0203A11C->unk2D0 = bgY;
+ sUnknown_0203A11C->unk2D4 = arg1 * 256;
+ if (var0 < 0)
+ sUnknown_0203A11C->unk2D4 = -sUnknown_0203A11C->unk2D4;
+ }
+ else
+ {
+ ChangeBgY(2, bgY, 0);
+ }
+}
+
+static bool8 sub_811DE10(void)
+{
+ int bgY;
+
+ bgY = GetBgY(2);
+ if (bgY == sUnknown_0203A11C->unk2D0)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(2, sUnknown_0203A11C->unk2D4, 1);
+ return TRUE;
+ }
+}
+
+static int sub_811DE48(void)
+{
+ return sUnknown_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(sEasyChatSpriteSheets);
+ LoadSpritePalettes(sEasyChatSpritePalettes);
+ for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++)
+ LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]);
+}
+
+static void sub_811DEC4(void)
+{
+ u8 frameId = GetEasyChatScreenFrameId();
+ int x = sPhraseFrameDimensions[frameId].left * 8 + 13;
+ int y = sPhraseFrameDimensions[frameId].top * 8 + 8;
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2);
+ sUnknown_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)
+{
+ sUnknown_0203A11C->unk2D8->pos1.x = x;
+ sUnknown_0203A11C->unk2D8->pos1.y = y;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
+}
+
+static void sub_811DF90(void)
+{
+ sUnknown_0203A11C->unk2D8->data[0] = 0;
+ sUnknown_0203A11C->unk2D8->data[1] = 0;
+ sUnknown_0203A11C->unk2D8->pos2.x = 0;
+}
+
+static void sub_811DFB0(void)
+{
+ sUnknown_0203A11C->unk2D8->data[1] = 1;
+}
+
+static void sub_811DFC8(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ sUnknown_0203A11C->unk2DC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2DC->pos2.x = 32;
+
+ spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3);
+ sUnknown_0203A11C->unk2E0 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E0->pos2.x = -32;
+
+ sUnknown_0203A11C->unk2DC->hFlip = 1;
+ sub_811E088();
+}
+
+static void sub_811E050(void)
+{
+ DestroySprite(sUnknown_0203A11C->unk2DC);
+ sUnknown_0203A11C->unk2DC = NULL;
+ DestroySprite(sUnknown_0203A11C->unk2E0);
+ sUnknown_0203A11C->unk2E0 = NULL;
+}
+
+static void sub_811E088(void)
+{
+ u8 var0;
+ u8 var1;
+
+ if (sUnknown_0203A11C->unk2DC && sUnknown_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(sUnknown_0203A11C->unk2DC, 0);
+ sUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 0);
+ sUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96;
+ }
+ else
+ {
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_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(sUnknown_0203A11C->unk2DC, anim);
+ sUnknown_0203A11C->unk2DC->pos1.x = x;
+ sUnknown_0203A11C->unk2DC->pos1.y = y;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, anim);
+ sUnknown_0203A11C->unk2E0->pos1.x = x;
+ sUnknown_0203A11C->unk2E0->pos1.y = y;
+ }
+ else
+ {
+ StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1);
+ sUnknown_0203A11C->unk2DC->pos1.x = 216;
+ sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112;
+
+ StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1);
+ sUnknown_0203A11C->unk2E0->pos1.x = 216;
+ sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112;
+ }
+}
+
+static void sub_811E288(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4);
+ sUnknown_0203A11C->unk2E4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E4->callback = sub_811E2DC;
+ sUnknown_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 (sUnknown_0203A11C->unk2E4)
+ {
+ sUnknown_0203A11C->unk2E4->pos1.x = x;
+ sUnknown_0203A11C->unk2E4->pos1.y = y;
+ sUnknown_0203A11C->unk2E4->pos2.x = 0;
+ sUnknown_0203A11C->unk2E4->data[0] = 0;
+ }
+}
+
+static void sub_811E380(void)
+{
+ if (sUnknown_0203A11C->unk2E4)
+ {
+ DestroySprite(sUnknown_0203A11C->unk2E4);
+ sUnknown_0203A11C->unk2E4 = NULL;
+ }
+}
+
+static void sub_811E3AC(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6);
+ sUnknown_0203A11C->unk2E8 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2E8->pos2.x = -64;
+
+ spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5);
+ sUnknown_0203A11C->unk2EC = &gSprites[spriteId];
+ sUnknown_0203A11C->unk9 = 0;
+}
+
+static bool8 sub_811E418(void)
+{
+ switch (sUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ sUnknown_0203A11C->unk2E8->pos2.x += 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x >= 0)
+ {
+ sUnknown_0203A11C->unk2E8->pos2.x = 0;
+ if (!sub_811BBB0())
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
+
+ sUnknown_0203A11C->unk9++;
+ }
+ break;
+ case 1:
+ if (sUnknown_0203A11C->unk2EC->animEnded)
+ {
+ sUnknown_0203A11C->unk9 = 2;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E4AC(void)
+{
+ sUnknown_0203A11C->unk9 = 0;
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 3);
+}
+
+static bool8 sub_811E4D0(void)
+{
+ switch (sUnknown_0203A11C->unk9)
+ {
+ default:
+ return FALSE;
+ case 0:
+ if (sUnknown_0203A11C->unk2EC->animEnded)
+ sUnknown_0203A11C->unk9 = 1;
+ break;
+ case 1:
+ sUnknown_0203A11C->unk2E8->pos2.x -= 8;
+ if (sUnknown_0203A11C->unk2E8->pos2.x <= -64)
+ {
+ DestroySprite(sUnknown_0203A11C->unk2EC);
+ DestroySprite(sUnknown_0203A11C->unk2E8);
+ sUnknown_0203A11C->unk2EC = NULL;
+ sUnknown_0203A11C->unk2E8 = NULL;
+ sUnknown_0203A11C->unk9++;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static void sub_811E55C(void)
+{
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 4);
+}
+
+static void sub_811E578(void)
+{
+ if (!sub_811BBB0())
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1);
+ else
+ StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2);
+}
+
+static bool8 sub_811E5B8(void)
+{
+ return !sUnknown_0203A11C->unk2EC->animEnded;
+}
+
+static void sub_811E5D4(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0);
+ if (spriteId != MAX_SPRITES)
+ sUnknown_0203A11C->unk2F0 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sUnknown_0203A11C->unk2F4 = &gSprites[spriteId];
+ sUnknown_0203A11C->unk2F4->vFlip = 1;
+ }
+
+ sub_811E6B0();
+}
+
+static void sub_811E64C(void)
+{
+ sUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C();
+}
+
+static void sub_811E6B0(void)
+{
+ sUnknown_0203A11C->unk2F0->invisible = 1;
+ sUnknown_0203A11C->unk2F4->invisible = 1;
+}
+
+static void sub_811E6E0(int arg0)
+{
+ if (!arg0)
+ {
+ sUnknown_0203A11C->unk2F0->pos1.x = 96;
+ sUnknown_0203A11C->unk2F4->pos1.x = 96;
+ }
+ else
+ {
+ sUnknown_0203A11C->unk2F0->pos1.x = 120;
+ sUnknown_0203A11C->unk2F4->pos1.x = 120;
+ }
+}
+
+static void sub_811E720(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1);
+ if (spriteId != MAX_SPRITES)
+ sUnknown_0203A11C->unk2F8 = &gSprites[spriteId];
+
+ spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ sUnknown_0203A11C->unk2FC = &gSprites[spriteId];
+ StartSpriteAnim(sUnknown_0203A11C->unk2FC, 1);
+ }
+
+ sub_811E7F8();
+}
+
+static void sub_811E794(void)
+{
+ sUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8();
+ sUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C();
+}
+
+static void sub_811E7F8(void)
+{
+ sUnknown_0203A11C->unk2F8->invisible = 1;
+ sUnknown_0203A11C->unk2FC->invisible = 1;
+}
+
+static void sub_811E828(void)
+{
+ int graphicsId;
+ u8 spriteId;
+
+ switch (GetDisplayedPersonType())
+ {
+ case EASY_CHAT_PERSON_REPORTER_MALE:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_M;
+ break;
+ case EASY_CHAT_PERSON_REPORTER_FEMALE:
+ graphicsId = EVENT_OBJ_GFX_REPORTER_F;
+ break;
+ case EASY_CHAT_PERSON_BOY:
+ graphicsId = EVENT_OBJ_GFX_BOY_1;
+ break;
+ default:
+ return;
+ }
+
+ if (GetEasyChatScreenFrameId() != 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 GetFooterIndex(void)
+{
+ u8 frameId = GetEasyChatScreenFrameId();
+ switch (sPhraseFrameDimensions[frameId].footerId)
+ {
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 0:
+ return 0;
+ default:
+ return 3;
+ }
+}
+
+static int GetFooterOptionXOffset(int option)
+{
+ int footerIndex = GetFooterIndex();
+ if (footerIndex < 3)
+ return sFooterOptionXOffsets[footerIndex][option] + 4;
+ else
+ return 0;
+}
+
+static void sub_811E948(void)
+{
+ int i;
+ u16 windowId;
+ struct WindowTemplate template;
+ int footerId = GetFooterIndex();
+ if (footerId == 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, PIXEL_FILL(1));
+ for (i = 0; i < 4; i++)
+ {
+ const u8 *str = sFooterTextOptions[footerId][i];
+ if (str)
+ {
+ int x = sFooterOptionXOffsets[footerId][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->easyChatProfile;
+ columns = 2;
+ rows = 2;
+ break;
+ case 1:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleStart;
+ if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18))
+ {
+ columns = 2;
+ rows = 3;
+ }
+ else
+ {
+ columns = 3;
+ rows = 2;
+ }
+ break;
+ case 2:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleWon;
+ columns = 3;
+ rows = 2;
+ break;
+ case 3:
+ easyChatWords = gSaveBlock1Ptr->easyChatBattleLost;
+ 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->easyChatProfile[i] = sDefaultProfileWords[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleStart[i] = sDefaultBattleStartWords[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleWon[i] = sUnknown_0859E640[i];
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->easyChatBattleLost[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)
+{
+ sUnknown_0203A120 = Alloc(sizeof(*sUnknown_0203A120));
+ if (!sUnknown_0203A120)
+ return FALSE;
+
+ sub_811F2D4();
+ sub_811F46C();
+ return TRUE;
+}
+
+static void sub_811F2B8(void)
+{
+ if (sUnknown_0203A120)
+ FREE_AND_SET_NULL(sUnknown_0203A120);
+}
+
+static void sub_811F2D4(void)
+{
+ int i;
+
+ sUnknown_0203A120->unk0 = 0;
+ if (GetNationalPokedexCount(FLAG_GET_SEEN))
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON;
+
+ for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++)
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = i;
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_EVENTS;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1;
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2;
+ }
+
+ if (FlagGet(FLAG_SYS_HIPSTER_MEET))
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING;
+
+ if (IsNationalPokedexEnabled())
+ sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2;
+}
+
+static u8 sub_811F3AC(void)
+{
+ return sUnknown_0203A120->unk0;
+}
+
+static u8 sub_811F3B8(u8 index)
+{
+ if (index >= sUnknown_0203A120->unk0)
+ return EC_NUM_GROUPS;
+ else
+ return sUnknown_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;
+ sUnknown_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]))
+ {
+ sUnknown_0203A120->unk64[i][index++] = words[k];
+ sUnknown_0203A120->unk2E[i]++;
+ break;
+ }
+ }
+
+ words += numToProcess;
+ }
+ }
+}
+
+static void sub_811F548(int arg0, u16 groupId)
+{
+ if (!arg0)
+ sUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId);
+ else
+ sUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId);
+}
+
+static u16 sub_811F578(u16 arg0)
+{
+ if (arg0 >= sUnknown_0203A120->unk3BA0)
+ return 0xFFFF;
+ else
+ return sUnknown_0203A120->unk3984[arg0];
+}
+
+static u16 sub_811F5B0(void)
+{
+ return sUnknown_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))
+ sUnknown_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))
+ sUnknown_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 < sUnknown_0203A120->unk2E[alphabeticalGroup]; i++)
+ sUnknown_0203A120->unk3984[totalWords++] = sUnknown_0203A120->unk64[alphabeticalGroup][i];
+
+ return totalWords;
+}
+
+static bool8 sub_811F72C(u8 arg0)
+{
+ int i;
+ for (i = 0; i < sUnknown_0203A120->unk0; i++)
+ {
+ if (sUnknown_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 e1d94889a..a9b6001ec 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);
@@ -606,7 +606,7 @@ static void CB2_EggHatch_1(void)
case 1:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(sEggHatchData->windowId, 0);
+ FillWindowPixelBuffer(sEggHatchData->windowId, PIXEL_FILL(0));
sEggHatchData->CB2_PalCounter = 0;
sEggHatchData->CB2_state++;
}
@@ -857,7 +857,7 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8
static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
{
- FillWindowPixelBuffer(windowId, 0xFF);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
sEggHatchData->textColor[0] = 0;
sEggHatchData->textColor[1] = 5;
sEggHatchData->textColor[2] = 6;
diff --git a/src/electric.c b/src/electric.c
index 142a9ca09..5e7729842 100644
--- a/src/electric.c
+++ b/src/electric.c
@@ -5,9 +5,6 @@
#include "constants/songs.h"
#include "sound.h"
-extern void sub_810E2C8(struct Sprite *);
-extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
-
static void sub_810A1A8(struct Sprite *);
static void sub_810A1F8(struct Sprite *);
static void sub_810A214(struct Sprite *);
diff --git a/src/event_data.c b/src/event_data.c
index e75c37773..50628f984 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -23,8 +23,8 @@ EWRAM_DATA u16 gSpecialVar_LastTalked = 0;
EWRAM_DATA u16 gSpecialVar_Facing = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxId = 0;
EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
-EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
-EWRAM_DATA static u8 gUnknown_020375FC[16] = {0};
+EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0;
+EWRAM_DATA static u8 gSpecialFlags[16] = {0};
extern u16 *const gSpecialVars[];
@@ -32,7 +32,7 @@ void InitEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags));
memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars));
- memset(gUnknown_020375FC, 0, sizeof(gUnknown_020375FC));
+ memset(gSpecialFlags, 0, sizeof(gSpecialFlags));
}
void ClearTempFieldEventData(void)
@@ -131,13 +131,13 @@ void sub_809D4D8(void)
void sub_809D570(void)
{
VarSet(VAR_EVENT_PICHU_SLOT, 0);
- VarSet(VAR_0x40DE, 0);
- VarSet(VAR_0x40DF, 0);
- VarSet(VAR_0x40E0, 0);
- VarSet(VAR_0x40E1, 0);
- VarSet(VAR_0x40E2, 0);
- VarSet(VAR_0x40E3, 0);
- VarSet(VAR_0x40E4, 0);
+ VarSet(VAR_NEVER_READ_0x40DE, 0);
+ VarSet(VAR_NEVER_READ_0x40DF, 0);
+ VarSet(VAR_NEVER_READ_0x40E0, 0);
+ VarSet(VAR_NEVER_READ_0x40E1, 0);
+ VarSet(VAR_NEVER_READ_0x40E2, 0);
+ VarSet(VAR_NEVER_READ_0x40E3, 0);
+ VarSet(VAR_NEVER_READ_0x40E4, 0);
}
void DisableResetRTC(void)
@@ -199,7 +199,7 @@ u8 *GetFlagPointer(u16 id)
else if (id < SPECIAL_FLAGS_START)
return &gSaveBlock1Ptr->flags[id / 8];
else
- return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8];
+ return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8];
}
u8 FlagSet(u16 id)
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 00dce4c7d..680191bb3 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -32,8 +32,7 @@
#include "constants/map_types.h"
#include "constants/maps.h"
#include "constants/songs.h"
-
-extern bool32 TryStartMatchCall(void);
+#include "match_call.h"
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0;
@@ -147,7 +146,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)
@@ -557,9 +556,9 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(EventScript_EggHatch);
return TRUE;
}
- if (sub_813B3B0() == TRUE)
+ if (UnusualWeatherHasExpired() == TRUE)
{
- ScriptContext1_SetupScript(gUnknown_08273D1F);
+ ScriptContext1_SetupScript(UnusualWeather_EventScript_EndEventAndCleanup_1);
return TRUE;
}
if (ShouldDoBrailleRegicePuzzle() == TRUE)
@@ -567,27 +566,27 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
ScriptContext1_SetupScript(IslandCave_EventScript_238EAF);
return TRUE;
}
- if (is_tile_that_overrides_player_control() == TRUE)
+ if (ShouldDoWallyCall() == TRUE)
{
ScriptContext1_SetupScript(MauvilleCity_EventScript_1DF7BA);
return TRUE;
}
- if (sub_8138120() == TRUE)
+ if (ShouldDoWinonaCall() == TRUE)
{
ScriptContext1_SetupScript(Route119_EventScript_1F49EC);
return TRUE;
}
- if (sub_8138168() == TRUE)
+ if (ShouldDoScottCall() == TRUE)
{
ScriptContext1_SetupScript(LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6);
return TRUE;
}
- if (sub_81381B0() == TRUE)
+ if (ShouldDoRoxanneCall() == TRUE)
{
ScriptContext1_SetupScript(RustboroCity_Gym_EventScript_21307B);
return TRUE;
}
- if (sub_81381F8() == TRUE)
+ if (ShouldDoRivalRayquazaCall() == TRUE)
{
ScriptContext1_SetupScript(MossdeepCity_SpaceCenter_2F_EventScript_224175);
return TRUE;
diff --git a/src/field_effect.c b/src/field_effect.c
index e7c0b39b9..ee9dcb987 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -240,12 +240,6 @@ static IWRAM_DATA u8 sActiveList[32];
extern u8 *gFieldEffectScriptPointers[];
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
-extern void sub_81555D8(u8, u8);
-extern void pal_fill_for_maplights(void);
-extern void sub_80E1558(u8);
-extern void sub_80E1570(void);
-extern bool8 sub_80E1584(void);
-extern void WarpFadeScreen(void);
// .rodata
const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
@@ -2443,7 +2437,7 @@ static void sub_80B8410(struct Task *task)
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
- if (is_map_type_1_2_3_5_or_6(GetCurrentMapType()) == TRUE)
+ if (IsMapTypeOutdoors(GetCurrentMapType()) == TRUE)
{
taskId = CreateTask(sub_80B8554, 0xff);
} else
@@ -2620,7 +2614,7 @@ static void sub_80B8874(u16 offs)
dest = (u16 *)(VRAM + 0x140 + offs);
for (i = 0; i < 0x140; i++, dest++)
{
- *dest = gFieldMoveStreaksTilemap[i] | 0xf000;
+ *dest = gFieldMoveStreaksTilemap[i] | METATILE_ELEVATION_MASK;
}
}
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 299aafaf2..1c554b6c6 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -4,9 +4,7 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-
-extern bool32 IsMatchCallTaskActive(void);
-extern void StartMatchCallFromScript(u8*);
+#include "match_call.h"
static EWRAM_DATA u8 sFieldMessageBoxMode = 0;
@@ -33,7 +31,7 @@ static void sub_8098154(u8 taskId)
task->data[0]++;
break;
case 1:
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
task->data[0]++;
break;
case 2:
@@ -127,7 +125,7 @@ static void textbox_auto_and_task_add(void)
void HideFieldMessageBox(void)
{
task_del_textbox();
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
sFieldMessageBoxMode = 0;
}
@@ -146,7 +144,7 @@ bool8 IsFieldMessageBoxHidden(void)
void sub_8098358(void)
{
task_del_textbox();
- NewMenuHelpers_DrawStdWindowFrame(0, 1);
+ DrawStdWindowFrame(0, 1);
sFieldMessageBoxMode = 0;
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index b1291f0ce..a070fe0e1 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1918,7 +1918,7 @@ static bool8 Fishing9(struct Task *task)
static bool8 Fishing10(struct Task *task)
{
AlignFishingAnimationFrames();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_PokemonOnHook, 1, 0, 2, 1, 3);
task->tStep++;
task->tFrameCounter = 0;
@@ -1944,7 +1944,7 @@ static bool8 Fishing11(struct Task *task)
sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
task->tFrameCounter++;
return FALSE;
}
@@ -1966,7 +1966,7 @@ static bool8 Fishing12(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_NotEvenANibble, 1, 0, 2, 1, 3);
task->tStep = FISHING_SHOW_RESULT;
return TRUE;
@@ -1977,7 +1977,7 @@ static bool8 Fishing13(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_ItGotAway, 1, 0, 2, 1, 3);
task->tStep++;
return TRUE;
@@ -2017,7 +2017,7 @@ static bool8 Fishing16(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
UnfreezeEventObjects();
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sub_80ED950(0);
DestroyTask(FindTaskIdByFunc(Task_Fishing));
}
@@ -2125,7 +2125,7 @@ void sub_808D194(void)
sub_808D1FC(CreateTask(sub_808D1FC, 0));
}
-bool8 sub_808D1B4(void)
+bool32 sub_808D1B4(void)
{
return FuncIsActiveTask(sub_808D1FC);
}
@@ -2135,7 +2135,7 @@ void sub_808D1C8(void)
sub_808D094(CreateTask(sub_808D094, 0));
}
-bool8 sub_808D1E8(void)
+bool32 sub_808D1E8(void)
{
return FuncIsActiveTask(sub_808D094);
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
index d49ce3a4e..1d54333fb 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -139,11 +139,11 @@ static void FieldUpdateRegionMap(void)
sFieldRegionMapHandler->state++;
break;
case 1:
- SetWindowBorderStyle(1, 0, 0x27, 0xd);
+ DrawStdFrameWithCustomTileAndPalette(1, 0, 0x27, 0xd);
offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38);
AddTextPrinterParameterized(1, 1, gText_Hoenn, offset, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
- SetWindowBorderStyle(0, 0, 0x27, 0xd);
+ DrawStdFrameWithCustomTileAndPalette(0, 0, 0x27, 0xd);
PrintRegionMapSecName();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
sFieldRegionMapHandler->state++;
@@ -196,13 +196,13 @@ static void PrintRegionMapSecName(void)
{
if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
else
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 3);
}
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 93017f125..b6dcf212c 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -10,7 +10,6 @@
#include "field_screen_effect.h"
#include "field_special_scene.h"
#include "field_weather.h"
-// #include "fldeff_flash.h"
#include "gpu_regs.h"
#include "link.h"
#include "link_rfu.h"
@@ -31,22 +30,9 @@
#include "constants/event_object_movement_constants.h"
#include "constants/songs.h"
#include "constants/rgb.h"
-
-extern bool32 sub_81D6534(void);
-extern bool8 walkrun_is_standing_still(void);
-extern void ScriptUnfreezeEventObjects(void);
-extern void sub_80FB768(void);
-extern void sub_808D194(void);
-extern void sub_808D1C8(void);
-extern bool32 sub_808D1B4(void);
-extern bool32 sub_808D1E8(void);
-extern void sub_80B6B68(void);
-extern void sub_80B6E4C(u8, u8);
-extern void sub_80B75D8(u8);
-extern void sub_80B7A74(u8);
-extern void sub_808C0A8(u8);
-extern u8 GetMapPairFadeToType(u8, u8);
-extern u8 GetMapPairFadeFromType(u8, u8);
+#include "trainer_hill.h"
+#include "event_obj_lock.h"
+#include "fldeff.h"
extern const u16 gUnknown_82EC7CC[];
@@ -255,7 +241,7 @@ void sub_80AF2B4(u8 taskId)
break;
case 2:
sub_8009F18();
- sub_8086C2C();
+ ResetAllMultiplayerState();
ScriptContext2_Disable();
DestroyTask(taskId);
break;
@@ -503,7 +489,7 @@ void DoWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
@@ -514,7 +500,7 @@ void DoDiveWarp(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = mapldr_default;
CreateTask(sub_80AFA0C, 10);
}
@@ -524,7 +510,7 @@ void sub_80AF79C(void)
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
FadeScreen(FADE_TO_WHITE, 8);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
gFieldCallback = sub_80AF3B0;
CreateTask(sub_80AFA0C, 10);
}
@@ -621,7 +607,7 @@ void sub_80AF948(void)
CreateTask(sub_80AF8E0, 10);
}
-static void sub_80AF96C(u8 taskId)
+static void Task_ReturnToWorldFromLinkRoom(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -654,7 +640,7 @@ static void sub_80AF96C(u8 taskId)
void sub_80AF9F8(void)
{
- CreateTask(sub_80AF96C, 10);
+ CreateTask(Task_ReturnToWorldFromLinkRoom, 10);
}
static void sub_80AFA0C(u8 taskId)
@@ -734,7 +720,7 @@ static void sub_80AFA88(u8 taskId)
case 4:
TryFadeOutOldMapMusic();
WarpFadeScreen();
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
task->data[0] = 0;
task->func = sub_80AFA0C;
break;
@@ -771,7 +757,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_special_scene.c b/src/field_special_scene.c
index 2b518808b..e059e6ef8 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -301,7 +301,7 @@ void Task_HandlePorthole(u8 taskId)
break;
case EXIT_PORTHOLE: // exit porthole.
FlagClear(FLAG_SPECIAL_FLAG_0x4001);
- FlagClear(FLAG_SPECIAL_FLAG_0x4000);
+ FlagClear(FLAG_HIDE_MAP_NAME_POPUP);
SetWarpDestinationToDynamicWarp(0);
DoDiveWarp();
DestroyTask(taskId);
@@ -338,7 +338,7 @@ void sub_80FB7A4(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
FlagSet(FLAG_SPECIAL_FLAG_0x4001);
- FlagSet(FLAG_SPECIAL_FLAG_0x4000);
+ FlagSet(FLAG_HIDE_MAP_NAME_POPUP);
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
sub_80FB59C();
sub_80AF8B8();
diff --git a/src/field_specials.c b/src/field_specials.c
index 3c26085dd..436b06f53 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -54,6 +54,8 @@
#include "constants/moves.h"
#include "constants/vars.h"
#include "constants/battle_frontier.h"
+#include "constants/weather.h"
+#include "palette.h"
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
@@ -79,9 +81,6 @@ extern const u16 gEventObjectPalette17[];
extern const u16 gEventObjectPalette33[];
extern const u16 gEventObjectPalette34[];
-extern void LoadPalette(const void *src, u32 offset, u16 size); // incorrect signature, needed to match
-extern void BlendPalettes(u32, u8, u16);
-extern void FieldInitRegionMap(MainCallback callback);
void UpdateMovedLilycoveFanClubMembers(void);
void sub_813BF60(void);
@@ -359,17 +358,17 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
return 0;
}
-bool32 is_tile_that_overrides_player_control(void)
+bool32 ShouldDoWallyCall(void)
{
if (FlagGet(FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL))
{
switch (gMapHeader.mapType)
{
- case 1:
- case 2:
- case 3:
- case 6:
- if (++(*GetVarPointer(VAR_0x40F2)) < 0xFA)
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WALLY_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -386,7 +385,7 @@ bool32 is_tile_that_overrides_player_control(void)
return TRUE;
}
-bool32 sub_8138120(void)
+bool32 ShouldDoWinonaCall(void)
{
if (FlagGet(FLAG_REGISTER_WINONA_POKENAV))
{
@@ -395,8 +394,8 @@ bool32 sub_8138120(void)
case MAP_TYPE_TOWN:
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
- case MAP_TYPE_6:
- if (++(*GetVarPointer(VAR_0x40F3)) < 10)
+ case MAP_TYPE_OCEAN_ROUTE:
+ if (++(*GetVarPointer(VAR_WINONA_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -413,7 +412,7 @@ bool32 sub_8138120(void)
return TRUE;
}
-bool32 sub_8138168(void)
+bool32 ShouldDoScottCall(void)
{
if (FlagGet(FLAG_SCOTT_CALL_NATIONAL_DEX))
{
@@ -423,7 +422,7 @@ bool32 sub_8138168(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F5)) < 0xA)
+ if (++(*GetVarPointer(VAR_SCOTT_CALL_STEP_COUNTER)) < 10)
{
return FALSE;
}
@@ -440,7 +439,7 @@ bool32 sub_8138168(void)
return TRUE;
}
-bool32 sub_81381B0(void)
+bool32 ShouldDoRoxanneCall(void)
{
if (FlagGet(FLAG_ENABLE_ROXANNE_FIRST_CALL))
{
@@ -450,7 +449,7 @@ bool32 sub_81381B0(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F4)) < 0xFA)
+ if (++(*GetVarPointer(VAR_ROXANNE_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -467,7 +466,7 @@ bool32 sub_81381B0(void)
return TRUE;
}
-bool32 sub_81381F8(void)
+bool32 ShouldDoRivalRayquazaCall(void)
{
if (FlagGet(FLAG_DEFEATED_MAGMA_SPACE_CENTER))
{
@@ -477,7 +476,7 @@ bool32 sub_81381F8(void)
case 2:
case 3:
case 6:
- if (++(*GetVarPointer(VAR_0x40F6)) < 0xFA)
+ if (++(*GetVarPointer(VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER)) < 250)
{
return FALSE;
}
@@ -590,7 +589,9 @@ void SpawnLinkPartnerEventObject(void)
static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum)
{
- paletteNum += 6;
+ u8 adjustedPaletteNum;
+ // Note: This temp var is necessary; paletteNum += 6 doesn't match.
+ adjustedPaletteNum = paletteNum + 6;
if (graphicsId == EVENT_OBJ_GFX_LINK_RS_BRENDAN ||
graphicsId == EVENT_OBJ_GFX_LINK_RS_MAY ||
graphicsId == EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL ||
@@ -601,21 +602,21 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent
{
u8 spriteId = gEventObjects[obj].spriteId;
struct Sprite *sprite = &gSprites[spriteId];
- sprite->oam.paletteNum = paletteNum;
+ sprite->oam.paletteNum = adjustedPaletteNum;
switch (graphicsId)
{
case EVENT_OBJ_GFX_LINK_RS_BRENDAN:
- LoadPalette(gEventObjectPalette33, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_LINK_RS_MAY:
- LoadPalette(gEventObjectPalette34, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL:
- LoadPalette(gEventObjectPalette8, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
case EVENT_OBJ_GFX_RIVAL_MAY_NORMAL:
- LoadPalette(gEventObjectPalette17, 0x100 + paletteNum * 16, 0x20);
+ LoadPalette(gEventObjectPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20);
break;
}
}
@@ -886,8 +887,8 @@ static void PetalburgGymFunc(u8 a0, u16 a1)
}
for (i = 0; i < nDoors; i++)
{
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
- MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
}
@@ -1099,7 +1100,7 @@ static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy)
tileId = 0x27e;
}
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
}
void DoPCTurnOffEffect(void)
@@ -1140,7 +1141,7 @@ static void PCTurnOffEffect(void)
{
tileId = 0x259;
}
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
DrawWholeMapView();
}
@@ -1515,7 +1516,7 @@ bool8 FoundBlackGlasses(void)
void SetRoute119Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(20);
}
@@ -1523,7 +1524,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE)
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE)
{
SetSav1Weather(21);
}
@@ -1859,7 +1860,7 @@ void sub_8139B60(void)
void sub_8139C10(void)
{
- sub_8198070(gUnknown_0203AB5E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
RemoveWindow(gUnknown_0203AB5E);
}
@@ -1891,7 +1892,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -1901,7 +1902,7 @@ static void sub_8139C80(u8 taskId)
{
for (x = 0; x < 3; x++)
{
- MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00);
+ MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | METATILE_COLLISION_MASK);
}
}
}
@@ -2644,8 +2645,8 @@ static void sub_813A570(u8 taskId)
sub_813A738(taskId);
DestroyListMenuTask(task->data[14], NULL, NULL);
Free(gUnknown_0203AB64);
- sub_8198070(task->data[13], 1);
- FillWindowPixelBuffer(task->data[13], 0);
+ ClearStdWindowAndFrameToTransparent(task->data[13], 1);
+ FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
CopyWindowToVram(task->data[13], 2);
RemoveWindow(task->data[13]);
DestroyTask(taskId);
@@ -2889,7 +2890,7 @@ void sub_813A958(void)
void sub_813A988(void)
{
- sub_8198070(gUnknown_0203AB6D, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6D, TRUE);
RemoveWindow(gUnknown_0203AB6D);
}
@@ -2941,7 +2942,7 @@ void sub_813AA18(void)
void sub_813AA44(void)
{
- sub_8198070(gUnknown_0203AB6E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6E, TRUE);
RemoveWindow(gUnknown_0203AB6E);
}
@@ -3000,7 +3001,7 @@ static void sub_813AA60(u16 a0, u16 a1)
if (a0 > 2 && a0 < 7)
{
- FillWindowPixelRect(0, 0x11, 0, 0, 216, 32);
+ FillWindowPixelRect(0, PIXEL_FILL(1), 0, 0, 216, 32);
switch (a0)
{
case 3:
@@ -3139,7 +3140,7 @@ static void sub_813AD34(u8 a0, u16 a1)
if (a0 == 9 || a0 == 10)
{
- FillWindowPixelRect(gUnknown_0203AB5E, 0x11, 0, 0, 96, 48);
+ FillWindowPixelRect(gUnknown_0203AB5E, PIXEL_FILL(1), 0, 0, 96, 48);
if (a0 == 10)
{
AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gUnknown_085B3254[a1], 0, 1, 0, NULL);
@@ -3153,7 +3154,7 @@ static void sub_813AD34(u8 a0, u16 a1)
void sub_813ADB8(void)
{
- sub_8198070(gUnknown_0203AB5E, TRUE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE);
RemoveWindow(gUnknown_0203AB5E);
}
@@ -3225,8 +3226,8 @@ void sub_813AF48(void)
struct Task *task = &gTasks[taskId];
DestroyListMenuTask(task->data[14], NULL, NULL);
Free(gUnknown_0203AB64);
- sub_8198070(task->data[13], TRUE);
- FillWindowPixelBuffer(task->data[13], 0);
+ ClearStdWindowAndFrameToTransparent(task->data[13], TRUE);
+ FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0));
ClearWindowTilemap(task->data[13]);
CopyWindowToVram(task->data[13], 2);
RemoveWindow(task->data[13]);
@@ -3378,7 +3379,7 @@ u16 get_unknown_box_id(void)
return gUnknown_0203AB6F;
}
-bool32 sub_813B21C(void)
+bool8 sub_813B21C(void)
{
if (FlagGet(FLAG_SYS_STORAGE_UNKNOWN_FLAG) == FALSE)
{
@@ -3420,40 +3421,59 @@ bool8 sub_813B260(void)
return FALSE;
}
-void sub_813B2E4(void)
+void CreateUnusualWeatherEvent(void)
{
u16 randomValue = Random();
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE)
{
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
}
else if ((randomValue & 1) == 0)
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 1);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START);
}
else
{
randomValue = Random();
- VarSet(VAR_0x4037, (randomValue & 7) + 9);
- }
-}
-
-bool32 sub_813B374(void)
-{
- static const u8 gUnknown_085B3400[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START);
+ }
+}
+
+// Saves the map name for the current unusual weather location in gStringVar1, then
+// returns TRUE if the weather is for Kyogre, and FALSE if it's for Groudon.
+bool32 GetUnusualWeatherMapNameAndType(void)
+{
+ static const u8 sUnusualWeatherMapNumbers[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var = VarGet(VAR_0x4037);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0);
+ GetMapName(gStringVar1, sUnusualWeatherMapNumbers[unusualWeather - 1], 0);
- if (var < 9)
+ if (unusualWeather < UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START)
{
return FALSE;
}
@@ -3463,21 +3483,39 @@ bool32 sub_813B374(void)
}
}
-bool8 sub_813B3B0(void)
-{
- static const u8 gUnknown_085B3410[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c };
+bool8 UnusualWeatherHasExpired(void)
+{
+ // Duplicate array.
+ static const u8 sUnusualWeatherMapNumbers_2[] = {
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE114),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE115),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE116),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE118),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE105),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE125),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE127),
+ MAP_NUM(ROUTE129),
+ MAP_NUM(ROUTE129)
+ };
- u16 var1 = VarGet(VAR_0x4038);
- u16 var2 = VarGet(VAR_0x4037);
+ u16 steps = VarGet(VAR_UNUSUAL_WEATHER_STEP_COUNTER);
+ u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
- if (!var2)
+ if (unusualWeather == UNUSUAL_WEATHER_NONE)
{
return FALSE;
}
- if (++var1 > 999)
+ if (++steps > 999)
{
- VarSet(VAR_0x4038, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0);
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE))
{
switch (gSaveBlock1Ptr->location.mapNum)
@@ -3487,7 +3525,7 @@ bool8 sub_813B3B0(void)
case MAP_NUM(MARINE_CAVE_END):
case MAP_NUM(TERRA_CAVE_ENTRANCE):
case MAP_NUM(TERRA_CAVE_END):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
@@ -3502,34 +3540,34 @@ bool8 sub_813B3B0(void)
case MAP_NUM(UNDERWATER5):
case MAP_NUM(UNDERWATER6):
case MAP_NUM(UNDERWATER7):
- VarSet(VAR_0x4039, 1);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1);
return FALSE;
default:
break;
}
}
- if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3410[var2 - 1] &&
+ if (gSaveBlock1Ptr->location.mapNum == sUnusualWeatherMapNumbers_2[unusualWeather - 1] &&
gSaveBlock1Ptr->location.mapGroup == 0)
{
return TRUE;
}
else
{
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
return FALSE;
}
}
else
{
- VarSet(VAR_0x4038, var1);
+ VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, steps);
return FALSE;
}
}
-void sub_813B484(void)
+void Unused_SetWeatherSunny(void)
{
- sub_80AB104(2);
+ SetCurrentAndNextWeather(WEATHER_SUNNY);
}
bool32 sub_813B490(void)
@@ -3576,7 +3614,7 @@ bool32 sub_813B4E0(void)
bool32 sub_813B514(void)
{
- if (!VarGet(VAR_0x403F))
+ if (!VarGet(VAR_ALWAYS_ZERO_0x403F))
{
return FALSE;
}
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..a96b71c0f 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);
}
@@ -383,15 +383,15 @@ u8 MapGridGetZCoordAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 0;
}
- return block >> 12;
+ return block >> METATILE_ELEVATION_SHIFT;
}
u8 MapGridIsImpassableAt(int x, int y)
@@ -411,13 +411,13 @@ u8 MapGridIsImpassableAt(int x, int y)
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
block = gMapHeader.mapLayout->border[i];
- block |= 0xc00;
+ block |= METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
return 1;
}
- return (block & 0xc00) >> 10;
+ return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT;
}
u32 MapGridGetMetatileIdAt(int x, int y)
@@ -439,18 +439,19 @@ u32 MapGridGetMetatileIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
i = (x + 1) & 1;
i += ((y + 1) & 1) * 2;
- block = mapLayout->border[i] | 0xc00;
+ block = mapLayout->border[i] | METATILE_COLLISION_MASK;
}
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
border = gMapHeader.mapLayout->border;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
block2 = gMapHeader.mapLayout->border[j];
- block2 |= 0xc00;
- return block2 & block;
+ // This OR is completely pointless.
+ block2 |= METATILE_COLLISION_MASK;
+ return block2 & METATILE_ID_MASK;
}
- return block & 0x3ff;
+ return block & METATILE_ID_MASK;
}
u32 MapGridGetMetatileBehaviorAt(int x, int y)
@@ -464,7 +465,7 @@ u8 MapGridGetMetatileLayerTypeAt(int x, int y)
{
u16 metatile;
metatile = MapGridGetMetatileIdAt(x, y);
- return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12;
+ return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT;
}
void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
@@ -474,7 +475,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
&& y >= 0 && y < gBackupMapLayout.height)
{
i = x + y * gBackupMapLayout.width;
- gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff);
+ gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK);
}
}
@@ -654,7 +655,7 @@ int GetMapBorderIdAt(int x, int y)
i = gBackupMapLayout.width;
i *= y;
block = gBackupMapLayout.map[x + i];
- if (block == 0x3ff)
+ if (block == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -664,8 +665,8 @@ int GetMapBorderIdAt(int x, int y)
mapLayout = gMapHeader.mapLayout;
j = (x + 1) & 1;
j += ((y + 1) & 1) * 2;
- block2 = 0xc00 | mapLayout->border[j];
- if (block2 == 0x3ff)
+ block2 = METATILE_COLLISION_MASK | mapLayout->border[j];
+ if (block2 == METATILE_ID_UNDEFINED)
{
goto fail;
}
@@ -775,7 +776,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;
@@ -921,9 +922,9 @@ void sub_8088B94(int x, int y, int a2)
if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
{
if (a2 != 0)
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= 0xC00;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK;
else
- gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= 0xF3FF;
+ gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~METATILE_COLLISION_MASK;
}
}
@@ -937,7 +938,7 @@ static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth,
else
mapMetatilePtr += mapWidth;
- if (sub_80FADE4(*mapMetatilePtr & 0x3FF, yMode) == 1)
+ if (sub_80FADE4(*mapMetatilePtr & METATILE_ID_MASK, yMode) == 1)
return TRUE;
return FALSE;
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 348a1f46c..a715608c5 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -20,7 +20,6 @@
#include "constants/field_effects.h"
#include "constants/songs.h"
-extern void ScriptUnfreezeEventObjects(void);
extern bool8 IsMewPlayingHideAndSeek(void);
extern struct MapPosition gPlayerFacingPosition;
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
index 3d00fb162..7ab2db4db 100644
--- a/src/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
@@ -7,7 +7,7 @@
static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
-static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
+static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag)
{
s16 r5 = gTasks[taskId].data[4] - 1;
s16 r3 = gTasks[taskId].data[5] - 1;
@@ -26,9 +26,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[r4 + 1]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[0]);
}
}
}
@@ -44,9 +44,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c)
if (list[2 - r4] == metatileId)
{
if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[1 - r4]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[2]);
}
}
}
@@ -76,13 +76,13 @@ static void sub_80E1444(u8 taskId)
sub_80E12E8(taskId, gUnknown_08589AC0, 0);
break;
case 2:
- sub_80E12E8(taskId, gUnknown_08589AC6, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AC6, METATILE_COLLISION_MASK);
break;
case 3:
sub_80E12E8(taskId, gUnknown_08589ACC, 0);
break;
case 4:
- sub_80E12E8(taskId, gUnknown_08589AD2, 0xC00);
+ sub_80E12E8(taskId, gUnknown_08589AD2, METATILE_COLLISION_MASK);
break;
case 5:
sub_80E12E8(taskId, gUnknown_08589AD8, 0);
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index df4576a7f..d4d6075f3 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -1126,7 +1126,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10);
break;
case 734:
ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
@@ -1137,7 +1137,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20);
break;
case 756:
gSpecialVar_Result = 1;
@@ -1145,7 +1145,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 757:
gSpecialVar_Result = 2;
@@ -1153,7 +1153,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
case 758:
gSpecialVar_Result = 3;
@@ -1161,7 +1161,7 @@ void GetShieldToyTVDecorationInfo(void)
if (!VarGet(VAR_CURRENT_SECRET_BASE))
return;
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80);
break;
}
}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index adec780b3..eca7d045b 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -86,7 +86,7 @@ static void sub_8161724(u8 taskId)
sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA;
sub_81B0FCC(gUnknown_0203CEC8.unkA, 1);
- sub_8198070(0x6, FALSE);
+ ClearStdWindowAndFrameToTransparent(0x6, FALSE);
ClearWindowTilemap(0x6);
display_pokemon_menu_message(0);
gTasks[taskId].func = sub_81B1370;
diff --git a/src/flying.c b/src/flying.c
index 48df12a06..a157582e9 100644
--- a/src/flying.c
+++ b/src/flying.c
@@ -4,6 +4,9 @@
#include "trig.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
+#include "random.h"
+
+extern const struct SpriteTemplate gUnknown_085973E8;
void sub_810DE70(struct Sprite *);
void sub_810DFA8(struct Sprite *);
@@ -11,22 +14,29 @@ void sub_810E044(struct Sprite *);
void sub_810E13C(struct Sprite *);
void sub_810E1C8(struct Sprite *);
void sub_810E314(struct Sprite *);
-extern void sub_810EA4C(struct Sprite *);
-extern void sub_810EAA0(struct Sprite *);
-extern void sub_810EC34(struct Sprite *);
-extern void sub_810EC94(struct Sprite *);
-extern void sub_810ED28(struct Sprite *);
-extern void sub_810EE14(struct Sprite *);
-extern void sub_810EEF8(struct Sprite *);
-extern void sub_810F004(struct Sprite *);
-extern void sub_810F084(struct Sprite *);
+void sub_810E520(struct Sprite *);
+void sub_810EB40(struct Sprite *);
+void sub_810EA4C(struct Sprite *);
+void sub_810EAA0(struct Sprite *);
+void sub_810EC34(struct Sprite *);
+void sub_810EC94(struct Sprite *);
+void sub_810ED28(struct Sprite *);
+void sub_810ED70(struct Sprite *);
+void sub_810EDD0(struct Sprite *);
+void sub_810EE14(struct Sprite *);
+void sub_810EEF8(struct Sprite *);
+void sub_810EFA8(struct Sprite *);
+void sub_810F004(struct Sprite *);
+void sub_810F018(struct Sprite *);
+void sub_810F084(struct Sprite *);
+void sub_810F140(struct Sprite *);
static void sub_810DE98(struct Sprite *);
static void sub_810DF18(u8);
static void sub_810E028(struct Sprite *);
static void sub_810E184(struct Sprite *);
static void sub_810E24C(struct Sprite *);
-void sub_810E520(struct Sprite *);
+
const struct SpriteTemplate gUnknown_08596270 =
{
@@ -98,7 +108,7 @@ const union AffineAnimCmd gUnknown_085962EC[] =
const union AffineAnimCmd *const gUnknown_08596314[] =
{
- gUnknown_085962EC,
+ gUnknown_085962EC,
};
const union AffineAnimCmd gUnknown_08596318[] =
@@ -347,7 +357,8 @@ void sub_810DE70(struct Sprite *sprite)
sprite->callback(sprite);
}
-static void sub_810DE98(struct Sprite *sprite) {
+static void sub_810DE98(struct Sprite *sprite)
+{
sprite->pos2.x = Sin(sprite->data[1], 32);
sprite->pos2.y = Cos(sprite->data[1], 8);
sprite->data[1] += 5;
@@ -382,8 +393,7 @@ static void sub_810DF18(u8 taskId)
{
gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
i--;
- }
- while (i > 0);
+ } while (i > 0);
gPlttBufferFaded[base + 0x101] = temp;
}
@@ -514,7 +524,9 @@ static void sub_810E24C(struct Sprite *sprite)
sprite->data[3] &= 0xFF;
}
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
+ if (sprite->pos1.x + sprite->pos2.x < -32
+ || sprite->pos1.x + sprite->pos2.x > 272
+ || sprite->pos1.y + sprite->pos2.y > 160)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0;
DestroyAnimSprite(sprite);
@@ -536,56 +548,62 @@ void sub_810E2C8(struct Sprite *sprite)
}
}
-// FAKEMATCHING
+struct FeatherDanceData
+{
+ u8 unk0_0a:1;
+ u8 unk0_0b:1;
+ u8 unk0_0c:1;
+ u8 unk0_0d:1;
+ u8 unk0_1:4;
+ u8 unk1;
+ u16 unk2;
+ s16 unk4;
+ u16 unk6;
+ u16 unk8;
+ u16 unkA;
+ u8 unkC[2];
+ u16 unkE_0:1;
+ u16 unkE_1:15;
+};
+
void sub_810E314(struct Sprite *sprite)
{
- s16 *data;
- u8 slot;
- s16 spriteCoord;
- int t1, t2;
- u32 arg2;
- u32 matrixNum;
- u8 sinIndex;
- register s16 sinVal asm ("r4");
- register int sinVal2 asm ("r0");
+ u8 battler, matrixNum, sinIndex;
+ s16 spriteCoord, sinVal;
- data = sprite->data;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
if (gBattleAnimArgs[7] & 0x100)
- slot = gBattleAnimAttacker;
+ battler = gBattleAnimAttacker;
else
- slot = gBattleAnimTarget;
+ battler = gBattleAnimTarget;
- if (GetBattlerSide(slot) == B_SIDE_PLAYER)
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0];
- spriteCoord = GetBattlerSpriteCoord(slot, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
- data[4] = sprite->pos1.y << 8;
-
- t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1;
- data[7] = (data[7] & 1) | t1;
- ((u8 *) data)[0] |= 4;
- arg2 = (u16) gBattleAnimArgs[2];
- data[1] = (u8) gBattleAnimArgs[2];
- arg2 <<= 16;
- data[5] = arg2 >> 24;
- data[2] = gBattleAnimArgs[3];
- data[3] = gBattleAnimArgs[4];
- data[6] = gBattleAnimArgs[5];
+ data->unk8 = sprite->pos1.y << 8;
+ data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
+ data->unk0_0c = 1;
+ data->unk2 = gBattleAnimArgs[2] & 0xFF;
+ data->unkA = (gBattleAnimArgs[2] >> 8) & 0xFF;
+ data->unk4 = gBattleAnimArgs[3];
+ data->unk6 = gBattleAnimArgs[4];
+ *(u16*)(data->unkC) = gBattleAnimArgs[5];
- if ((u16) (data[1] - 64) <= 0x7f)
+ if (data->unk2 >= 64 && data->unk2 <= 191)
{
if (!IsContest())
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
else
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
- ((u8 *) data)[14] = data[7] & -2;
+ data->unkE_0 = 0;
- if (!(data[2] & 0x8000))
+ if (!(data->unk4 & 0x8000))
{
sprite->hFlip ^= 1;
sprite->animNum = sprite->hFlip;
@@ -596,10 +614,10 @@ void sub_810E314(struct Sprite *sprite)
}
else
{
- sprite->oam.priority = GetBattlerSpriteBGPriority(slot);
- ((u8 *) data)[14] |= 1;
+ sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
+ data->unkE_0 = 1;
- if (data[2] & 0x8000)
+ if (data->unk4 & 0x8000)
{
sprite->hFlip ^= 1;
sprite->animNum = sprite->hFlip;
@@ -609,20 +627,1291 @@ void sub_810E314(struct Sprite *sprite)
}
}
- t2 = (u16) data[1] >> 6 << 4;
- ((u8 *) data)[0] = (15 & data[0]) | t2;
-
- sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8;
-
+ data->unk0_1 = data->unk2 >> 6;
+ sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = (-sprite->pos2.x >> 1) + data[5];
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
- gOamMatrices[matrixNum].b = sinVal;
- sinVal2 = -sinVal;
- gOamMatrices[matrixNum].c = sinVal2;
+ // The comparison below is completely pointless. 'sprite' is sure to be a valid pointer and
+ // both the 'if' and 'else' parts are exactly the same.
+ // The only reason for this is making sure the compiler generates the exact ASM.
+ if (sprite)
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
+ else
+ {
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+ }
sprite->callback = sub_810E520;
}
+
+#ifdef NONMATCHING
+/*
+Things I can't get to match:
+1. data->unk0_1 bitfield behaviour. The way bits are read is different.
+2. sprite->oam.priority--; sprite->oam.priority++; Nonmatching version tail-merges these, original does not.
+3. sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8; data->unk2 is very weirdly read at seemingly random moments inside the switch.
+4. sinVal r6/r7 mismatch.
+*/
+void sub_810E520(struct Sprite *sprite)
+{
+ u8 matrixNum, sinIndex, var;
+ s16 sinVal = 0;
+ struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
+
+ if (data->unk0_0a)
+ {
+ if (data->unk1-- % 256 == 0)
+ {
+ data->unk0_0a = 0;
+ data->unk1 = 0;
+ }
+ }
+ else
+ {
+ switch (data->unk2 >> 6)
+ {
+ case 0:
+ if (data->unk0_1 == 1)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 3)
+ {
+ data->unk0_0b ^= 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 0;
+ break;
+ case 1:
+ if (data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 1;
+ break;
+ case 2:
+ if (data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 2;
+ break;
+ case 3:
+ if (data->unk0_1 == 2)
+ {
+ data->unk0_0d = 1;
+ }
+ else if (data->unk0_1 == 0)
+ {
+ data->unk0_0b ^= 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = 1;
+ sprite->animEnded = 0;
+ if (data->unk0_0c)
+ {
+ if (!IsContest())
+ {
+ if (!data->unkE_0)
+ sprite->oam.priority--;
+ else
+ sprite->oam.priority++;
+ }
+ else
+ {
+ if (!data->unkE_0)
+ sprite->subpriority -= 12;
+ else
+ sprite->subpriority += 12;
+ }
+ data->unkE_0 ^= 1;
+ }
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 3;
+ break;
+ }
+
+ var = data->unkC[data->unk0_0b];
+ sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8;
+ matrixNum = sprite->oam.matrixNum;
+
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
+
+ data->unk8 += data->unk6;
+ sprite->pos1.y = data->unk8 >> 8;
+ if (data->unk4 & 0x8000)
+ data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
+ else
+ data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
+
+ if (sprite->pos1.y + sprite->pos2.y > data->unkE_1)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_810E2C8;
+ }
+ }
+}
+#else
+NAKED
+void sub_810E520(struct Sprite *sprite)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ adds r5, r0, 0\n\
+ movs r6, 0\n\
+ adds r4, r5, 0\n\
+ adds r4, 0x2E\n\
+ ldrb r2, [r4]\n\
+ movs r7, 0x1\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E55A\n\
+ ldrb r0, [r4, 0x1]\n\
+ adds r1, r0, 0\n\
+ adds r1, 0xFF\n\
+ strb r1, [r4, 0x1]\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0810E54E\n\
+ b _0810EA36\n\
+_0810E54E:\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810EA36\n\
+_0810E55A:\n\
+ ldrh r0, [r4, 0x2]\n\
+ lsrs r1, r0, 6\n\
+ mov r12, r0\n\
+ cmp r1, 0x1\n\
+ bne _0810E566\n\
+ b _0810E68A\n\
+_0810E566:\n\
+ cmp r1, 0x1\n\
+ bgt _0810E570\n\
+ cmp r1, 0\n\
+ beq _0810E57E\n\
+ b _0810E97C\n\
+_0810E570:\n\
+ cmp r1, 0x2\n\
+ bne _0810E576\n\
+ b _0810E77E\n\
+_0810E576:\n\
+ cmp r1, 0x3\n\
+ bne _0810E57C\n\
+ b _0810E872\n\
+_0810E57C:\n\
+ b _0810E97C\n\
+_0810E57E:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x1\n\
+ bne _0810E592\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E680\n\
+_0810E592:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x3\n\
+ bne _0810E5B4\n\
+ lsls r0, r2, 30\n\
+ lsrs r0, 31\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ movs r1, 0x3\n\
+ negs r1, r1\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ orrs r1, r7\n\
+ strb r1, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E680\n\
+_0810E5B4:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E680\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E672\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E642\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E628\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E660\n\
+_0810E628:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E660\n\
+_0810E642:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E656\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E65E\n\
+_0810E656:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E65E:\n\
+ strb r0, [r1]\n\
+_0810E660:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E672:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E680:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ b _0810E97C\n\
+_0810E68A:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0\n\
+ bne _0810E698\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ b _0810E6A0\n\
+_0810E698:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x2\n\
+ bne _0810E6A8\n\
+ adds r0, r2, 0\n\
+_0810E6A0:\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E774\n\
+_0810E6A8:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E774\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E766\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E736\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E71C\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E754\n\
+_0810E71C:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E754\n\
+_0810E736:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E74A\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E752\n\
+_0810E74A:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E752:\n\
+ strb r0, [r1]\n\
+_0810E754:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E766:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E774:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x10\n\
+ b _0810E978\n\
+_0810E77E:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x3\n\
+ bne _0810E78C\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ b _0810E794\n\
+_0810E78C:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x1\n\
+ bne _0810E79C\n\
+ adds r0, r2, 0\n\
+_0810E794:\n\
+ orrs r0, r7\n\
+ strb r0, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E868\n\
+_0810E79C:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E868\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E85A\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E82A\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E810\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E848\n\
+_0810E810:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E848\n\
+_0810E82A:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E83E\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E846\n\
+_0810E83E:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E846:\n\
+ strb r0, [r1]\n\
+_0810E848:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E85A:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E868:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x20\n\
+ b _0810E978\n\
+_0810E872:\n\
+ lsls r1, r2, 24\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0x2\n\
+ bne _0810E882\n\
+ movs r0, 0x8\n\
+ orrs r0, r2\n\
+ strb r0, [r4]\n\
+ b _0810E970\n\
+_0810E882:\n\
+ lsrs r0, r1, 28\n\
+ cmp r0, 0\n\
+ bne _0810E8A4\n\
+ lsls r0, r2, 30\n\
+ lsrs r0, 31\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ movs r1, 0x3\n\
+ negs r1, r1\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ orrs r1, r7\n\
+ strb r1, [r4]\n\
+ strb r6, [r4, 0x1]\n\
+ b _0810E970\n\
+_0810E8A4:\n\
+ movs r0, 0x8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0810E970\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x3F\n\
+ ldrb r2, [r3]\n\
+ lsls r1, r2, 31\n\
+ lsrs r1, 31\n\
+ movs r6, 0x1\n\
+ eors r1, r6\n\
+ ands r1, r7\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ mov r8, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ lsls r0, 31\n\
+ lsrs r0, 31\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ movs r1, 0x11\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ strb r0, [r3]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810E962\n\
+ bl IsContest\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0810E932\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E918\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ subs r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E950\n\
+_0810E918:\n\
+ ldrb r2, [r5, 0x5]\n\
+ lsls r1, r2, 28\n\
+ lsrs r1, 30\n\
+ adds r1, 0x1\n\
+ movs r0, 0x3\n\
+ ands r1, r0\n\
+ lsls r1, 2\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x5]\n\
+ b _0810E950\n\
+_0810E932:\n\
+ ldrb r1, [r4, 0xE]\n\
+ mov r0, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810E946\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0xC\n\
+ b _0810E94E\n\
+_0810E946:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0xC\n\
+_0810E94E:\n\
+ strb r0, [r1]\n\
+_0810E950:\n\
+ ldrb r2, [r4, 0xE]\n\
+ lsls r0, r2, 31\n\
+ lsrs r0, 31\n\
+ eors r0, r6\n\
+ ands r0, r7\n\
+ mov r1, r8\n\
+ ands r1, r2\n\
+ orrs r1, r0\n\
+ strb r1, [r4, 0xE]\n\
+_0810E962:\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x9\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r4]\n\
+ ldrh r1, [r4, 0x2]\n\
+ mov r12, r1\n\
+_0810E970:\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0xF\n\
+ ands r1, r0\n\
+ movs r0, 0x30\n\
+_0810E978:\n\
+ orrs r1, r0\n\
+ strb r1, [r4]\n\
+_0810E97C:\n\
+ ldrb r1, [r4]\n\
+ lsls r1, 30\n\
+ lsrs r1, 31\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r3, =gSineTable\n\
+ mov r2, r12\n\
+ lsls r0, r2, 1\n\
+ adds r0, r3\n\
+ movs r2, 0\n\
+ ldrsh r0, [r0, r2]\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ strh r0, [r5, 0x24]\n\
+ ldrb r2, [r5, 0x3]\n\
+ lsls r2, 26\n\
+ lsrs r2, 27\n\
+ movs r1, 0x24\n\
+ ldrsh r0, [r5, r1]\n\
+ negs r0, r0\n\
+ asrs r0, 1\n\
+ ldrb r1, [r4, 0xA]\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 1\n\
+ adds r1, r3\n\
+ ldrh r6, [r1]\n\
+ ldr r1, =gOamMatrices\n\
+ lsls r2, 3\n\
+ adds r2, r1\n\
+ adds r0, 0x40\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r2, 0x6]\n\
+ strh r0, [r2]\n\
+ strh r6, [r2, 0x2]\n\
+ lsls r0, r6, 16\n\
+ asrs r0, 16\n\
+ negs r0, r0\n\
+ strh r0, [r2, 0x4]\n\
+ ldrh r0, [r4, 0x6]\n\
+ ldrh r2, [r4, 0x8]\n\
+ adds r0, r2\n\
+ strh r0, [r4, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 24\n\
+ strh r0, [r5, 0x22]\n\
+ movs r1, 0x4\n\
+ ldrsh r0, [r4, r1]\n\
+ movs r1, 0x80\n\
+ lsls r1, 8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0810EA0C\n\
+ ldrh r0, [r4, 0x4]\n\
+ subs r1, 0x1\n\
+ ands r1, r0\n\
+ ldrh r0, [r4, 0x2]\n\
+ subs r0, r1\n\
+ movs r1, 0xFF\n\
+ ands r0, r1\n\
+ strh r0, [r4, 0x2]\n\
+ b _0810EA1C\n\
+ .pool\n\
+_0810EA0C:\n\
+ ldrh r0, [r4, 0x4]\n\
+ ldr r1, =0x00007fff\n\
+ ands r1, r0\n\
+ ldrh r2, [r4, 0x2]\n\
+ adds r1, r2\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r4, 0x2]\n\
+_0810EA1C:\n\
+ movs r0, 0x22\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r2, 0x26\n\
+ ldrsh r0, [r5, r2]\n\
+ adds r1, r0\n\
+ ldrh r0, [r4, 0xE]\n\
+ lsrs r0, 1\n\
+ cmp r1, r0\n\
+ blt _0810EA36\n\
+ movs r0, 0\n\
+ strh r0, [r5, 0x2E]\n\
+ ldr r0, =sub_810E2C8\n\
+ str r0, [r5, 0x1C]\n\
+_0810EA36:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ ");
+}
+#endif
+
+void sub_810EA4C(struct Sprite *sprite)
+{
+ sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->callback = TranslateAnimSpriteToTargetMonLocation;
+}
+
+void sub_810EAA0(struct Sprite * sprite)
+{
+ u16 arg;
+ u8 mult;
+
+ if (!gBattleAnimArgs[2])
+ InitSpritePosToAnimAttacker(sprite, 0);
+ else
+ InitSpritePosToAnimTarget(sprite, FALSE);
+
+ if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker))
+ || (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget)))
+ {
+ sprite->pos1.x += 8;
+ }
+
+ SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
+ sprite->pos1.x -= 32;
+ sprite->data[1] = 0x0ccc;
+
+ arg = gBattleAnimArgs[4];
+ mult = 12;
+ sprite->pos2.x += mult * arg;
+ sprite->data[0] = arg;
+ sprite->data[7] = gBattleAnimArgs[3];
+ sprite->callback = sub_810EB40;
+}
+
+void sub_810EB40(struct Sprite *sprite)
+{
+ sprite->pos2.x += sprite->data[1] >> 8;
+
+ if (++sprite->data[0] == 6)
+ {
+ sprite->data[0] = 0;
+ sprite->pos2.x = 0;
+ StartSpriteAnim(sprite, 0);
+ }
+
+ if (--sprite->data[7] == -1)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810EB88(u8 task)
+{
+ if (!(gTasks[task].data[0] % 32))
+ {
+ gAnimVisualTaskCount++;
+
+ gBattleAnimArgs[0] = Sin(gTasks[task].data[0], -13);
+ gBattleAnimArgs[1] = Cos(gTasks[task].data[0], -13);
+ gBattleAnimArgs[2] = 1;
+ gBattleAnimArgs[3] = 3;
+
+ CreateSpriteAndAnimate(&gUnknown_085973E8,
+ GetBattlerSpriteCoord(gBattleAnimTarget, 2),
+ GetBattlerSpriteCoord(gBattleAnimTarget, 3),
+ 3);
+ }
+
+ gTasks[task].data[0] += 8;
+
+ if (gTasks[task].data[0] > 255)
+ DestroyAnimVisualTask(task);
+}
+
+void sub_810EC34(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ InitSpritePosToAnimAttacker(sprite, 1);
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+ ++sprite->data[0];
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_810EC94(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->pos2.y = -sprite->pos1.y - 32;
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos2.y += 10;
+ if (sprite->pos2.y >= 0)
+ ++sprite->data[0];
+ break;
+ case 2:
+ sprite->pos2.y -= 10;
+ if (sprite->pos1.y + sprite->pos2.y < -32)
+ {
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 0;
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_810ED28(struct Sprite *sprite)
+{
+ InitSpritePosToAnimAttacker(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_810ED70;
+ gSprites[GetAnimBattlerSpriteId(0)].invisible = 1;
+}
+
+void sub_810ED70(struct Sprite *sprite)
+{
+ if (sprite->data[0] > 0)
+ {
+ sprite->data[0]--;
+ }
+ else if (sprite->pos1.y + sprite->pos2.y > -32)
+ {
+ sprite->data[2] += sprite->data[1];
+ sprite->pos2.y -= (sprite->data[2] >> 8);
+ }
+ else
+ {
+ sprite->invisible = 1;
+ if (sprite->data[3]++ > 20)
+ sprite->callback = sub_810EDD0;
+ }
+}
+
+void sub_810EDD0(struct Sprite *sprite)
+{
+ sprite->pos2.y += sprite->data[2] >> 8;
+
+ if (sprite->pos1.y + sprite->pos2.y > -32)
+ sprite->invisible = 0;
+
+ if (sprite->pos2.y > 0)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810EE14(struct Sprite *sprite)
+{
+ u32 matrixNum;
+ int t1, t2;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ }
+
+ sprite->data[1] = 512;
+
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->data[2] <= 11)
+ sprite->data[1] -= 40;
+ else
+ sprite->data[1] += 40;
+
+ sprite->data[2]++;
+
+ TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
+
+ matrixNum = sprite->oam.matrixNum;
+
+ t1 = 15616;
+ t2 = t1 / gOamMatrices[matrixNum].d + 1;
+
+ if (t2 > 128)
+ t2 = 128;
+
+ t2 = (64 - t2) / 2;
+ sprite->pos2.y = t2;
+
+ if (sprite->data[2] == 24)
+ {
+ sub_80A749C(sprite);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_810EEF8(struct Sprite *sprite)
+{
+ int v1 = 0x1ff & Random2();
+ int v2 = 0x7f & Random2();
+
+ if (v1 % 2)
+ sprite->data[0] = 736 + v1;
+ else
+ sprite->data[0] = 736 - v1;
+
+ if (v2 % 2)
+ sprite->data[1] = 896 + v2;
+ else
+ sprite->data[1] = 896 - v2;
+
+ sprite->data[2] = gBattleAnimArgs[0];
+
+ if (sprite->data[2])
+ sprite->oam.matrixNum = 8;
+
+ if (gBattleAnimArgs[1] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ }
+
+ sprite->callback = sub_810EFA8;
+}
+
+void sub_810EFA8(struct Sprite *sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos2.x += sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+ else
+ {
+ sprite->pos2.x -= sprite->data[0] >> 8;
+ sprite->pos2.y -= sprite->data[1] >> 8;
+ }
+
+ sprite->data[0] = sprite->data[0];
+ sprite->data[1] -= 32;
+
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+
+ if (++sprite->data[3] == 31)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810F004(struct Sprite *sprite)
+{
+ sprite->data[6] = 0;
+ sprite->data[7] = 64;
+ sprite->callback = sub_810F018;
+}
+
+void sub_810F018(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 8)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible ^= 1;
+ if (++sprite->data[2] > 5 && sprite->invisible)
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_810F084(struct Sprite *sprite)
+{
+ u16 rotation;
+ s16 posx = sprite->pos1.x;
+ s16 posy = sprite->pos1.y;
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+
+ sprite->data[4] = sprite->pos1.x << 4;
+ sprite->data[5] = sprite->pos1.y << 4;
+
+ sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
+ sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
+
+ rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
+ rotation += 49152;
+
+ TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
+
+ sprite->callback = sub_810F140;
+}
+
+void sub_810F140(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[6];
+ sprite->data[5] += sprite->data[7];
+
+ sprite->pos1.x = sprite->data[4] >> 4;
+ sprite->pos1.y = sprite->data[5] >> 4;
+
+ if (sprite->pos1.x > 285 || sprite->pos1.x < -45
+ || sprite->pos1.y > 157 || sprite->pos1.y < -45)
+ DestroySpriteAndMatrix(sprite);
+}
+
+void unref_sub_810F184(u8 taskId)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ gSprites[spriteId].invisible = 1;
+ }
+ else
+ {
+ u8 spriteId = GetAnimBattlerSpriteId(0);
+ gSprites[spriteId].invisible = 0;
+ }
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index 0db546c4d..fff93c3c7 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -1090,7 +1090,7 @@ static void ShowAndPrintWindows(void)
for (i = 0; i < WINDOW_COUNT; i++)
{
PutWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
x = GetStringCenterAlignXOffset(1, gText_SymbolsEarned, 96);
@@ -1116,7 +1116,7 @@ static void ShowAndPrintWindows(void)
static void PrintAreaDescription(u8 cursorArea)
{
- FillWindowPixelBuffer(WINDOW_DESCRIPTION, 0);
+ FillWindowPixelBuffer(WINDOW_DESCRIPTION, PIXEL_FILL(0));
if (cursorArea == CURSOR_AREA_RECORD && !sPassData->hasBattleRecord)
AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, sTextColors[1], 0, sPassAreaDescriptions[0]);
else if (cursorArea != CURSOR_AREA_NOTHING)
@@ -1656,7 +1656,7 @@ static void PrintOnFrontierMap(void)
for (i = 0; i < MAP_WINDOW_COUNT; i++)
{
PutWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
for (i = 0; i < NUM_FRONTIER_FACILITIES; i++)
@@ -1698,7 +1698,7 @@ static void HandleFrontierMapCursorMove(u8 direction)
StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum);
sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x;
sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y;
- FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, 0);
+ FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, PIXEL_FILL(0));
AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description);
for (i = 0; i < 3; i++)
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 6fcbd4ffb..bce7b926f 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -35,8 +35,7 @@
#include "constants/moves.h"
#include "constants/items.h"
#include "constants/event_objects.h"
-
-extern u8 gSelectedOrderFromParty[];
+#include "party_menu.h"
struct FrontierBrainMon
{
@@ -48,8 +47,6 @@ struct FrontierBrainMon
u16 moves[4];
};
-extern void sub_81B8558(void);
-
// This file's functions.
static void sub_81A17A0(void);
static void sub_81A1830(void);
@@ -1044,8 +1041,8 @@ static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x
static void ShowTowerResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleRoomResults);
else if (battleMode == FRONTIER_MODE_DOUBLES)
@@ -1115,8 +1112,8 @@ static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2
static void ShowDomeResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleTourneyResults);
else
@@ -1191,8 +1188,8 @@ static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8
static void ShowPalaceResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_SingleBattleHallResults);
else
@@ -1247,8 +1244,8 @@ static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowPikeResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_BattleChoiceResults);
PrintAligned(gStringVar4, 0);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL);
@@ -1309,8 +1306,8 @@ static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowArenaResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHyphens(10);
StringExpandPlaceholders(gStringVar4, gText_SetKOTourneyResults);
PrintAligned(gStringVar4, 2);
@@ -1395,8 +1392,8 @@ static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8
static void ShowFactoryResultsWindow(u8 battleMode)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
if (battleMode == FRONTIER_MODE_SINGLES)
StringExpandPlaceholders(gStringVar4, gText_BattleSwapSingleResults);
else
@@ -1460,8 +1457,8 @@ static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
static void ShowPyramidResultsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_BattleQuestResults);
PrintAligned(gStringVar4, 2);
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 49, TEXT_SPEED_FF, NULL);
@@ -1483,8 +1480,8 @@ static void ShowLinkContestResultsWindow(void)
s32 x;
gRecordsWindowId = AddWindow(&gUnknown_08611C7C);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, gText_LinkContestResults);
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
@@ -2353,8 +2350,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
void ShowRankingHallRecordsWindow(void)
{
gRecordsWindowId = AddWindow(&gUnknown_08611C84);
- NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ DrawStdWindowFrame(gRecordsWindowId, FALSE);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50);
PutWindowTilemap(gRecordsWindowId);
CopyWindowToVram(gRecordsWindowId, 3);
@@ -2362,7 +2359,7 @@ void ShowRankingHallRecordsWindow(void)
void ScrollRankingHallRecordsWindow(void)
{
- FillWindowPixelBuffer(gRecordsWindowId, 0x11);
+ FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1));
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN);
CopyWindowToVram(gRecordsWindowId, 2);
}
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/hall_of_fame.c b/src/hall_of_fame.c
index 3f217b782..2c31dba01 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -66,8 +66,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
#define HALL_OF_FAME_MAX_TEAMS 50
-extern void ReturnFromHallOfFamePC(void);
-
// this file's functions
static void ClearVramOamPltt_LoadHofPal(void);
static void sub_8174F70(void);
@@ -490,7 +488,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
}
*lastSavedTeam = *sHofMonPtr;
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_TrySaveData;
@@ -570,7 +568,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
gSprites[spriteId].tSpecies = currMon->species;
gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
gTasks[taskId].tMonSpriteId(currMonId) = spriteId;
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating;
}
@@ -649,7 +647,7 @@ static void sub_8173DC0(u8 taskId)
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
}
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
CopyWindowToVram(0, 3);
gTasks[taskId].tFrameCount = 7;
gTasks[taskId].func = sub_8173EA4;
@@ -697,7 +695,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
HallOfFame_PrintPlayerInfo(1, 2);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_ExitOnKeyPressed;
@@ -1066,7 +1064,7 @@ static void Task_HofPC_HandleExit(u8 taskId)
static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
{
sub_8198180(gText_UnkCtrlF800Exit, 8, TRUE);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_HofPC_ExitOnButtonPress;
@@ -1086,7 +1084,7 @@ static void Task_HofPC_ExitOnButtonPress(u8 taskId)
static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2)
{
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
AddTextPrinterParameterized3(0, 1, GetStringCenterAlignXOffset(1, gText_WelcomeToHOF, 0xD0), 1, sUnknown_085E5388, 0, gText_WelcomeToHOF);
CopyWindowToVram(0, 3);
@@ -1099,7 +1097,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u
s32 dexNumber;
s32 width;
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
// dex number
@@ -1180,9 +1178,9 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2)
u32 width;
u16 trainerId;
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PutWindowTilemap(1);
- SetWindowBorderStyle(1, FALSE, 0x21D, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized3(1, 1, 0, 1, sUnknown_085E538C, -1, gText_Name);
width = GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 0x70);
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 2cea5540a..d76f04372 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -7,10 +7,6 @@
#include "script_menu.h"
#include "task.h"
-extern void Overworld_PlaySpecialMapMusic(void);
-extern bool16 ScrSpecial_CreatePCMenu(void);
-extern void ScriptMenu_DisplayPCStartupPrompt(void);
-
static void ReshowPCMenuAfterHallOfFamePC(void);
static void Task_WaitForPaletteFade(u8);
diff --git a/src/ice.c b/src/ice.c
index 34ad572e8..fa1913b96 100644
--- a/src/ice.c
+++ b/src/ice.c
@@ -21,30 +21,29 @@ struct HailStruct {
};
static void sub_810B6C4(struct Sprite *);
-extern void sub_810B848(struct Sprite *);
-extern void AnimIcePunchSwirlingParticle(struct Sprite *);
-extern void AnimIceBeamParticle(struct Sprite *);
-extern void AnimIceEffectParticle(struct Sprite *);
-extern void AnimFlickerIceEffectParticle(struct Sprite *);
-extern void AnimSwirlingSnowball_Step1(struct Sprite *);
-extern void AnimSwirlingSnowball_Step2(struct Sprite *);
-extern void AnimSwirlingSnowball_Step3(struct Sprite *);
-extern void AnimSwirlingSnowball_End(struct Sprite *);
-extern void AnimMoveParticleBeyondTarget(struct Sprite *);
-extern void AnimWiggleParticleTowardsTarget(struct Sprite *);
-extern void AnimWaveFromCenterOfTarget(struct Sprite *);
-extern void InitSwirlingFogAnim(struct Sprite *);
-extern void AnimSwirlingFogAnim(struct Sprite *);
-extern void AnimThrowMistBall(struct Sprite *);
-extern void InitPoisonGasCloudAnim(struct Sprite *);
-extern void MovePoisonGasCloud(struct Sprite *);
-extern void AnimHailBegin(struct Sprite *);
-extern void AnimHailContinue(struct Sprite *);
-extern void sub_80A8EE4(struct Sprite *);
-extern void InitIceBallAnim(struct Sprite *);
-extern void AnimThrowIceBall(struct Sprite *);
-extern void InitIceBallParticle(struct Sprite *);
-extern void AnimIceBallParticle(struct Sprite *);
+void sub_810B848(struct Sprite *);
+void AnimIcePunchSwirlingParticle(struct Sprite *);
+void AnimIceBeamParticle(struct Sprite *);
+void AnimIceEffectParticle(struct Sprite *);
+void AnimFlickerIceEffectParticle(struct Sprite *);
+void AnimSwirlingSnowball_Step1(struct Sprite *);
+void AnimSwirlingSnowball_Step2(struct Sprite *);
+void AnimSwirlingSnowball_Step3(struct Sprite *);
+void AnimSwirlingSnowball_End(struct Sprite *);
+void AnimMoveParticleBeyondTarget(struct Sprite *);
+void AnimWiggleParticleTowardsTarget(struct Sprite *);
+void AnimWaveFromCenterOfTarget(struct Sprite *);
+void InitSwirlingFogAnim(struct Sprite *);
+void AnimSwirlingFogAnim(struct Sprite *);
+void AnimThrowMistBall(struct Sprite *);
+void InitPoisonGasCloudAnim(struct Sprite *);
+void MovePoisonGasCloud(struct Sprite *);
+void AnimHailBegin(struct Sprite *);
+void AnimHailContinue(struct Sprite *);
+void InitIceBallAnim(struct Sprite *);
+void AnimThrowIceBall(struct Sprite *);
+void InitIceBallParticle(struct Sprite *);
+void AnimIceBallParticle(struct Sprite *);
void AnimTask_Haze2(u8);
void AnimTask_OverlayFogTiles(u8);
void AnimTask_Hail2(u8);
diff --git a/src/item.c b/src/item.c
index 71c2dc0f7..0e13ddf4c 100644
--- a/src/item.c
+++ b/src/item.c
@@ -539,8 +539,8 @@ bool8 RemoveBagItem(u16 itemId, u16 count)
if (CurrentMapIsSecretBase() == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x200);
- VarSet(VAR_0x40ED, itemId);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId);
}
var = GetItemListPosition(pocket);
diff --git a/src/item_menu.c b/src/item_menu.c
index 43f2afce3..5738757bd 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -8,6 +8,7 @@
#include "bg.h"
#include "constants/items.h"
#include "constants/songs.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "event_object_movement.h"
@@ -140,7 +141,6 @@ void unknown_ItemMenu_Confirm2(u8 taskId);
void unknown_item_menu_type(u8 taskId);
void item_menu_type_2(u8 taskId);
void display_sell_item_ask_str(u8 taskId);
-void unknown_ItemMenu_Confirm(u8 taskId);
void display_deposit_item_ask_str(u8 taskId);
void item_menu_type_b(u8 taskId);
void BagMenuActuallyToss(u8 taskId);
@@ -446,7 +446,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0;
extern u8 *const gPocketNamesStringsTable[];
-extern const u8 gMoveNames[][0xD];
extern u8* gReturnToXStringsTable[];
extern const u8 EventScript_2736B3[];
extern const u16 gUnknown_0860F074[];
@@ -476,7 +475,7 @@ void CB2_ChooseBerry(void)
GoToBagMenu(RETURN_LOCATION_FIELD_2, BERRIES_POCKET, CB2_ReturnToFieldContinueScript);
}
-void sub_81AABF0(void(*callback)(void))
+void sub_81AABF0(void (*callback)(void))
{
GoToBagMenu(RETURN_LOCATION_FIELD_3, BERRIES_POCKET, callback);
}
@@ -884,7 +883,7 @@ void bag_menu_print_description_box_text(int a)
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
str = gStringVar4;
}
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, str, 3, 1, 0, 0, 0, 0);
}
@@ -896,7 +895,7 @@ void bag_menu_print_cursor_(u8 a, u8 b)
void bag_menu_print_cursor(u8 a, u8 b)
{
if (b == 0xFF)
- FillWindowPixelRect(0, 0, 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(0, PIXEL_FILL(0), 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
bag_menu_print(0, 1, gText_SelectorArrow2, 0, a, 0, 0, 0, b);
@@ -1028,7 +1027,7 @@ void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u
s16* data = gTasks[taskId].data;
data[10] = AddItemMessageWindow(4);
- FillWindowPixelBuffer(data[10], 17);
+ FillWindowPixelBuffer(data[10], PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, data[10], 10, 13, fontId, GetPlayerTextSpeedDelay(), str, callback);
schedule_bg_copy_tilemap_to_vram(1);
}
@@ -1293,7 +1292,7 @@ void bag_menu_swap_items(u8 taskId)
gUnknown_0203CE54->unk81A = data[1];
CopyItemName(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_80D4FEC(data[1]);
sub_81AB89C();
@@ -1505,7 +1504,7 @@ void sub_81AC644(u8 unused)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
}
if (gUnknown_0203CE54->unk828 == 1)
@@ -1646,7 +1645,7 @@ void ItemMenu_UseOutOfBattle(u8 taskId)
bag_menu_print_there_is_no_pokemon(taskId);
else
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
schedule_bg_copy_tilemap_to_vram(0);
if (gUnknown_0203CE58.pocket != BERRIES_POCKET)
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
@@ -1670,7 +1669,7 @@ void ItemMenu_Toss(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = Task_ChooseHowManyToToss;
@@ -1684,7 +1683,7 @@ void BagMenuConfirmToss(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
bag_menu_yes_no(taskId, 5, &gUnknown_08614084);
}
@@ -1727,7 +1726,7 @@ void BagMenuActuallyToss(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
}
@@ -2043,7 +2042,7 @@ void display_deposit_item_ask_str(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_DepositHowManyVar1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
sub_81ABC3C(7);
gTasks[taskId].func = sub_81ADA7C;
@@ -2078,7 +2077,7 @@ void sub_81ADB14(u8 taskId)
{
s16* data = gTasks[taskId].data;
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
if (ItemId_GetImportance(gSpecialVar_ItemId))
{
bag_menu_print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
@@ -2244,7 +2243,7 @@ void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2)
window.width = 16;
window.height = 2;
windowId = AddWindow(&window);
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
offset = GetStringCenterAlignXOffset(1, pocketName1, 0x40);
bag_menu_print(windowId, 1, pocketName1, offset, 1, 0, 0, -1, 1);
if (pocketName2)
@@ -2283,7 +2282,7 @@ void setup_bag_menu_textboxes(void)
LoadPalette(&gUnknown_0860F074, 0xF0, 0x20);
for (i = 0; i < 3; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
PutWindowTilemap(i);
}
schedule_bg_copy_tilemap_to_vram(0);
@@ -2306,7 +2305,7 @@ u8 bag_menu_add_window(u8 a)
if (*ptr == 0xFF)
{
*ptr = AddWindow(&gUnknown_086141AC[a]);
- SetWindowBorderStyle(*ptr, 0, 1, 14);
+ DrawStdFrameWithCustomTileAndPalette(*ptr, 0, 1, 14);
schedule_bg_copy_tilemap_to_vram(1);
}
return *ptr;
@@ -2317,7 +2316,7 @@ void bag_menu_remove_window(u8 a)
u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
- sub_8198070(*ptr, 0);
+ ClearStdWindowAndFrameToTransparent(*ptr, 0);
ClearWindowTilemap(*ptr);
RemoveWindow(*ptr);
schedule_bg_copy_tilemap_to_vram(1);
@@ -2338,7 +2337,8 @@ void bag_menu_RemoveBagItem_message_window(u8 a)
u8 *ptr = &gUnknown_0203CE54->windowPointers[a];
if (*ptr != 0xFF)
{
- sub_8197DF8(*ptr, 0);
+ ClearDialogWindowAndFrameToTransparent(*ptr, FALSE);
+ // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
ClearWindowTilemap(*ptr);
RemoveWindow(*ptr);
schedule_bg_copy_tilemap_to_vram(1);
@@ -2366,7 +2366,7 @@ void bag_menu_remove_money_window(void)
void bag_menu_prepare_tmhm_move_window(void)
{
- FillWindowPixelBuffer(3, 0);
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
blit_move_info_icon(3, 19, 0, 0);
blit_move_info_icon(3, 20, 0, 12);
blit_move_info_icon(3, 21, 0, 24);
@@ -2380,7 +2380,7 @@ void PrintTMHMMoveData(u16 itemId)
u16 moveId;
const u8* text;
- FillWindowPixelBuffer(4, 0);
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
if (itemId == ITEM_NONE)
{
for (i = 0; i < 4; i++)
diff --git a/src/item_use.c b/src/item_use.c
index 97d6292c4..e646a18ee 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -8,13 +8,15 @@
#include "coins.h"
#include "data2.h"
#include "event_data.h"
-#include "fieldmap.h"
#include "event_object_movement.h"
+#include "fieldmap.h"
+#include "field_effect.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_weather.h"
#include "item.h"
#include "item_menu.h"
+#include "item_use.h"
#include "mail.h"
#include "main.h"
#include "menu.h"
@@ -37,31 +39,15 @@
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/vars.h"
+#include "event_obj_lock.h"
-extern void unknown_ItemMenu_Confirm(u8 taskId);
-extern void sub_81C5B14(u8 taskId);
-extern void ScriptUnfreezeEventObjects(void);
-extern void ItemUseOutOfBattle_TMHM(u8 a);
-extern void ItemUseOutOfBattle_EvolutionStone(u8 b);
-extern bool8 IsPlayerFacingSurfableFishableWater(void);
-extern bool8 sub_81221AC(void);
extern u8 Route102_EventScript_274482[];
extern u8 Route102_EventScript_2744C0[];
extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
-extern int sub_80247BC(void);
-extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection);
-extern void SetUpItemUseCallback(u8 taskId);
-extern void ItemUseCB_Medicine(u8, TaskFunc);
-extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
-extern void sub_81C5924(void);
-extern void sub_81C59BC(void);
-extern void sub_81AB9A8(u8);
-extern void StartEscapeRopeFieldEffect(void);
-extern u8* sub_806CF78(u16);
-extern void sub_81B89F0(void);
-extern u8 GetItemEffectType(u16);
-extern struct MapConnection *sub_8088A8C(s16, s16);
+extern s32 sub_80247BC(void);
+
+void SetUpItemUseCallback(u8 taskId);
void MapPostLoadHook_UseItem(void);
void sub_80AF6D4(void);
void Task_CallItemUseOnFieldCallback(u8 taskId);
@@ -188,7 +174,7 @@ void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemO
void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
@@ -350,7 +336,7 @@ void sub_80FD504(u8 taskId)
void sub_80FD5CC(u8 taskId)
{
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -404,12 +390,12 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
{
- struct MapHeader *mapHeader;
+
u16 localX, localY;
u32 localOffset;
s32 localLength;
- mapHeader = mapconnection_get_mapheader(connection);
+ struct MapHeader const *const mapHeader = mapconnection_get_mapheader(connection);
switch (connection->direction)
{
diff --git a/src/learn_move.c b/src/learn_move.c
index 7a6916013..879acff6d 100644
--- a/src/learn_move.c
+++ b/src/learn_move.c
@@ -498,7 +498,7 @@ static void LearnMoveMain(void)
case 27:
if (!sub_81D2C3C())
{
- FillWindowPixelBuffer(3, 0x11);
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
if (sLearnMoveStruct2.showContestInfo == FALSE)
{
sLearnMoveStruct->state = 3;
@@ -631,7 +631,7 @@ static void HideSpritesAndPrintTeachText(bool8 a)
if (!a)
{
StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
- FillWindowPixelBuffer(3, 0x11);
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
}
}
@@ -695,7 +695,7 @@ static void ShowTeachMoveText(bool8 showContest)
if (showContest == FALSE)
{
StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
- FillWindowPixelBuffer(3, 0x11);
+ FillWindowPixelBuffer(3, PIXEL_FILL(1));
AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL);
}
}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 3d4f8a90d..dc38d8848 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -695,7 +695,7 @@ u8 sub_818E2D8(void)
void sub_818E2FC(void)
{
- easy_chat_input_maybe();
+ ShowEasyChatScreen();
}
bool8 sub_818E308(void)
@@ -763,8 +763,8 @@ void sub_818E430(void)
void sub_818E47C(void)
{
- gSpecialVar_0x8004 = 0x11;
- easy_chat_input_maybe();
+ gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION;
+ ShowEasyChatScreen();
}
void sub_818E490(void)
diff --git a/src/link.c b/src/link.c
index bec9dddc6..525d50d7c 100644
--- a/src/link.c
+++ b/src/link.c
@@ -28,7 +28,7 @@
#include "link.h"
#include "link_rfu.h"
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
// Static type declarations
@@ -302,9 +302,9 @@ void LinkTestScreen(void)
SetMainCallback2(CB2_LinkTest);
}
-void sub_8009628(u8 a0)
+void SetLocalLinkPlayerId(u8 playerId)
{
- gLocalLinkPlayer.id = a0;
+ gLocalLinkPlayer.id = playerId;
}
static void InitLocalLinkPlayer(void)
@@ -695,12 +695,12 @@ static void BuildSendCmd(u16 command)
gSendCmd[0] = LINKCMD_0x5566;
break;
case LINKCMD_SEND_HELD_KEYS_2:
- if (gUnknown_03005DA8 == 0 || gLinkTransferringData)
+ if (gHeldKeyCodeToSend == 0 || gLinkTransferringData)
{
break;
}
gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2;
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
}
}
@@ -714,11 +714,11 @@ void sub_8009F18(void)
gLinkCallback = sub_8009F70;
}
-bool32 sub_8009F3C(void)
+bool32 IsSendingKeysToLink(void)
{
if (gWirelessCommType)
{
- return sub_800F7E4();
+ return IsSendingKeysToRfu();
}
if (gLinkCallback == sub_8009F70)
{
@@ -1142,7 +1142,7 @@ void ResetBlockReceivedFlag(u8 who)
}
}
-void sub_800A620(void)
+void CheckShouldAdvanceLinkState(void)
{
if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1)
{
@@ -1327,7 +1327,9 @@ void sub_800AA04(u8 a0)
}
}
-u8 sub_800AA48(void)
+// The number of players when trading began. This is frequently compared against the
+// current number of connected players to check if anyone dropped out.
+u8 GetSavedPlayerCount(void)
{
return gSavedLinkPlayerCount;
}
@@ -1683,8 +1685,8 @@ static void sub_800B080(void)
CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
LoadPalette(gWirelessLinkDisplayPal, 0, 0x20);
- FillWindowPixelBuffer(0, 0x00);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(0, 3, 2, 6, gUnknown_082ED224, 0, gText_CommErrorEllipsis);
AddTextPrinterParameterized3(2, 3, 2, 1, gUnknown_082ED224, 0, gText_MoveCloserToLinkPartner);
PutWindowTilemap(0);
@@ -1696,8 +1698,8 @@ static void sub_800B080(void)
static void sub_800B138(void)
{
LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0);
- FillWindowPixelBuffer(1, 0x00);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_082ED224, 0, gText_CommErrorCheckConnections);
PutWindowTilemap(1);
PutWindowTilemap(2);
@@ -1849,7 +1851,7 @@ bool8 HandleLinkConnection(void)
r5 = sub_8010F1C();
if (sub_808766C() == TRUE)
{
- if (r4 == TRUE || sub_800F0B8() || r5)
+ if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5)
{
return TRUE;
}
@@ -1882,18 +1884,18 @@ void sub_800B4C0(void)
}
}
-u32 sub_800B4DC(void)
+u32 GetLinkRecvQueueLength(void)
{
if (gWirelessCommType != 0)
{
- return sub_80124D4();
+ return GetRfuRecvQueueLength();
}
return gLink.recvQueue.count;
}
-bool8 sub_800B504(void)
+bool32 sub_800B504(void)
{
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
return TRUE;
}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 4ad2a5169..d80ff2ae9 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -17,9 +17,9 @@
#include "text.h"
#include "constants/species.h"
#include "save.h"
+#include "rom_8011DC0.h"
-extern u16 gUnknown_03005DA8;
-extern void nullsub_89(u8 taskId);
+extern u16 gHeldKeyCodeToSend;
struct UnkRfuStruct_1 gUnknown_03004140;
struct UnkRfuStruct_2 gUnknown_03005000;
@@ -2991,7 +2991,7 @@ static void sub_800F048(void)
}
}
-bool32 sub_800F0B8(void)
+bool32 IsRfuRecvQueueEmpty(void)
{
s32 i;
s32 j;
@@ -3212,7 +3212,7 @@ bool32 sub_800F4F0(void)
for (i = 0; i < CMD_LENGTH - 1; i++)
gSendCmd[i] = 0;
}
- return sub_800F0B8();
+ return IsRfuRecvQueueEmpty();
}
void sub_800F638(u8 unused, u32 flags)
@@ -3272,10 +3272,12 @@ u8 sub_800F74C(const u8 *a0)
void rfu_func_080F97B8(void)
{
- if (gReceivedRemoteLinkPlayers && gUnknown_03005DA8 && gLinkTransferringData != 1)
+ if (gReceivedRemoteLinkPlayers
+ && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
+ && gLinkTransferringData != TRUE)
{
gUnknown_03000D78[0]++;
- gUnknown_03005DA8 |= (gUnknown_03000D78[0] << 8);
+ gHeldKeyCodeToSend |= (gUnknown_03000D78[0] << 8);
sub_800FD14(0xbe00);
}
}
@@ -3285,7 +3287,7 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void)
return &gUnknown_02022B14;
}
-bool32 sub_800F7E4(void)
+bool32 IsSendingKeysToRfu(void)
{
return gUnknown_03005000.unk_00 == rfu_func_080F97B8;
}
@@ -3509,7 +3511,7 @@ void sub_800FD14(u16 command)
gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i];
break;
case 0xbe00:
- gSendCmd[1] = gUnknown_03005DA8;
+ gSendCmd[1] = gHeldKeyCodeToSend;
break;
case 0xee00:
break;
@@ -3799,10 +3801,10 @@ bool32 sub_8010454(u32 a0)
u8 sub_801048C(bool32 a0)
{
- if (a0 == 0)
+ if (a0 == FALSE)
return sub_800D550(0, 0);
sub_800D550(1, 0x258);
- return FALSE;
+ return 0;
}
void sub_80104B0(void)
@@ -5163,7 +5165,7 @@ u32 sub_80124C0(void)
return gUnknown_03005000.unk_9e8.unk_232;
}
-u32 sub_80124D4(void)
+u32 GetRfuRecvQueueLength(void)
{
return gUnknown_03005000.unk_124.unk_8c2;
}
diff --git a/src/list_menu.c b/src/list_menu.c
index 7a9547661..51d7dcb15 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -355,11 +355,11 @@ s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenu
switch (arg2)
{
case 0: // can never be reached, because of the if statement above
- sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE);
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
break;
case 2:
case 1:
- sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE);
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
break;
}
}
@@ -486,7 +486,7 @@ void RedrawListMenu(u8 listTaskId)
{
struct ListMenu *list = (void*) gTasks[listTaskId].data;
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
ListMenuDrawCursor(list);
CopyWindowToVram(list->template.windowId, 2);
@@ -584,7 +584,7 @@ static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 sc
if (list->template.totalItems < list->template.maxShowed)
list->template.maxShowed = list->template.totalItems;
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
ListMenuDrawCursor(list);
ListMenuCallSelectionChangedCallback(list, TRUE);
@@ -698,7 +698,7 @@ static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow)
u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0);
u8 height = GetMenuCursorDimensionByFont(list->template.fontId, 1);
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
list->template.cursor_X,
selectedRow * yMultiplier + list->template.upText_Y,
width,
@@ -795,7 +795,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
{
if (count >= list->template.maxShowed)
{
- FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue));
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
}
else
@@ -806,26 +806,26 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
{
u16 y, width, height;
- ScrollWindow(list->template.windowId, 1, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue));
+ ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset, 0, count);
y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y;
width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
height = (GetWindowAttribute(list->template.windowId, WINDOW_HEIGHT) * 8) - y;
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
0, y, width, height);
}
else
{
u16 width;
- ScrollWindow(list->template.windowId, 0, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue));
+ ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count);
width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
FillWindowPixelRect(list->template.windowId,
- (list->template.fillValue << 4) | (list->template.fillValue),
+ PIXEL_FILL(list->template.fillValue),
0, 0, width, list->template.upText_Y);
}
}
diff --git a/src/load_save.c b/src/load_save.c
index 0d19c6dae..d6785254f 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -11,10 +11,10 @@
#include "trainer_hill.h"
#include "gba/flash_internal.h"
#include "decoration_inventory.h"
+#include "agb_flash.h"
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
-extern bool16 IdentifyFlash(void);
extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
#define SAVEBLOCK_MOVE_RANGE 128
@@ -99,7 +99,7 @@ void MoveSaveBlocks_ResetHeap(void)
hblankCB = gMain.hblankCallback;
gMain.vblankCallback = NULL;
gMain.hblankCallback = NULL;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
saveBlock2Copy = (struct SaveBlock2 *)(gHeap);
saveBlock1Copy = (struct SaveBlock1 *)(gHeap + sizeof(struct SaveBlock2));
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index bd7d17ef7..bb3bb7a5c 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -27,7 +27,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_POKELOT_PRIZE_ITEM, 0);
}
void SetRandomLotteryNumber(u16 i)
diff --git a/src/mail.c b/src/mail.c
index 45e96e85e..9cca4492e 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];
@@ -477,8 +477,8 @@ static void sub_8121B1C(void)
y = 0;
PutWindowTilemap(0);
PutWindowTilemap(1);
- FillWindowPixelBuffer(0, 0);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
for (i = 0; i < sMailRead->layout->numSubStructs; i ++)
{
if (sMailRead->strbuf[i][0] == EOS || sMailRead->strbuf[i][0] == CHAR_SPACE)
diff --git a/src/main.c b/src/main.c
index 61c5e3386..40381bb68 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,9 +24,6 @@
#include "main.h"
#include "trainer_hill.h"
-extern void sub_800B9B8(void);
-extern u8 gUnknown_03002748;
-
static void VBlankIntr(void);
static void HBlankIntr(void);
static void VCountIntr(void);
@@ -163,7 +160,7 @@ static void UpdateLinkAndCallCallbacks(void)
static void InitMainCallbacks(void)
{
gMain.vblankCounter1 = 0;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
gMain.vblankCounter2 = 0;
gMain.callback1 = NULL;
SetMainCallback2(CB2_InitCopyrightScreenAfterBootup);
@@ -313,8 +310,6 @@ void SetSerialCallback(IntrCallback callback)
gMain.serialCallback = callback;
}
-extern void CopyBufferedValuesToGpuRegs(void);
-
static void VBlankIntr(void)
{
if (gWirelessCommType != 0)
@@ -324,8 +319,8 @@ static void VBlankIntr(void)
gMain.vblankCounter1++;
- if (gUnknown_0203CF5C && *gUnknown_0203CF5C < 0xFFFFFFFF)
- (*gUnknown_0203CF5C)++;
+ if (gTrainerHillVBlankCounter && *gTrainerHillVBlankCounter < 0xFFFFFFFF)
+ (*gTrainerHillVBlankCounter)++;
if (gMain.vblankCallback)
gMain.vblankCallback();
@@ -393,14 +388,14 @@ static void WaitForVBlank(void)
;
}
-void sub_80008DC(u32 *var)
+void SetTrainerHillVBlankCounter(u32 *counter)
{
- gUnknown_0203CF5C = var;
+ gTrainerHillVBlankCounter = counter;
}
-void sub_80008E8(void)
+void ClearTrainerHillVBlankCounter(void)
{
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
}
void DoSoftReset(void)
diff --git a/src/main_menu.c b/src/main_menu.c
index 82a30aa59..e6e29d942 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -39,6 +39,135 @@
#include "title_screen.h"
#include "window.h"
+/*
+ * Main menu state machine
+ * -----------------------
+ *
+ * Entry point: CB2_InitMainMenu
+ *
+ * Note: States advance sequentially unless otherwise stated.
+ *
+ * CB2_InitMainMenu / CB2_ReinitMainMenu
+ * - Both of these states call InitMainMenu, which does all the work.
+ * - In the Reinit case, the init code will check if the user came from
+ * the options screen. If they did, then the options menu item is
+ * pre-selected.
+ *
+ * Task_MainMenuCheckSaveFile
+ * - Determines how many menu options to show based on whether
+ * the save file is Ok, empty, corrupted, etc.
+ * - If there was an error loading the save file, advance to
+ * Task_WaitForSaveFileErrorWindow.
+ * - If there were no errors, advance to Task_MainMenuCheckBattery.
+ * - Note that the check to enable Mystery Events would normally happen
+ * here, but this version of Emerald has them disabled.
+ *
+ * Task_WaitForSaveFileErrorWindow
+ * - Wait for the text to finish printing and then for the A button
+ * to be pressed.
+ *
+ * Task_MainMenuCheckBattery
+ * - If the battery is OK, advance to Task_DisplayMainMenu.
+ * - If the battery is dry, advance to Task_WaitForBatteryDryErrorWindow.
+ *
+ * Task_WaitForBatteryDryErrorWindow
+ * - Wait for the text to finish printing and then for the A button
+ * to be pressed.
+ *
+ * Task_DisplayMainWindow
+ * - Display the buttons to the user. If the menu is in HAS_MYSTERY_EVENTS
+ * mode, there are too many buttons for one screen and a scrollbar is added,
+ * and the scrollbar task is spawned (Task_ScrollIndicatorArrowPairOnMainMenu).
+ *
+ * Task_HighlightSelectedMainMenuItem
+ * - Update the UI to match the currently selected item.
+ *
+ * Task_HandleMainMenuInput
+ * - If A is pressed, advance to Task_HandleMainMenuAPressed.
+ * - If B is pressed, return to the title screen via CB2_InitTitleScreen.
+ * - If Up or Down is pressed, handle scrolling if there is a scroll bar, change
+ * the selection, then go back to Task_HighlightSelectedMainMenuItem.
+ *
+ * Task_HandleMainMenuAPressed
+ * - If the user selected New Game, advance to Task_NewGameBirchSpeech_Init.
+ * - If the user selected Continue, advance to CB2_ContinueSavedGame.
+ * - If the user selected the Options menu, advance to CB2_InitOptionMenu.
+ * - If the user selected Mystery Gift, advance to CB2_MysteryGift. However,
+ * if the wireless adapter was removed, instead advance to
+ * Task_DisplayMainMenuInvalidActionError.
+ * - Code to start a Mystery Event is present here, but is unreachable in this
+ * version.
+ *
+ * Task_HandleMainMenuBPressed
+ * - Clean up the main menu and go back to CB2_InitTitleScreen.
+ *
+ * Task_DisplayMainMenuInvalidActionError
+ * - Print one of three different error messages, wait for the text to stop
+ * printing, and then wait for A or B to be pressed.
+ * - Then advance to Task_HandleMainMenuBPressed.
+ *
+ * Task_NewGameBirchSpeechInit
+ * - Load the sprites for the intro speech, start playing music
+ * Task_NewGameBirchSpeech_WaitToShowBirch
+ * - Spawn Task_NewGameBirchSpeech_FadeInTarget1OutTarget2
+ * - Spawn Task_NewGameBirchSpeech_FadePlatformOut
+ * - Both of these tasks destroy themselves when done.
+ * Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome
+ * Task_NewGameBirchSpeech_ThisIsAPokemon
+ * - When the text is done printing, spawns Task_NewGameBirchSpeechSub_InitPokeball
+ * Task_NewGameBirchSpeech_MainSpeech
+ * Task_NewGameBirchSpeech_AndYouAre
+ * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade
+ * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade
+ * Task_NewGameBirchSpeech_SlidePlatformAway
+ * Task_NewGameBirchSpeech_StartPlayerFadeIn
+ * Task_NewGameBirchSpeech_WaitForPlayerFadeIn
+ * Task_NewGameBirchSpeech_BoyOrGirl
+ * Task_NewGameBirchSpeech_WaitToShowGenderMenu
+ * Task_NewGameBirchSpeech_ChooseGender
+ * - Animates by advancing to Task_NewGameBirchSpeech_SlideOutOldGenderSprite
+ * whenever the player's selection changes.
+ * - Advances to Task_NewGameBirchSpeech_WhatsYourName when done.
+ *
+ * Task_NewGameBirchSpeech_SlideOutOldGenderSprite
+ * Task_NewGameBirchSpeech_SlideInNewGenderSprite
+ * - Returns back to Task_NewGameBirchSpeech_ChooseGender.
+ *
+ * Task_NewGameBirchSpeech_WhatsYourName
+ * Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint
+ * Task_NewGameBirchSpeech_WaitPressBeforeNameChoice
+ * Task_NewGameBirchSpeech_StartNamingScreen
+ * C2_NamingScreen
+ * - Returns to CB2_NewGameBirchSpeech_ReturnFromNamingScreen when done
+ * CB2_NewGameBirchSpeech_ReturnFromNamingScreen
+ * Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox
+ * Task_NewGameBirchSpeech_SoItsPlayerName
+ * Task_NewGameBirchSpeech_CreateNameYesNo
+ * Task_NewGameBirchSpeech_ProcessNameYesNoMenu
+ * - If confirmed, advance to Task_NewGameBirchSpeech_SlidePlatformAway2.
+ * - Otherwise, return to Task_NewGameBirchSpeech_BoyOrGirl.
+ *
+ * Task_NewGameBirchSpeech_SlidePlatformAway2
+ * Task_NewGameBirchSpeech_ReshowBirchLotad
+ * Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter
+ * Task_NewGameBirchSpeech_AreYouReady
+ * Task_NewGameBirchSpeech_ShrinkPlayer
+ * Task_NewGameBirchSpeech_WaitForPlayerShrink
+ * Task_NewGameBirchSpeech_FadePlayerToWhite
+ * Task_NewGameBirchSpeech_Cleanup
+ * - Advances to CB2_NewGame.
+ *
+ * Task_NewGameBirchSpeechSub_InitPokeball
+ * - Advances to Task_NewGameBirchSpeechSub_WaitForLotad
+ * Task_NewGameBirchSpeechSub_WaitForLotad
+ * - Destroys itself when done.
+ */
+
+// These two defines are used with the sCurrItemAndOptionsMenuCheck,
+// to distinguish between its two parts.
+#define OPTION_MENU_FLAG 0x8000
+#define CURRENT_ITEM_MASK 0x7FFF
+
// Static type declarations
// Static RAM declarations
@@ -112,7 +241,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite*);
static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8);
static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8);
static void Task_NewGameBirchSpeech_Cleanup(u8);
-static void nullsub_11();
+static void SpriteCB_Null();
static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8);
static void MainMenu_FormatSavegamePlayer(void);
static void MainMenu_FormatSavegamePokedex(void);
@@ -247,7 +376,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] =
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_082FF080[] =
+static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] =
{
{
.bg = 0,
@@ -542,7 +671,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId)
gTasks[taskId].func = Task_WaitForSaveFileErrorWindow;
break;
}
- if (sCurrItemAndOptionMenuCheck & 0x8000) // are we returning from the options menu?
+ if (sCurrItemAndOptionMenuCheck & OPTION_MENU_FLAG) // are we returning from the options menu?
{
switch (tMenuType) // if so, highlight the OPTIONS item
{
@@ -558,7 +687,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId)
break;
}
}
- sCurrItemAndOptionMenuCheck &= 0x7FFF; // turn off the "returning from options menu" flag
+ sCurrItemAndOptionMenuCheck &= CURRENT_ITEM_MASK; // turn off the "returning from options menu" flag
tCurrItem = sCurrItemAndOptionMenuCheck;
tItemCount = tMenuType + 2;
}
@@ -637,6 +766,8 @@ static void Task_DisplayMainMenu(u8 taskId)
palette = RGB(26, 26, 25);
LoadPalette(&palette, 252, 2);
+ // Note: If there is no save file, the save block is zeroed out,
+ // so the default gender is MALE.
if (gSaveBlock2Ptr->playerGender == MALE)
{
palette = RGB(4, 16, 31);
@@ -652,8 +783,8 @@ static void Task_DisplayMainMenu(u8 taskId)
{
case HAS_NO_SAVED_GAME:
default:
- FillWindowPixelBuffer(0, 0xAA);
- FillWindowPixelBuffer(1, 0xAA);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(1, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(0, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(1, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
PutWindowTilemap(0);
@@ -664,9 +795,9 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[1], MAIN_MENU_BORDER_TILE);
break;
case HAS_SAVED_GAME:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption);
@@ -682,10 +813,10 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[4], MAIN_MENU_BORDER_TILE);
break;
case HAS_MYSTERY_GIFT:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
- FillWindowPixelBuffer(5, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(5, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift);
@@ -705,11 +836,11 @@ static void Task_DisplayMainMenu(u8 taskId)
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[5], MAIN_MENU_BORDER_TILE);
break;
case HAS_MYSTERY_EVENTS:
- FillWindowPixelBuffer(2, 0xAA);
- FillWindowPixelBuffer(3, 0xAA);
- FillWindowPixelBuffer(4, 0xAA);
- FillWindowPixelBuffer(5, 0xAA);
- FillWindowPixelBuffer(6, 0xAA);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(3, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(4, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(5, PIXEL_FILL(0xA));
+ FillWindowPixelBuffer(6, PIXEL_FILL(0xA));
AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue);
AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame);
AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift2);
@@ -813,14 +944,14 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
{
if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS)
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
- sub_819746C(0, 1);
- sub_819746C(1, 1);
- sub_819746C(2, 1);
- sub_819746C(3, 1);
- sub_819746C(4, 1);
- sub_819746C(5, 1);
- sub_819746C(6, 1);
- sub_819746C(7, 1);
+ ClearStdWindowAndFrame(0, TRUE);
+ ClearStdWindowAndFrame(1, TRUE);
+ ClearStdWindowAndFrame(2, TRUE);
+ ClearStdWindowAndFrame(3, TRUE);
+ ClearStdWindowAndFrame(4, TRUE);
+ ClearStdWindowAndFrame(5, TRUE);
+ ClearStdWindowAndFrame(6, TRUE);
+ ClearStdWindowAndFrame(7, TRUE);
wirelessAdapterConnected = IsWirelessAdapterConnected();
switch (gTasks[taskId].tMenuType)
{
@@ -973,7 +1104,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
if (action != ACTION_OPTION)
sCurrItemAndOptionMenuCheck = 0;
else
- sCurrItemAndOptionMenuCheck |= 0x8000; // entering the options menu
+ sCurrItemAndOptionMenuCheck |= OPTION_MENU_FLAG; // entering the options menu
}
}
@@ -981,7 +1112,7 @@ static void Task_HandleMainMenuBPressed(u8 taskId)
{
if (!gPaletteFade.active)
{
- if (gTasks[taskId].tMenuType == 3)
+ if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS)
RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId);
sCurrItemAndOptionMenuCheck = 0;
FreeAllWindowBuffers();
@@ -1199,7 +1330,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId)
}
else
{
- InitWindows(gUnknown_082FF080);
+ InitWindows(gNewGameBirchSpeechTextWindows);
LoadMainMenuWindowFrameTiles(0, 0xF3);
LoadMessageBoxGfx(0, 0xFC, 0xF0);
NewGameBirchSpeech_ShowDialogueWindow(0, 1);
@@ -1642,7 +1773,7 @@ static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8 taskId)
if (!gPaletteFade.active)
{
spriteId = gTasks[taskId].tPlayerSpriteId;
- gSprites[spriteId].callback = nullsub_11;
+ gSprites[spriteId].callback = SpriteCB_Null;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
BeginNormalPaletteFade(0xFFFF0000, 0, 0, 16, RGB_WHITEALPHA);
gTasks[taskId].func = Task_NewGameBirchSpeech_Cleanup;
@@ -1730,14 +1861,14 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
REG_IME = savedIme;
SetVBlankCallback(VBlankCB_MainMenu);
SetMainCallback2(CB2_MainMenu);
- InitWindows(gUnknown_082FF080);
+ InitWindows(gNewGameBirchSpeechTextWindows);
LoadMainMenuWindowFrameTiles(0, 0xF3);
LoadMessageBoxGfx(0, 0xFC, 0xF0);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
-static void nullsub_11(struct Sprite *sprite)
+static void SpriteCB_Null(struct Sprite *sprite)
{
}
@@ -1763,22 +1894,22 @@ static void AddBirchSpeechObjects(u8 taskId)
u8 maySpriteId;
birchSpriteId = AddNewGameBirchObject(0x88, 0x3C, 1);
- gSprites[birchSpriteId].callback = nullsub_11;
+ gSprites[birchSpriteId].callback = SpriteCB_Null;
gSprites[birchSpriteId].oam.priority = 0;
gSprites[birchSpriteId].invisible = TRUE;
gTasks[taskId].tBirchSpriteId = birchSpriteId;
lotadSpriteId = NewGameBirchSpeech_CreateLotadSprite(100, 0x4B);
- gSprites[lotadSpriteId].callback = nullsub_11;
+ gSprites[lotadSpriteId].callback = SpriteCB_Null;
gSprites[lotadSpriteId].oam.priority = 0;
gSprites[lotadSpriteId].invisible = TRUE;
gTasks[taskId].tLotadSpriteId = lotadSpriteId;
brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]);
- gSprites[brendanSpriteId].callback = nullsub_11;
+ gSprites[brendanSpriteId].callback = SpriteCB_Null;
gSprites[brendanSpriteId].invisible = TRUE;
gSprites[brendanSpriteId].oam.priority = 0;
gTasks[taskId].tBrendanSpriteId = brendanSpriteId;
maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]);
- gSprites[maySpriteId].callback = nullsub_11;
+ gSprites[maySpriteId].callback = SpriteCB_Null;
gSprites[maySpriteId].invisible = TRUE;
gSprites[maySpriteId].oam.priority = 0;
gTasks[taskId].tMaySpriteId = maySpriteId;
@@ -1966,8 +2097,8 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay)
static void NewGameBirchSpeech_ShowGenderMenu(void)
{
- DrawMainMenuWindowBorder(&gUnknown_082FF080[1], 0xF3);
- FillWindowPixelBuffer(1, 17);
+ DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PrintMenuTable(1, 2, sMenuActions_Gender);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
PutWindowTilemap(1);
@@ -1995,7 +2126,7 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId)
static void CreateMainMenuErrorWindow(const u8* str)
{
- FillWindowPixelBuffer(7, 17);
+ FillWindowPixelBuffer(7, PIXEL_FILL(1));
AddTextPrinterParameterized(7, 1, str, 0, 1, 2, 0);
PutWindowTilemap(7);
CopyWindowToVram(7, 2);
@@ -2105,12 +2236,12 @@ static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d,
FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2);
}
-static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, u8 a)
+static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram)
{
CallWindowFunction(windowId, NewGameBirchSpeech_ClearGenderWindowTilemap);
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
- if (a == 1)
+ if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
@@ -2146,7 +2277,7 @@ void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f)
static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram)
{
CallWindowFunction(windowId, NewGameBirchSpeech_CreateDialogueWindowBorder);
- FillWindowPixelBuffer(windowId, 17);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index cdb4c3330..d95b808e9 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -207,7 +207,7 @@ bool8 sub_80D47D4(void)
void ShowMapNamePopup(void)
{
- if (FlagGet(FLAG_SPECIAL_FLAG_0x4000) != TRUE)
+ if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE)
{
if (!FuncIsActiveTask(Task_MapNamePopUpWindow))
{
@@ -276,7 +276,7 @@ static void Task_MapNamePopUpWindow(u8 taskId)
}
break;
case 4:
- sub_819746C(GetMapNamePopUpWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE);
task->data[0] = 5;
break;
case 5:
@@ -290,7 +290,7 @@ void HideMapNamePopUpWindow(void)
{
if (FuncIsActiveTask(Task_MapNamePopUpWindow))
{
- sub_819746C(GetMapNamePopUpWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE);
RemoveMapNamePopUpWindow();
SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0);
DestroyTask(sPopupTaskId);
diff --git a/src/match_call.c b/src/match_call.c
index e7e91969f..641079ba9 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -111,8 +111,6 @@ static void PopulateSpeciesFromTrainerParty(int, u8 *);
static void PopulateBattleFrontierFacilityName(int, u8 *);
static void PopulateBattleFrontierStreak(int, u8 *);
-extern void sub_81973A4(void);
-
#define TEXT_ID(topic, id) (((topic) << 8) | ((id) & 0xFF))
static const struct MatchCallTrainerTextInfo sMatchCallTrainers[] =
@@ -1016,7 +1014,7 @@ static bool32 MapAllowsMatchCall(void)
if (gMapHeader.regionMapSectionId == MAPSEC_SOOTOPOLIS_CITY
&& FlagGet(FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA) == TRUE
- && FlagGet(FLAG_UNUSED_0x0DC) == FALSE)
+ && FlagGet(FLAG_NEVER_SET_0x0DC) == FALSE)
return FALSE;
if (gMapHeader.regionMapSectionId == MAPSEC_MT_CHIMNEY
@@ -1191,7 +1189,7 @@ static bool32 LoadMatchCallWindowGfx(u8 taskId)
return FALSE;
}
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
LoadPalette(sUnknown_0860EA4C, 0xE0, 0x20);
LoadPalette(sPokeNavIconPalette, 0xF0, 0x20);
ChangeBgY(0, -0x2000, 0);
@@ -1241,7 +1239,7 @@ static bool32 sub_81962D8(u8 taskId)
s16 *taskData = gTasks[taskId].data;
if (!ExecuteMatchCallTextPrinter(taskData[2]))
{
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
if (!gMatchCallState.triggeredFromScript)
SelectMatchCallMessage(gMatchCallState.trainerId, gStringVar4);
@@ -1257,7 +1255,7 @@ static bool32 sub_8196330(u8 taskId)
s16 *taskData = gTasks[taskId].data;
if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- FillWindowPixelBuffer(taskData[2], 0x88);
+ FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
CopyWindowToVram(taskData[2], 2);
PlaySE(SE_TOREOFF);
return TRUE;
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index fd8e74c0a..ec5cb238b 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -437,7 +437,7 @@ static void BardSong_TextSubPrinter(struct TextPrinterTemplate * printer, u16 a1
static void sub_8120708(const u8 * src)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, src, 0, 1, 1, BardSong_TextSubPrinter);
gUnknown_03002F84 = TRUE;
CopyWindowToVram(0, 3);
diff --git a/src/menu.c b/src/menu.c
index ae589dff4..b04572b81 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -122,20 +122,18 @@ const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
{ 8, 8, 0xAF }, // Unused (Small dark pokeball)
};
+
// Forward declarations
-extern void sub_81973A4(void);
-extern void DrawStandardFrame(u8, u8, u8, u8, u8, u8);
-extern void DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
-extern void sub_81977BC(u8, u8, u8, u8, u8, u8);
-extern void sub_8197804(u8, u8, u8, u8, u8, u8);
-extern void sub_8197BB4(u8, u8, u8, u8, u8, u8);
-extern void sub_8197E30(u8, u8, u8, u8, u8, u8);
-extern void DrawWindowBorder(u8, u8, u8, u8, u8, u8);
-extern void sub_81980A8(u8, u8, u8, u8, u8, u8);
-extern u8 Menu_MoveCursor(s8);
-extern u8 sub_8199134(s8, s8);
-extern void sub_8198C78(void);
-extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
+void WindowFunc_DrawStandardFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearStdWindowAndFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearDialogWindowAndFrame(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8);
+void WindowFunc_ClearStdWindowAndFrameToTransparent(u8, u8, u8, u8, u8, u8);
+void sub_8198C78(void);
+void task_free_buf_after_copying_tile_data_to_vram(u8 taskId);
void InitStandardTextBoxWindows(void)
{
@@ -210,43 +208,43 @@ void sub_81973A4(void)
LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
}
-void NewMenuHelpers_DrawDialogueFrame(u8 windowId, bool8 copyToVram)
+void DrawDialogueFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, DrawDialogueFrame);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogueFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
+void DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, DrawStandardFrame);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStandardFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197434(u8 windowId, bool8 copyToVram)
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_8197804);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_819746C(u8 windowId, bool8 copyToVram)
+void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_81977BC);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrame);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
int i;
@@ -313,7 +311,7 @@ void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height
STD_WINDOW_PALETTE_NUM);
}
-void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
DLG_WINDOW_BASE_TILE_NUM + 1,
@@ -408,25 +406,25 @@ void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height
DLG_WINDOW_PALETTE_NUM);
}
-void sub_81977BC(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearStdWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, STD_WINDOW_PALETTE_NUM);
}
-void sub_8197804(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, STD_WINDOW_PALETTE_NUM);
}
void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
}
void sub_819786C(u8 windowId, bool8 copyToVram)
{
LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
- sub_8197B1C(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
}
void sub_819789C(void)
@@ -458,12 +456,12 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
CopyWindowToVram(0, 3);
}
-void DisplayYesNoMenu(void)
+void DisplayYesNoMenuDefaultYes(void)
{
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
}
-void sub_8197948(u8 initialCursorPos)
+void DisplayYesNoMenuWithDefault(u8 initialCursorPos)
{
CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
}
@@ -549,29 +547,30 @@ void sub_8197AE8(bool8 copyToVram)
CopyBgTilemapBufferToVram(0);
}
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
{
sTileNum = tileNum;
sPaletteNum = paletteNum;
- CallWindowFunction(windowId, sub_8197BB4);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197B64(u8 windowId, bool8 copyToVram, u16 tileNum)
+// Never used.
+void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum)
{
sTileNum = tileNum;
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
- CallWindowFunction(windowId, sub_8197BB4);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
sTileNum + 1,
@@ -666,43 +665,45 @@ void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 p
sPaletteNum);
}
-void sub_8197DF8(u8 windowId, bool8 copyToVram)
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_8197E30);
- FillWindowPixelBuffer(windowId, 0);
+ // The palette slot doesn't matter, since the tiles are transparent.
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197E30(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, 0);
}
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
{
sTileNum = baseTileNum;
sPaletteNum = paletteNum;
- CallWindowFunction(windowId, DrawWindowBorder);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+// Never used.
+void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum)
{
sTileNum = baseTileNum;
sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
- CallWindowFunction(windowId, DrawWindowBorder);
- FillWindowPixelBuffer(windowId, 0x11);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
PutWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg,
sTileNum + 0,
@@ -762,16 +763,16 @@ void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height,
sPaletteNum);
}
-void sub_8198070(u8 windowId, bool8 copyToVram)
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
{
- CallWindowFunction(windowId, sub_81980A8);
- FillWindowPixelBuffer(windowId, 0);
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
ClearWindowTilemap(windowId);
if (copyToVram == TRUE)
CopyWindowToVram(windowId, 3);
}
-void sub_81980A8(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
{
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
}
@@ -811,7 +812,7 @@ void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram)
if (sWindowId != 0xFF)
{
PutWindowTilemap(sWindowId);
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
width = GetStringWidth(0, string, 0);
AddTextPrinterParameterized3(sWindowId,
0,
@@ -845,7 +846,7 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
color[2] = 2;
}
PutWindowTilemap(sWindowId);
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
if (string2 != NULL)
{
width = GetStringWidth(0, string2, 0);
@@ -873,7 +874,7 @@ void sub_81982F0(void)
{
if (sWindowId != 0xFF)
{
- FillWindowPixelBuffer(sWindowId, 0xFF);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
CopyWindowToVram(sWindowId, 3);
}
}
@@ -882,7 +883,7 @@ void sub_8198314(void)
{
if (sWindowId != 0xFF)
{
- FillWindowPixelBuffer(sWindowId, 0);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0));
ClearWindowTilemap(sWindowId);
CopyWindowToVram(sWindowId, 3);
RemoveWindow(sWindowId);
@@ -931,7 +932,7 @@ void RedrawMenuCursor(u8 oldPos, u8 newPos)
width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
- FillWindowPixelRect(sMenu.windowId, 0x11, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
+ FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow3, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
}
@@ -1175,7 +1176,7 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top
struct TextPrinterTemplate printer;
sYesNoWindowId = AddWindow(window);
- SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
printer.currentChar = gText_YesNo;
printer.windowId = sYesNoWindowId;
@@ -1211,7 +1212,7 @@ s8 Menu_ProcessInputNoWrapClearOnChoose(void)
void sub_8198C78(void)
{
- sub_8198070(sYesNoWindowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE);
RemoveWindow(sYesNoWindowId);
}
@@ -1310,7 +1311,7 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
u8 xPos = (oldCursorPos % sMenu.horizontalCount) * sMenu.optionWidth + sMenu.left;
u8 yPos = (oldCursorPos / sMenu.horizontalCount) * sMenu.optionHeight + sMenu.top;
FillWindowPixelRect(sMenu.windowId,
- 0x11,
+ PIXEL_FILL(1),
xPos,
yPos,
cursorWidth,
@@ -1640,7 +1641,7 @@ void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 pa
struct TextPrinterTemplate printer;
sYesNoWindowId = AddWindow(window);
- SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum);
printer.currentChar = gText_YesNo;
printer.windowId = sYesNoWindowId;
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index e6547b300..3fb5ca40d 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -18,8 +18,6 @@
#include "constants/items.h"
#include "constants/maps.h"
-extern bool32 sub_800B504(void);
-
// this file's functions
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
static void Task_CallYesOrNoCallback(u8 taskId);
@@ -129,7 +127,7 @@ void SetVBlankHBlankCallbacksToNull(void)
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
{
gUnknown_0203A140 = windowId;
- sub_8197B1C(windowId, TRUE, arg2, arg3);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, arg2, arg3);
if (string != gStringVar4)
StringExpandPlaceholders(gStringVar4, string);
@@ -293,7 +291,7 @@ bool8 sub_8122148(u16 itemId)
bool8 itemid_80BF6D8_mail_related(u16 itemId)
{
- if (is_c1_link_related_active() != TRUE && InUnionRoom() != TRUE)
+ if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
return TRUE;
else if (ItemIsMail(itemId) != TRUE)
return TRUE;
@@ -303,7 +301,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId)
bool8 sub_81221AC(void)
{
- if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1)
+ if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1)
return TRUE;
else
return FALSE;
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index a8dd5d9de..4f5834db1 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -317,7 +317,7 @@ void SetMirageTowerVisibility(void)
u16 rand;
bool8 visible;
- if (VarGet(VAR_0x40CB))
+ if (VarGet(VAR_ROUTE_111_STATE))
{
FlagClear(FLAG_MIRAGE_TOWER_VISIBLE);
return;
diff --git a/src/money.c b/src/money.c
index faf830637..4ff8086ea 100644
--- a/src/money.c
+++ b/src/money.c
@@ -154,7 +154,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete);
PrintMoneyAmountInMoneyBox(windowId, amount, 0);
}
@@ -169,7 +169,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
SetWindowTemplateFields(&template, 0, x + 1, y + 1, 10, 2, 15, 8);
sMoneyBoxWindowId = AddWindow(&template);
- FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
+ FillWindowPixelBuffer(sMoneyBoxWindowId, PIXEL_FILL(0));
PutWindowTilemap(sMoneyBoxWindowId);
CopyWindowToVram(sMoneyBoxWindowId, 1);
PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x214, 14, amount);
@@ -179,7 +179,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
void HideMoneyBox(void)
{
RemoveMoneyLabelObject();
- sub_8198070(sMoneyBoxWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 0de4675d9..ad4a2e692 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -90,7 +90,7 @@ void CB2_InitMysteryEventMenu(void)
DeactivateAllTextPrinters();
for (i = 0; i < 2; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
LoadUserWindowBorderGfx(0, 1u, 0xD0u);
@@ -133,7 +133,7 @@ static void CB2_MysteryEventMenu(void)
switch (gMain.state)
{
case 0:
- SetWindowBorderStyle(0, 1, 1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 0xD);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
ShowBg(0);
@@ -179,8 +179,8 @@ static void CB2_MysteryEventMenu(void)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_800A620();
- SetWindowBorderStyle(1, 1, 1, 0xD);
+ CheckShouldAdvanceLinkState();
+ DrawStdFrameWithCustomTileAndPalette(1, 1, 1, 0xD);
PrintMysteryMenuText(1, gText_LoadingEvent, 1, 2, 0);
PutWindowTilemap(1);
CopyWindowToVram(1, 3);
@@ -313,6 +313,6 @@ static void PrintMysteryMenuText(u8 windowId, const u8 *text, u8 x, u8 y, s32 sp
textColor[1] = 2;
textColor[2] = 3;
- FillWindowPixelBuffer(windowId, (textColor[0]) | (textColor[0] << 4));
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(textColor[0]));
AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, textColor, speed, text);
}
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 4196bb34c..dba914b51 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -17,8 +17,6 @@
#include "mystery_event_msg.h"
#include "pokemon_storage_system.h"
-extern void sub_811EFC0(u8);
-
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
diff --git a/src/naming_screen.c b/src/naming_screen.c
index c310ceb9f..22bbb84d7 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -557,7 +557,7 @@ static void DisplaySentToPCMessage(void)
stringToDisplay++;
StringExpandPlaceholders(gStringVar4, gUnknown_0858BDB8[stringToDisplay]);
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
CopyWindowToVram(0, 3);
@@ -1474,7 +1474,7 @@ static void HandleDpadMovement(struct Task *task)
static void sub_80E4894(void)
{
- FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1));
AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, gNamingScreenData->template->title, 8, 1, 0, 0);
PutWindowTilemap(gNamingScreenData->windows[3]);
}
@@ -1485,7 +1485,7 @@ static void sub_80E48E8(void)
StringCopy(buffer, gSpeciesNames[gNamingScreenData->monSpecies]);
StringAppendN(buffer, gNamingScreenData->template->title, 15);
- FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1));
AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, buffer, 8, 1, 0, 0);
PutWindowTilemap(gNamingScreenData->windows[3]);
}
@@ -1672,7 +1672,7 @@ static void sub_80E4D10(void)
u8 maxChars = gNamingScreenData->template->maxChars;
u16 unk = gNamingScreenData->inputCharBaseXPos - 0x40;
- FillWindowPixelBuffer(gNamingScreenData->windows[2], 0x11);
+ FillWindowPixelBuffer(gNamingScreenData->windows[2], PIXEL_FILL(1));
for (i = 0; i < maxChars; i++)
{
@@ -1704,7 +1704,9 @@ static const struct TextColorThing sUnkColorStruct =
static const u8 sFillValues[3] =
{
- 0xEE, 0xDD, 0xFF
+ PIXEL_FILL(0xE),
+ PIXEL_FILL(0xD),
+ PIXEL_FILL(0xF)
};
static const u8 *const sUnkColors[3] =
@@ -1766,7 +1768,7 @@ static void sub_80E4EF0(void)
{
const u8 color[3] = { 15, 1, 2 };
- FillWindowPixelBuffer(gNamingScreenData->windows[4], 0xFF);
+ FillWindowPixelBuffer(gNamingScreenData->windows[4], PIXEL_FILL(15));
AddTextPrinterParameterized3(gNamingScreenData->windows[4], 0, 2, 1, color, 0, gText_MoveOkBack);
PutWindowTilemap(gNamingScreenData->windows[4]);
CopyWindowToVram(gNamingScreenData->windows[4], 3);
diff --git a/src/normal.c b/src/normal.c
index 87c8792f1..2b592e199 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -36,8 +36,6 @@ static void sub_81162F8(u8);
static void sub_81163D0(struct Sprite *);
static void sub_81165E4(struct Sprite *);
-extern void sub_810E2C8(struct Sprite *);
-
const union AnimCmd gUnknown_0859722C[] =
{
ANIMCMD_FRAME(0, 8),
diff --git a/src/option_menu.c b/src/option_menu.c
index 122ba8d8a..2fc0d6f3e 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -13,8 +13,7 @@
#include "text_window.h"
#include "international_string_util.h"
#include "strings.h"
-
-extern void SetPokemonCryStereo(u32 val);
+#include "gba/m4a_internal.h"
// Task data
enum
@@ -620,7 +619,7 @@ static void ButtonMode_DrawChoices(u8 selection)
static void DrawTextOption(void)
{
- FillWindowPixelBuffer(WIN_TEXT_OPTION, 0x11);
+ FillWindowPixelBuffer(WIN_TEXT_OPTION, PIXEL_FILL(1));
AddTextPrinterParameterized(WIN_TEXT_OPTION, 1, gText_Option, 8, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(WIN_TEXT_OPTION, 3);
}
@@ -629,7 +628,7 @@ static void DrawOptionMenuTexts(void)
{
u8 i;
- FillWindowPixelBuffer(WIN_OPTIONS, 0x11);
+ FillWindowPixelBuffer(WIN_OPTIONS, PIXEL_FILL(1));
for (i = 0; i < MENUITEM_COUNT; i++)
{
AddTextPrinterParameterized(WIN_OPTIONS, 1, sOptionMenuItemsNames[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL);
diff --git a/src/overworld.c b/src/overworld.c
index 08fd94c1b..0ff8d5b7f 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -66,32 +66,47 @@
#include "constants/species.h"
#include "constants/weather.h"
+#define PLAYER_TRADING_STATE_IDLE 0x80
+#define PLAYER_TRADING_STATE_BUSY 0x81
+#define PLAYER_TRADING_STATE_UNK_2 0x82
+#define PLAYER_TRADING_STATE_EXITING_ROOM 0x83
+
+#define FACING_NONE 0
+#define FACING_UP 1
+#define FACING_DOWN 2
+#define FACING_LEFT 3
+#define FACING_RIGHT 4
+#define FACING_FORCED_UP 7
+#define FACING_FORCED_DOWN 8
+#define FACING_FORCED_LEFT 9
+#define FACING_FORCED_RIGHT 10
+
// event scripts
extern const u8 EventScript_WhiteOut[];
-extern const u8 EventScript_271862[];
-extern const u8 EventScript_277513[];
-extern const u8 EventScript_TradeRoom_TooBusyToNotice[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard1[];
-extern const u8 EventScript_TradeRoom_ReadTrainerCard2[];
-extern const u8 gUnknown_08277388[];
-extern const u8 gUnknown_082773A3[];
-extern const u8 gUnknown_082773BE[];
-extern const u8 gUnknown_082773D9[];
-extern const u8 gUnknown_0827741D[];
-extern const u8 gUnknown_08277432[];
-extern const u8 gUnknown_08277447[];
-extern const u8 gUnknown_0827745C[];
-extern const u8 gUnknown_08277374[];
-extern const u8 gUnknown_0827737E[];
-extern const u8 gUnknown_082773FF[];
-extern const u8 gUnknown_082773F5[];
-extern const u8 gUnknown_082774EF[];
-extern const u8 gUnknown_08277509[];
+extern const u8 EventScript_ResetMrBriney[];
+extern const u8 EventScript_DoLinkRoomExit[];
+extern const u8 gEventScript_TradeRoom_TooBusyToNotice[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_NoColor[];
+extern const u8 gEventScript_TradeRoom_ReadTrainerCard_Normal[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot2[];
+extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot3[];
+extern const u8 EventScript_RecordCenter_Spot0[];
+extern const u8 EventScript_RecordCenter_Spot1[];
+extern const u8 EventScript_RecordCenter_Spot2[];
+extern const u8 EventScript_RecordCenter_Spot3[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot0[];
+extern const u8 EventScript_SingleBattleColosseum_PlayerSpot1[];
+extern const u8 EventScript_TradeCenter_Chair1[];
+extern const u8 EventScript_TradeCenter_Chair0[];
+extern const u8 EventScript_ConfirmLeaveTradeRoom[];
+extern const u8 EventScript_TerminateLink[];
extern const struct MapLayout *const gMapLayouts[];
extern const struct MapHeader *const *const gMapGroups[];
extern const int gMaxFlashLevel;
-extern const u16 gUnknown_82EC7C4[];
+extern const u16 gOverworldBackgroundLayerFlags[];
static void Overworld_ResetStateAfterWhiteOut(void);
static void c2_80567AC(void);
@@ -106,63 +121,63 @@ static bool32 load_map_stuff(u8 *state, u32);
static bool32 map_loading_iteration_2_link(u8 *state);
static void mli4_mapscripts_and_other(void);
static void InitOverworldGraphicsRegisters(void);
-static u8 sub_8087858(u8);
-static u16 sub_80871C0(u32 a1);
+static u8 GetSpriteForLinkedPlayer(u8);
+static u16 KeyInterCB_SendNothing(u32 a1);
static void sub_80867C8(void);
static void sub_80867D8(void);
static void sub_8086AE4(void);
static void sub_80869DC(void);
static void sub_8086B14(void);
-static void sub_8086AAC(void);
+static void SetCameraToTrackGuestPlayer(void);
static void sub_8086988(bool32 arg0);
static void sub_8086A80(void);
static void sub_8086A68(void);
static void sub_8086860(void);
-static void sub_8086AC8(void);
-static void sub_8086B9C(void);
-static void sub_8086C40(void);
-static void sub_8086C90(void);
-static void sub_8086FA0(u16);
-static void sub_8086F38(u16*, s32);
-static u8 npc_something3(u8 a1, u8 a2);
+static void SetCameraToTrackGuestPlayer_2(void);
+static void CreateLinkPlayerSprites(void);
+static void ClearAllPlayerKeys(void);
+static void ResetAllTradingStates(void);
+static void UpdateHeldKeyCode(u16);
+static void UpdateAllLinkPlayers(u16*, s32);
+static u8 FlipVerticalAndClearForced(u8 a1, u8 a2);
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y);
static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
-static u8 sub_80878A0(u8 linkPlayerId);
-static u8 sub_80878C0(u8 linkPlayerId);
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y);
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId);
+static u8 GetLinkPlayerElevation(u8 linkPlayerId);
static s32 sub_80878E4(u8 linkPlayerId);
static u8 GetLinkPlayerIdAt(s16 x, s16 y);
-static void sub_808796C(u8 linkPlayerId, u8 a2);
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2);
static void ZeroEventObject(struct EventObject *eventObj);
static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y);
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
-static u8 sub_8087858(u8 linkPlayerId);
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
static void sub_8087584(void);
-static u32 sub_8087690(void);
+static u32 GetLinkSendQueueLength(void);
static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_8087480(const u8 *script);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 GetDirectionForEventScript(const u8 *script);
static void sub_8087510(void);
-static void sub_808751C(void);
+static void InitLinkRoomStartMenuScript(void);
static void sub_8087530(const u8 *script);
-static void sub_808754C(void);
-static void sub_8087568(const u8 *script);
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3);
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1);
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1);
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1);
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
-static u16 sub_808711C(u32);
-static u16 sub_8087140(u32);
-static void sub_808709C(u16 *a1);
-static u16 sub_80870B0(u32 a1);
-static u16 sub_80870F8(u32 a1);
-static u16 sub_8087068(u16 a1);
-static void c1_link_related(void);
-static void c1_link_related_func_set(u16 (*func)(u32));
+static void CreateConfirmLeaveTradeRoomPrompt(void);
+static void InitMenuBasedScript(const u8 *script);
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 a2, struct TradeRoomPlayer *a3);
+static bool32 sub_8087340(struct TradeRoomPlayer *a1);
+static bool32 sub_8087340_2(struct TradeRoomPlayer *a1);
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *a1);
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *a1);
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static u16 KeyInterCB_DeferToRecvQueue(u32);
+static u16 KeyInterCB_DeferToSendQueue(u32);
+static void ResetPlayerHeldKeys(u16 *a1);
+static u16 KeyInterCB_SelfIdle(u32 a1);
+static u16 KeyInterCB_DeferToEventScript(u32 a1);
+static u16 GetDirectionForDpadKey(u16 a1);
+static void CB1_UpdateLinkState(void);
+static void SetKeyInterceptCallback(u16 (*func)(u32));
static void SetFieldVBlankCallback(void);
static void FieldClearVBlankHBlankCallbacks(void);
static void sub_8085810(void);
@@ -171,21 +186,24 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
-IWRAM_DATA static void *sUnknown_03000E0C;
-IWRAM_DATA static u8 sUnknown_03000E10[4];
-IWRAM_DATA static u16 (*sUnknown_03000E14)(u32);
-IWRAM_DATA static u8 sUnknown_03000E18;
-IWRAM_DATA static u8 sUnknown_03000E19;
+IWRAM_DATA static void *sUnusedOverworldCallback;
+IWRAM_DATA static u8 sPlayerTradingStates[4];
+// This callback is called with a player's key code. It then returns an
+// adjusted key code, effectively intercepting the input before anything
+// can process it.
+IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32);
+IWRAM_DATA static bool8 sUnknown_03000E18;
+IWRAM_DATA static u8 sRfuKeepAliveTimer;
IWRAM_DATA static u32 sUnusedVar;
// IWRAM common
u16 *gBGTilemapBuffers1;
u16 *gBGTilemapBuffers2;
u16 *gBGTilemapBuffers3;
-u16 gUnknown_03005DA8;
+u16 gHeldKeyCodeToSend;
void (*gFieldCallback)(void);
bool8 (*gFieldCallback2)(void);
-u8 gUnknown_03005DB4;
+u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode.
u8 gFieldLinkPlayerCount;
// EWRAM vars
@@ -319,43 +337,47 @@ static const struct ScanlineEffectParams sFlashEffectParams =
0,
};
-static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
{
- sub_80879D8,
- sub_80879F8,
- sub_80879FC,
+ MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE
+ MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN
+ MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED
};
-static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8);
-static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8);
-
-static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
-{
- sub_8087A1C,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A20,
- sub_8087A1C,
- sub_8087A1C,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
- sub_8087A88,
+static u8 FacingHandler_DoNothing(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *, struct EventObject *, u8);
+static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *, struct EventObject *, u8);
+
+// These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise.
+static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *, struct EventObject *, u8) =
+{
+ FacingHandler_DoNothing,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DpadMovement,
+ FacingHandler_DoNothing,
+ FacingHandler_DoNothing,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
+ FacingHandler_ForcedFacingChange,
};
-static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *);
-static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *, struct EventObject *);
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *, struct EventObject *);
-static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) =
+// These handlers are run after an attempted movement.
+static void (*const gMovementStatusHandler[])(struct LinkPlayerEventObject *, struct EventObject *) =
{
- sub_8087AA0,
- sub_8087AA8,
+ // FALSE:
+ MovementStatusHandler_EnterFreeMode,
+ // TRUE:
+ MovementStatusHandler_TryAdvanceScript,
};
// code
@@ -387,7 +409,7 @@ void Overworld_ResetStateAfterTeleport(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- ScriptContext2_RunNewScript(EventScript_271862);
+ ScriptContext2_RunNewScript(EventScript_ResetMrBriney);
}
void Overworld_ResetStateAfterDigEscRope(void)
@@ -408,10 +430,12 @@ static void Overworld_ResetStateAfterWhiteOut(void)
FlagClear(FLAG_SYS_SAFARI_MODE);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_USE_FLASH);
- if (VarGet(VAR_0x4039) == 1)
+ // If you were defeated by Kyogre/Groudon and the step counter has
+ // maxed out, end the unusual weather.
+ if (VarGet(VAR_SHOULD_END_UNUSUAL_WEATHER) == 1)
{
- VarSet(VAR_0x4039, 0);
- VarSet(VAR_0x4037, 0);
+ VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 0);
+ VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE);
}
}
@@ -676,7 +700,7 @@ void UpdateEscapeWarp(s16 x, s16 y)
{
u8 currMapType = GetCurrentMapType();
u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
- if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE)
+ if (IsMapTypeOutdoors(currMapType) && IsMapTypeOutdoors(destMapType) != TRUE)
SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 6);
}
@@ -761,7 +785,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 +803,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 +824,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 +837,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();
@@ -821,8 +845,8 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
static void mli0_load_map(u32 a1)
{
- bool8 v2;
- bool8 indoors;
+ bool8 isOutdoors;
+ bool8 isIndoors;
LoadCurrentMapData();
if (!(sUnknown_020322D8 & 1))
@@ -835,8 +859,8 @@ static void mli0_load_map(u32 a1)
LoadEventObjTemplatesFromHeader();
}
- v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
- indoors = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
+ isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType);
+ isIndoors = IsMapTypeIndoors(gMapHeader.mapType);
sub_80EB218();
TrySetMapSaveWarpStatus();
@@ -848,11 +872,11 @@ static void mli0_load_map(u32 a1)
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
- if (v2)
+ if (isOutdoors)
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)
@@ -862,7 +886,7 @@ static void mli0_load_map(u32 a1)
else
InitMap();
- if (a1 != 1 && indoors)
+ if (a1 != 1 && isIndoors)
{
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
sub_80E9238(1);
@@ -923,7 +947,7 @@ static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *pla
static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType)
{
- if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6)
+ if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_OCEAN_ROUTE)
return DIR_EAST;
else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE)
return DIR_NORTH;
@@ -1016,7 +1040,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
case MAP_NUM(ROUTE128):
return TRUE;
default:
- if (VarGet(VAR_0x405E) < 4)
+ if (VarGet(VAR_RAYQUAZA_STATE) < 4)
return FALSE;
switch (warp->mapNum)
{
@@ -1032,7 +1056,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
{
- if (VarGet(VAR_0x40CA) != 1)
+ if (VarGet(VAR_SKY_PILLAR_STATE) != 1)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY))
return FALSE;
@@ -1057,9 +1081,9 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
static bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
{
- if (VarGet(VAR_0x405D) == 0)
+ if (VarGet(VAR_MOSSDEEP_STATE) == 0)
return FALSE;
- else if (VarGet(VAR_0x405D) > 2)
+ else if (VarGet(VAR_MOSSDEEP_STATE) > 2)
return FALSE;
else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F))
return FALSE;
@@ -1197,7 +1221,7 @@ void Overworld_ChangeMusicTo(u16 newMusic)
u8 GetMapMusicFadeoutSpeed(void)
{
const struct MapHeader *mapHeader = GetDestinationWarpMapHeader();
- if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
+ if (IsMapTypeIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
@@ -1210,7 +1234,7 @@ void TryFadeOutOldMapMusic(void)
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic())
{
if (currentMusic == MUS_NAMINORI
- && VarGet(VAR_0x40CA) == 2
+ && VarGet(VAR_SKY_PILLAR_STATE) == 2
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
&& sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
@@ -1328,13 +1352,13 @@ u8 GetLastUsedWarpMapType(void)
return GetMapTypeByWarpData(&gLastUsedWarp);
}
-bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
+bool8 IsMapTypeOutdoors(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
|| mapType == MAP_TYPE_UNDERWATER
|| mapType == MAP_TYPE_CITY
- || mapType == MAP_TYPE_6)
+ || mapType == MAP_TYPE_OCEAN_ROUTE)
return TRUE;
else
return FALSE;
@@ -1344,14 +1368,14 @@ bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
{
if (mapType == MAP_TYPE_ROUTE
|| mapType == MAP_TYPE_TOWN
- || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_OCEAN_ROUTE
|| mapType == MAP_TYPE_CITY)
return TRUE;
else
return FALSE;
}
-bool8 Overworld_MapTypeIsIndoors(u8 mapType)
+bool8 IsMapTypeIndoors(u8 mapType)
{
if (mapType == MAP_TYPE_INDOOR
|| mapType == MAP_TYPE_SECRET_BASE)
@@ -1407,9 +1431,9 @@ static void ResetSafariZoneFlag_(void)
ResetSafariZoneFlag();
}
-bool32 is_c1_link_related_active(void)
+bool32 IsUpdateLinkStateCBActive(void)
{
- if (gMain.callback1 == c1_link_related)
+ if (gMain.callback1 == CB1_UpdateLinkState)
return TRUE;
else
return FALSE;
@@ -1476,9 +1500,10 @@ void SetMainCallback1(MainCallback cb)
gMain.callback1 = cb;
}
-void sub_8085E94(void *a0)
+// This function is never called.
+void SetUnusedCallback(void *func)
{
- sUnknown_03000E0C = a0;
+ sUnusedOverworldCallback = func;
}
static bool8 map_post_load_hook_exec(void)
@@ -1595,15 +1620,15 @@ static void c2_80567AC(void)
if (map_loading_iteration_3(&gMain.state))
{
SetFieldVBlankCallback();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
SetMainCallback2(CB2_Overworld);
}
}
void CB2_ReturnToField(void)
{
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
SetMainCallback2(CB2_ReturnToFieldLink);
}
@@ -1629,12 +1654,12 @@ void CB2_ReturnToFieldLink(void)
SetMainCallback2(CB2_Overworld);
}
-void c2_8056854(void)
+void CB2_ReturnToFieldFromMultiplayer(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
- SetMainCallback1(c1_link_related);
- sub_8086C2C();
+ SetMainCallback1(CB1_UpdateLinkState);
+ ResetAllMultiplayerState();
if (gWirelessCommType != 0)
gFieldCallback = sub_80AF314;
@@ -1810,7 +1835,7 @@ static bool32 map_loading_iteration_3(u8 *state)
sub_8086AE4();
sub_80869DC();
sub_8086B14();
- sub_8086AAC();
+ SetCameraToTrackGuestPlayer();
(*state)++;
break;
case 4:
@@ -1980,9 +2005,9 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 2:
- sub_8086B9C();
+ CreateLinkPlayerSprites();
sub_8086A68();
- sub_8086AC8();
+ SetCameraToTrackGuestPlayer_2();
(*state)++;
break;
case 3:
@@ -2083,7 +2108,7 @@ static void InitOverworldGraphicsRegisters(void)
SetGpuReg(REG_OFFSET_WIN0V, 0xFF);
SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF);
SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF);
- SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3]
+ SetGpuReg(REG_OFFSET_BLDCNT, gOverworldBackgroundLayerFlags[1] | gOverworldBackgroundLayerFlags[2] | gOverworldBackgroundLayerFlags[3]
| BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7));
InitOverworldBgs();
@@ -2123,10 +2148,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 +2161,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 +2178,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)
@@ -2169,21 +2194,25 @@ static void sub_8086A80(void)
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
-static void sub_8086AAC(void)
+static void SetCameraToTrackGuestPlayer(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
-static void sub_8086AC8(void)
+// Duplicate function.
+static void SetCameraToTrackGuestPlayer_2(void)
{
- InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+ InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
static void sub_8086AE4(void)
{
u16 x, y;
GetCameraFocusCoords(&x, &y);
- sub_8088B3C(x + gUnknown_03005DB4, y);
+
+ // This is a hack of some kind; it's undone in sub_8086B14, which is called
+ // soon after this function.
+ sub_8088B3C(x + gLocalLinkPlayerId, y);
}
static void sub_8086B14(void)
@@ -2192,7 +2221,7 @@ static void sub_8086B14(void)
u16 x, y;
GetCameraFocusCoords(&x, &y);
- x -= gUnknown_03005DB4;
+ x -= gLocalLinkPlayerId;
for (i = 0; i < gFieldLinkPlayerCount; i++)
{
@@ -2200,161 +2229,180 @@ static void sub_8086B14(void)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
- sub_8086C40();
+ ClearAllPlayerKeys();
}
-static void sub_8086B9C(void)
+static void CreateLinkPlayerSprites(void)
{
u16 i;
for (i = 0; i < gFieldLinkPlayerCount; i++)
CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
}
-static void c1_link_related(void)
+
+static void CB1_UpdateLinkState(void)
{
- if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C())
+ if (gWirelessCommType == 0 || !IsRfuRecvQueueEmpty() || !IsSendingKeysToLink())
{
- u8 var = gUnknown_03005DB4;
- sub_8086F38(gLinkPartnersHeldKeys, var);
- sub_8086FA0(sUnknown_03000E14(var));
- sub_8086C40();
+ u8 selfId = gLocalLinkPlayerId;
+ UpdateAllLinkPlayers(gLinkPartnersHeldKeys, selfId);
+
+ // Note: Because guestId is between 0 and 4, while the smallest key code is
+ // LINK_KEY_CODE_EMPTY, this is functionally equivalent to `sPlayerKeyInterceptCallback(0)`.
+ // It is expecting the callback to be KeyInterCB_SelfIdle, and that will
+ // completely ignore any input parameters.
+ //
+ // UpdateHeldKeyCode performs a sanity check on its input; if
+ // sPlayerKeyInterceptCallback echoes back the argument, which is selfId, then
+ // it'll use LINK_KEY_CODE_EMPTY instead.
+ //
+ // Note 2: There are some key intercept callbacks that treat the key as a player
+ // ID. It's so hacky.
+ UpdateHeldKeyCode(sPlayerKeyInterceptCallback(selfId));
+ ClearAllPlayerKeys();
}
}
-void sub_8086C2C(void)
+void ResetAllMultiplayerState(void)
{
- sub_8086C90();
- c1_link_related_func_set(sub_80870B0);
+ ResetAllTradingStates();
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
}
-static void sub_8086C40(void)
+static void ClearAllPlayerKeys(void)
{
- sub_808709C(gLinkPartnersHeldKeys);
+ ResetPlayerHeldKeys(gLinkPartnersHeldKeys);
}
-static void c1_link_related_func_set(u16 (*func)(u32))
+static void SetKeyInterceptCallback(u16 (*func)(u32))
{
- sUnknown_03000E19 = 0;
- sUnknown_03000E14 = func;
+ sRfuKeepAliveTimer = 0;
+ sPlayerKeyInterceptCallback = func;
}
-static void sub_8086C64(void)
+// Once every ~60 frames, if the link state hasn't changed (timer reset by calls
+// to SetKeyInterceptCallback), it does a bunch of sanity checks on the connection.
+// I'm not sure if sRfuKeepAliveTimer is reset in the process, though; rfu stuff is
+// still undocumented.
+static void CheckRfuKeepAliveTimer(void)
{
- if (gWirelessCommType != 0 && ++sUnknown_03000E19 > 60)
+ if (gWirelessCommType != 0 && ++sRfuKeepAliveTimer > 60)
sub_8010198();
}
-static void sub_8086C90(void)
+static void ResetAllTradingStates(void)
{
s32 i;
for (i = 0; i < 4; i++)
- sUnknown_03000E10[i] = 0x80;
+ sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE;
}
-static bool32 sub_8086CA8(u16 a1)
+// Returns true if all connected players are in tradingState.
+static bool32 AreAllPlayersInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] != a1)
+ if (sPlayerTradingStates[i] != tradingState)
return FALSE;
return TRUE;
}
-static bool32 sub_8086CE0(u16 a1)
+static bool32 IsAnyPlayerInTradingState(u16 tradingState)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sUnknown_03000E10[i] == a1)
+ if (sPlayerTradingStates[i] == tradingState)
return TRUE;
return FALSE;
}
-static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
+static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlayer *trainer, u16 *forceFacing)
{
const u8 *script;
- if (sUnknown_03000E10[a1] == 0x80)
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_IDLE)
{
- script = sub_8087370(a3);
+ script = TryGetTileEventScript(trainer);
if (script)
{
- *a4 = sub_8087480(script);
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ *forceFacing = GetDirectionForEventScript(script);
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087530(script);
}
return;
}
- if (sub_8086CE0(0x83) == 1)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
sub_8087584();
}
return;
}
- switch (a2)
+
+ switch (key)
{
- case 24:
- if (sub_8087358(a3))
+ case LINK_KEY_CODE_START_BUTTON:
+ if (sub_8087340_2(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808751C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitLinkRoomStartMenuScript();
}
}
break;
- case 18:
- if (sub_8087388(a3) == TRUE)
+ case LINK_KEY_CODE_DPAD_DOWN:
+ if (PlayerIsAtSouthExit(trainer) == TRUE)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_808754C();
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ CreateConfirmLeaveTradeRoomPrompt();
}
}
break;
- case 25:
- script = sub_80873B4(a3);
+ case LINK_KEY_CODE_A_BUTTON:
+ script = TryInteractWithPlayer(trainer);
if (script)
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_80870F8);
- sub_8087568(script);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
+ InitMenuBasedScript(script);
}
}
break;
- case 27:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_RECV_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_808711C);
+ SetKeyInterceptCallback(KeyInterCB_DeferToRecvQueue);
sub_8087510();
}
}
break;
- case 28:
- if (sub_8087340(a3))
+ case LINK_KEY_CODE_HANDLE_SEND_QUEUE:
+ if (sub_8087340(trainer))
{
- sUnknown_03000E10[a1] = 0x81;
- if (a3->b)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ if (trainer->isLocalPlayer)
{
- c1_link_related_func_set(sub_8087140);
+ SetKeyInterceptCallback(KeyInterCB_DeferToSendQueue);
sub_8087510();
}
}
@@ -2362,388 +2410,403 @@ static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
}
}
- switch (a2)
+ switch (key)
{
- case 23:
- sUnknown_03000E10[a1] = 0x83;
+ case LINK_KEY_CODE_EXIT_ROOM:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_EXITING_ROOM;
break;
- case 22:
- sUnknown_03000E10[a1] = 0x82;
+ case LINK_KEY_CODE_UNK_2:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_UNK_2;
break;
- case 26:
- sUnknown_03000E10[a1] = 0x80;
- if (a3->b)
- c1_link_related_func_set(sub_80870B0);
+ case LINK_KEY_CODE_UNK_4:
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_IDLE;
+ if (trainer->isLocalPlayer)
+ SetKeyInterceptCallback(KeyInterCB_SelfIdle);
break;
- case 29:
- if (sUnknown_03000E10[a1] == 0x82)
- sUnknown_03000E10[a1] = 0x81;
+ case LINK_KEY_CODE_UNK_7:
+ if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_UNK_2)
+ sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
break;
}
}
-static void sub_8086F38(u16 *a1, s32 a2)
+static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
{
- struct UnkStruct_8054FF8 st;
+ struct TradeRoomPlayer trainer;
s32 i;
for (i = 0; i < 4; i++)
{
- u8 v5 = a1[i];
- u16 v8 = 0;
- sub_80872D8(i, a2, &st);
- sub_8086D18(i, v5, &st, &v8);
- if (sUnknown_03000E10[i] == 0x80)
- v8 = sub_8087068(v5);
- sub_808796C(i, v8);
+ u8 key = keys[i];
+ u16 setFacing = FACING_NONE;
+ LoadTradeRoomPlayer(i, selfId, &trainer);
+ HandleLinkPlayerKeyInput(i, key, &trainer, &setFacing);
+ if (sPlayerTradingStates[i] == PLAYER_TRADING_STATE_IDLE)
+ setFacing = GetDirectionForDpadKey(key);
+ SetPlayerFacingDirection(i, setFacing);
}
}
-static void sub_8086FA0(u16 a1)
+static void UpdateHeldKeyCode(u16 key)
{
- if (a1 >= 17 && a1 < 30)
- gUnknown_03005DA8 = a1;
+ if (key >= LINK_KEY_CODE_EMPTY && key < LINK_KEY_CODE_UNK_8)
+ gHeldKeyCodeToSend = key;
else
- gUnknown_03005DA8 = 17;
+ gHeldKeyCodeToSend = LINK_KEY_CODE_EMPTY;
if (gWirelessCommType != 0
- && sub_8087690() > 1
- && is_c1_link_related_active() == TRUE
- && sub_8009F3C() == TRUE)
+ && GetLinkSendQueueLength() > 1
+ && IsUpdateLinkStateCBActive() == TRUE
+ && IsSendingKeysToLink() == TRUE)
{
- switch (a1)
+ switch (key)
{
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 24:
- case 25:
- gUnknown_03005DA8 = 0;
+ case LINK_KEY_CODE_EMPTY:
+ case LINK_KEY_CODE_DPAD_DOWN:
+ case LINK_KEY_CODE_DPAD_UP:
+ case LINK_KEY_CODE_DPAD_LEFT:
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ case LINK_KEY_CODE_START_BUTTON:
+ case LINK_KEY_CODE_A_BUTTON:
+ gHeldKeyCodeToSend = LINK_KEY_CODE_NULL;
break;
}
}
}
-static u16 sub_808700C(u32 a1)
+static u16 KeyInterCB_ReadButtons(u32 key)
{
if (gMain.heldKeys & DPAD_UP)
- return 19;
+ return LINK_KEY_CODE_DPAD_UP;
else if (gMain.heldKeys & DPAD_DOWN)
- return 18;
+ return LINK_KEY_CODE_DPAD_DOWN;
else if (gMain.heldKeys & DPAD_LEFT)
- return 20;
+ return LINK_KEY_CODE_DPAD_LEFT;
else if (gMain.heldKeys & DPAD_RIGHT)
- return 21;
+ return LINK_KEY_CODE_DPAD_RIGHT;
else if (gMain.newKeys & START_BUTTON)
- return 24;
+ return LINK_KEY_CODE_START_BUTTON;
else if (gMain.newKeys & A_BUTTON)
- return 25;
+ return LINK_KEY_CODE_A_BUTTON;
else
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087068(u16 a1)
+static u16 GetDirectionForDpadKey(u16 a1)
{
switch (a1)
{
- case 21:
- return 4;
- case 20:
- return 3;
- case 19:
- return 1;
- case 18:
- return 2;
+ case LINK_KEY_CODE_DPAD_RIGHT:
+ return FACING_RIGHT;
+ case LINK_KEY_CODE_DPAD_LEFT:
+ return FACING_LEFT;
+ case LINK_KEY_CODE_DPAD_UP:
+ return FACING_UP;
+ case LINK_KEY_CODE_DPAD_DOWN:
+ return FACING_DOWN;
default:
- return 0;
+ return FACING_NONE;
}
}
-static void sub_808709C(u16 *a1)
+// Overwrites the keys with 0x11
+static void ResetPlayerHeldKeys(u16 *keys)
{
s32 i;
for (i = 0; i < 4; i++)
- a1[i] = 17;
+ keys[i] = LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870B0(u32 a1)
+
+static u16 KeyInterCB_SelfIdle(u32 key)
{
- if (ScriptContext2_IsEnabled() == 1)
- return 17;
- if (sub_800B4DC() > 4)
- return 27;
- if (sub_8087690() <= 4)
- return sub_808700C(a1);
- return 28;
+ if (ScriptContext2_IsEnabled() == TRUE)
+ return LINK_KEY_CODE_EMPTY;
+ if (GetLinkRecvQueueLength() > 4)
+ return LINK_KEY_CODE_HANDLE_RECV_QUEUE;
+ if (GetLinkSendQueueLength() <= 4)
+ return KeyInterCB_ReadButtons(key);
+ return LINK_KEY_CODE_HANDLE_SEND_QUEUE;
}
-static u16 sub_80870EC(u32 a1)
+static u16 sub_80870EC(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80870F8(u32 a1)
+// Ignore the player's inputs as long as there is an event script
+// in ScriptContext2.
+static u16 KeyInterCB_DeferToEventScript(u32 key)
{
u16 retVal;
if (ScriptContext2_IsEnabled() == TRUE)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
- c1_link_related_func_set(sub_80870EC);
+ retVal = LINK_KEY_CODE_UNK_4;
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_808711C(u32 a1)
+// Ignore the player's inputs as long as there are events being recived.
+static u16 KeyInterCB_DeferToRecvQueue(u32 key)
{
u16 retVal;
- if (sub_800B4DC() > 2)
+ if (GetLinkRecvQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087140(u32 a1)
+// Ignore the player's inputs as long as there are events being sent.
+static u16 KeyInterCB_DeferToSendQueue(u32 key)
{
u16 retVal;
- if (sub_8087690() > 2)
+ if (GetLinkSendQueueLength() > 2)
{
- retVal = 17;
+ retVal = LINK_KEY_CODE_EMPTY;
}
else
{
- retVal = 26;
+ retVal = LINK_KEY_CODE_UNK_4;
ScriptContext2_Disable();
- c1_link_related_func_set(sub_80870EC);
+ SetKeyInterceptCallback(sub_80870EC);
}
return retVal;
}
-static u16 sub_8087164(u32 a1)
+static u16 KeyInterCB_DoNothingAndKeepAlive(u32 key)
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087170(u32 linkPlayerId)
+static u16 sub_8087170(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[linkPlayerId] == 0x82)
+ if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2)
{
if (gMain.newKeys & B_BUTTON)
{
- c1_link_related_func_set(sub_8087164);
- return 29;
+ SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive);
+ return LINK_KEY_CODE_UNK_7;
}
else
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
}
else
{
- sub_8086C64();
- return 17;
+ CheckRfuKeepAliveTimer();
+ return LINK_KEY_CODE_EMPTY;
}
}
static u16 sub_80871AC(u32 a1)
{
- c1_link_related_func_set(sub_8087170);
- return 22;
+ SetKeyInterceptCallback(sub_8087170);
+ return LINK_KEY_CODE_UNK_2;
}
-static u16 sub_80871C0(u32 a1)
+static u16 KeyInterCB_SendNothing(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871C4(u32 a1)
+static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId)
{
- if (sUnknown_03000E10[a1] != 0x83)
- sub_8086C64();
- if (sub_8086CA8(0x83) == TRUE)
+ // keyOrPlayerId could be any keycode. This callback does no sanity checking
+ // on the size of the key. It's assuming that it is being called from
+ // CB1_UpdateLinkState.
+ if (sPlayerTradingStates[keyOrPlayerId] != PLAYER_TRADING_STATE_EXITING_ROOM)
+ CheckRfuKeepAliveTimer();
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
{
- ScriptContext1_SetupScript(EventScript_277513);
- c1_link_related_func_set(sub_80871C0);
+ ScriptContext1_SetupScript(EventScript_DoLinkRoomExit);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing);
}
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_80871FC(u32 a1)
+static u16 KeyInterCB_SendExitRoomKey(u32 key)
{
- c1_link_related_func_set(sub_80871C4);
- return 23;
+ SetKeyInterceptCallback(KeyInterCB_WaitForPlayersToExit);
+ return LINK_KEY_CODE_EXIT_ROOM;
}
-static u16 sub_8087210(u32 a1)
+// Duplicate function.
+static u16 KeyInterCB_SendNothing_2(u32 key)
{
- return 17;
+ return LINK_KEY_CODE_EMPTY;
}
u32 sub_8087214(void)
{
- if (sub_8086CE0(0x83) == TRUE)
+ if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
return 2;
- if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82)
+ if (sPlayerKeyInterceptCallback == sub_8087170 && sPlayerTradingStates[gLocalLinkPlayerId] != PLAYER_TRADING_STATE_UNK_2)
return 0;
- if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81)
+ if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerTradingStates[gLocalLinkPlayerId] == PLAYER_TRADING_STATE_BUSY)
return 2;
- if (sub_8086CA8(0x82) != 0)
+ if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_UNK_2) != FALSE)
return 1;
return 0;
}
bool32 sub_808727C(void)
{
- return sub_8086CE0(0x83);
+ return IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM);
}
u16 sub_8087288(void)
{
- c1_link_related_func_set(sub_80871AC);
+ SetKeyInterceptCallback(sub_80871AC);
return 0;
}
u16 sub_808729C(void)
{
- c1_link_related_func_set(sub_80870F8);
+ SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
return 0;
}
-u16 sub_80872B0(void)
+// The exit room key will be sent at the next opportunity.
+// The return value is meaningless.
+u16 QueueExitLinkRoomKey(void)
{
- c1_link_related_func_set(sub_80871FC);
+ SetKeyInterceptCallback(KeyInterCB_SendExitRoomKey);
return 0;
}
u16 sub_80872C4(void)
{
- c1_link_related_func_set(sub_8087210);
+ SetKeyInterceptCallback(KeyInterCB_SendNothing_2);
return 0;
}
-static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
+static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRoomPlayer *trainer)
{
s16 x, y;
- a3->a = linkPlayerId;
- a3->b = (linkPlayerId == a2) ? 1 : 0;
- a3->c = gLinkPlayerEventObjects[linkPlayerId].mode;
- a3->d = sub_80878A0(linkPlayerId);
- sub_8087878(linkPlayerId, &x, &y);
- a3->sub.x = x;
- a3->sub.y = y;
- a3->sub.height = sub_80878C0(linkPlayerId);
- a3->field_C = MapGridGetMetatileBehaviorAt(x, y);
+ trainer->playerId = linkPlayerId;
+ trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0;
+ trainer->c = gLinkPlayerEventObjects[linkPlayerId].movementMode;
+ trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId);
+ GetLinkPlayerCoords(linkPlayerId, &x, &y);
+ trainer->pos.x = x;
+ trainer->pos.y = y;
+ trainer->pos.height = GetLinkPlayerElevation(linkPlayerId);
+ trainer->field_C = MapGridGetMetatileBehaviorAt(x, y);
}
-static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1)
+static bool32 sub_8087340(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1)
+// Duplicate function.
+static bool32 sub_8087340_2(struct TradeRoomPlayer *player)
{
- u8 v1 = a1->c;
- if (v1 == 2 || v1 == 0)
+ u8 v1 = player->c;
+ if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1)
+static u8 *TryGetTileEventScript(struct TradeRoomPlayer *player)
{
- if (a1->c != 2)
- return 0;
- return GetCoordEventScriptAtMapPosition(&a1->sub);
+ if (player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
+ return GetCoordEventScriptAtMapPosition(&player->pos);
}
-static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1)
+static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
{
- if (a1->c != 2 && a1->c != 0)
+ if (player->c != MOVEMENT_MODE_SCRIPTED && player->c != MOVEMENT_MODE_FREE)
return FALSE;
- else if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C))
+ else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C))
return FALSE;
- else if (a1->d != 1)
+ else if (player->facing != 1)
return FALSE;
else
return TRUE;
}
-static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1)
+static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
{
- struct MapPosition unkStruct;
+ struct MapPosition otherPlayerPos;
u8 linkPlayerId;
- if (a1->c && a1->c != 2)
- return 0;
+ if (player->c != MOVEMENT_MODE_FREE && player->c != MOVEMENT_MODE_SCRIPTED)
+ return FACING_NONE;
- unkStruct = a1->sub;
- unkStruct.x += gDirectionToVectors[a1->d].x;
- unkStruct.y += gDirectionToVectors[a1->d].y;
- unkStruct.height = 0;
- linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
+ otherPlayerPos = player->pos;
+ otherPlayerPos.x += gDirectionToVectors[player->facing].x;
+ otherPlayerPos.y += gDirectionToVectors[player->facing].y;
+ otherPlayerPos.height = 0;
+ linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
if (linkPlayerId != 4)
{
- if (!a1->b)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (sUnknown_03000E10[linkPlayerId] != 0x80)
- return EventScript_TradeRoom_TooBusyToNotice;
- else if (!sub_80B39D4(linkPlayerId))
- return EventScript_TradeRoom_ReadTrainerCard1;
+ if (!player->isLocalPlayer)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE)
+ return gEventScript_TradeRoom_TooBusyToNotice;
+ else if (!GetLinkTrainerCardColor(linkPlayerId))
+ return gEventScript_TradeRoom_ReadTrainerCard_NoColor;
else
- return EventScript_TradeRoom_ReadTrainerCard2;
- }
-
- return GetInteractedLinkPlayerScript(&unkStruct, a1->field_C, a1->d);
-}
-
-static u16 sub_8087480(const u8 *script)
-{
- if (script == gUnknown_08277388)
- return 10;
- else if (script == gUnknown_082773A3)
- return 9;
- else if (script == gUnknown_082773BE)
- return 10;
- else if (script == gUnknown_082773D9)
- return 9;
- else if (script == gUnknown_0827741D)
- return 10;
- else if (script == gUnknown_08277432)
- return 9;
- else if (script == gUnknown_08277447)
- return 10;
- else if (script == gUnknown_0827745C)
- return 9;
- else if (script == gUnknown_08277374)
- return 10;
- else if (script == gUnknown_0827737E)
- return 9;
- else if (script == gUnknown_082773F5)
- return 10;
- else if (script == gUnknown_082773FF)
- return 9;
+ return gEventScript_TradeRoom_ReadTrainerCard_Normal;
+ }
+
+ return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing);
+}
+
+// This returns which direction to force the player to look when one of
+// these event scripts runs.
+static u16 GetDirectionForEventScript(const u8 *script)
+{
+ if (script == EventScript_DoubleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_DoubleBattleColosseum_PlayerSpot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_RecordCenter_Spot2)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_RecordCenter_Spot3)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_SingleBattleColosseum_PlayerSpot1)
+ return FACING_FORCED_LEFT;
+ else if (script == EventScript_TradeCenter_Chair0)
+ return FACING_FORCED_RIGHT;
+ else if (script == EventScript_TradeCenter_Chair1)
+ return FACING_FORCED_LEFT;
else
- return 0;
+ return FACING_NONE;
}
static void sub_8087510(void)
@@ -2751,7 +2814,7 @@ static void sub_8087510(void)
ScriptContext2_Enable();
}
-static void sub_808751C(void)
+static void InitLinkRoomStartMenuScript(void)
{
PlaySE(SE_WIN_OPEN);
ShowStartMenu();
@@ -2765,14 +2828,14 @@ static void sub_8087530(const u8 *script)
ScriptContext2_Enable();
}
-static void sub_808754C(void)
+static void CreateConfirmLeaveTradeRoomPrompt(void)
{
PlaySE(SE_WIN_OPEN);
- ScriptContext1_SetupScript(gUnknown_082774EF);
+ ScriptContext1_SetupScript(EventScript_ConfirmLeaveTradeRoom);
ScriptContext2_Enable();
}
-static void sub_8087568(const u8 *script)
+static void InitMenuBasedScript(const u8 *script)
{
PlaySE(SE_SELECT);
ScriptContext1_SetupScript(script);
@@ -2781,18 +2844,18 @@ static void sub_8087568(const u8 *script)
static void sub_8087584(void)
{
- ScriptContext1_SetupScript(gUnknown_08277509);
+ ScriptContext1_SetupScript(EventScript_TerminateLink);
ScriptContext2_Enable();
}
bool32 sub_8087598(void)
{
- if (!is_c1_link_related_active())
- return 0;
- if (sub_800B4DC() >= 3)
- sUnknown_03000E18 = 1;
+ if (!IsUpdateLinkStateCBActive())
+ return FALSE;
+ if (GetLinkRecvQueueLength() >= 3)
+ sUnknown_03000E18 = TRUE;
else
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
return sUnknown_03000E18;
}
@@ -2800,19 +2863,19 @@ bool32 sub_80875C8(void)
{
u8 temp;
- if (sub_800B4DC() < 2)
+ if (GetLinkRecvQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_808711C)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToRecvQueue)
return TRUE;
- else if (sUnknown_03000E14 != sub_80870F8)
+ else if (sPlayerKeyInterceptCallback != KeyInterCB_DeferToEventScript)
return FALSE;
temp = sUnknown_03000E18;
- sUnknown_03000E18 = 0;
+ sUnknown_03000E18 = FALSE;
if (temp == TRUE)
return TRUE;
@@ -2824,13 +2887,13 @@ bool32 sub_80875C8(void)
bool32 sub_8087634(void)
{
- if (sub_8087690() < 2)
+ if (GetLinkSendQueueLength() < 2)
return FALSE;
- else if (is_c1_link_related_active() != TRUE)
+ else if (IsUpdateLinkStateCBActive() != TRUE)
return FALSE;
- else if (sub_8009F3C() != TRUE)
+ else if (IsSendingKeysToLink() != TRUE)
return FALSE;
- else if (sUnknown_03000E14 == sub_8087140)
+ else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToSendQueue)
return TRUE;
else
return FALSE;
@@ -2840,13 +2903,13 @@ bool32 sub_808766C(void)
{
if (gWirelessCommType != 0)
return FALSE;
- else if (!sub_8009F3C())
+ else if (!IsSendingKeysToLink())
return FALSE;
else
return TRUE;
}
-static u32 sub_8087690(void)
+static u32 GetLinkSendQueueLength(void)
{
if (gWirelessCommType != 0)
return gUnknown_03005000.unk_9e8.unk_232;
@@ -2881,7 +2944,7 @@ static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
linkPlayerEventObj->active = 1;
linkPlayerEventObj->linkPlayerId = linkPlayerId;
linkPlayerEventObj->eventObjId = eventObjId;
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
eventObj->active = 1;
eventObj->singleMovementActive = a4;
@@ -2923,14 +2986,15 @@ static void sub_808780C(u8 linkPlayerId)
eventObj->active = 0;
}
-static u8 sub_8087858(u8 linkPlayerId)
+// Returns the spriteId corresponding to this player.
+static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->spriteId;
}
-static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
+static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -2938,14 +3002,14 @@ static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
*y = eventObj->currentCoords.y;
}
-static u8 sub_80878A0(u8 linkPlayerId)
+static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
return eventObj->range.as_byte;
}
-static u8 sub_80878C0(u8 linkPlayerId)
+static u8 GetLinkPlayerElevation(u8 linkPlayerId)
{
u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId;
struct EventObject *eventObj = &gEventObjects[eventObjId];
@@ -2965,7 +3029,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
for (i = 0; i < 4; i++)
{
if (gLinkPlayerEventObjects[i].active
- && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2))
+ && (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2))
{
struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId];
if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y)
@@ -2975,7 +3039,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y)
return 4;
}
-static void sub_808796C(u8 linkPlayerId, u8 a2)
+static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
{
struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId];
u8 eventObjId = linkPlayerEventObj->eventObjId;
@@ -2983,94 +3047,111 @@ static void sub_808796C(u8 linkPlayerId, u8 a2)
if (linkPlayerEventObj->active)
{
- if (a2 > 10)
+ if (facing > FACING_FORCED_RIGHT)
+ {
eventObj->triggerGroundEffectsOnMove = 1;
+ }
else
- gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj);
+ {
+ // This is a hack to split this code onto two separate lines, without declaring a local variable.
+ // C++ style inline variables would be nice here.
+ #define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, eventObj, facing)
+
+ gMovementStatusHandler[TEMP](linkPlayerEventObj, eventObj);
+
+ // Clean up the hack.
+ #undef TEMP
+ }
}
}
-static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+
+static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 1;
+ return FACING_UP;
}
-static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+// Duplicate Function
+static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3);
+ return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3);
}
-static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DoNothing(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- return 0;
+ return FALSE;
}
-static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
s16 x, y;
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y);
if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y))
{
- return 0;
+ return FALSE;
}
else
{
eventObj->directionSequenceIndex = 16;
ShiftEventObjectCoords(eventObj, x, y);
EventObjectUpdateZCoord(eventObj);
- return 1;
+ return TRUE;
}
}
-static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
+static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3)
{
- eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte);
- return 0;
+ eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte);
+ return FALSE;
}
-static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+// This is called every time a free movement happens. Most of the time it's a No-Op.
+static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
- linkPlayerEventObj->mode = 0;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE;
}
-static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
+static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj)
{
eventObj->directionSequenceIndex--;
- linkPlayerEventObj->mode = 1;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_FROZEN;
MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y);
if (!eventObj->directionSequenceIndex)
{
ShiftStillEventObjectCoords(eventObj);
- linkPlayerEventObj->mode = 2;
+ linkPlayerEventObj->movementMode = MOVEMENT_MODE_SCRIPTED;
}
}
-static u8 npc_something3(u8 a1, u8 a2)
+// Flip Up/Down facing codes. If newFacing doesn't specify a direction, default
+// to oldFacing. Note that this clears also the "FORCED" part of the facing code,
+// even for Left/Right codes.
+static u8 FlipVerticalAndClearForced(u8 newFacing, u8 oldFacing)
{
- switch (a1 - 1)
+ switch (newFacing)
{
- case 0:
- case 6:
- return 2;
- case 1:
- case 7:
- return 1;
- case 2:
- case 8:
- return 3;
- case 3:
- case 9:
- return 4;
+ case FACING_UP:
+ case FACING_FORCED_UP:
+ return DIR_NORTH;
+ case FACING_DOWN:
+ case FACING_FORCED_DOWN:
+ return DIR_SOUTH;
+ case FACING_LEFT:
+ case FACING_FORCED_LEFT:
+ return DIR_WEST;
+ case FACING_RIGHT:
+ case FACING_FORCED_RIGHT:
+ return DIR_EAST;
}
- return a2;
+ return oldFacing;
}
static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y)
@@ -3130,7 +3211,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation);
- if (!linkPlayerEventObj->mode)
+ if (!linkPlayerEventObj->movementMode != MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte));
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte));
diff --git a/src/party_menu.c b/src/party_menu.c
index 15b5d24d8..ec35fc068 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -63,6 +63,7 @@
#include "window.h"
#include "constants/battle.h"
#include "constants/battle_frontier.h"
+#include "constants/easy_chat.h"
#include "constants/field_effects.h"
#include "constants/flags.h"
#include "constants/items.h"
@@ -2753,7 +2754,7 @@ static void sub_81B1B8C(u8 taskId)
{
if (gTasks[taskId].data[0] == 0)
{
- sub_8198070(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
}
DestroyTask(taskId);
@@ -2778,7 +2779,7 @@ static void sub_81B1C1C(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
- sub_8198070(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
if (sub_81221AC() == TRUE)
{
@@ -2935,7 +2936,7 @@ u8 pokemon_ailments_get_primary(u32 status)
return AILMENT_NONE;
}
-u8 sub_81B205C(struct Pokemon *mon)
+u8 GetMonAilment(struct Pokemon *mon)
{
u8 ailment;
@@ -3108,7 +3109,7 @@ static void sub_81B239C(u8 a)
}
DeactivateAllTextPrinters();
for (i = 0; i < PARTY_SIZE; i++)
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
LoadUserWindowBorderGfx(0, 0x4F, 0xD0);
LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
@@ -3126,7 +3127,7 @@ static void sub_81B2428(bool8 a)
if (a == TRUE)
{
firstWindowId = AddWindow(&gUnknown_08615918);
- FillWindowPixelBuffer(firstWindowId, 0);
+ FillWindowPixelBuffer(firstWindowId, PIXEL_FILL(0));
mainOffset = GetStringCenterAlignXOffset(0, gMenuText_Confirm, 48);
AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, gUnknown_086157FC[0], -1, gMenuText_Confirm);
PutWindowTilemap(firstWindowId);
@@ -3139,7 +3140,7 @@ static void sub_81B2428(bool8 a)
windowId = AddWindow(&gUnknown_08615908);
offset = 3;
}
- FillWindowPixelBuffer(windowId, 0);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
if (gUnknown_0203CEC8.unk8_0 != 10)
{
mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel, 48);
@@ -3354,7 +3355,7 @@ static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203C
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
- u8 ailment = sub_81B205C(mon);
+ u8 ailment = GetMonAilment(mon);
if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS)
{
if (c != 0)
@@ -3479,8 +3480,9 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *pt
FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[0], ptr->unk0->unk4[20], ptr->unk0->unk4[21] + 1, hpFraction, 2);
if (hpFraction != ptr->unk0->unk4[22])
{
- FillWindowPixelRect(ptr->windowId, 13, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1);
- FillWindowPixelRect(ptr->windowId, 2, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2);
+ // This appears to be an alternating fill
+ FillWindowPixelRect(ptr->windowId, 0x0D, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1);
+ FillWindowPixelRect(ptr->windowId, 0x02, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2);
}
CopyWindowToVram(ptr->windowId, 2);
}
@@ -3501,7 +3503,7 @@ static void sub_81B302C(u8 *ptr)
{
if (*ptr != 0xFF)
{
- sub_8198070(*ptr, 0);
+ ClearStdWindowAndFrameToTransparent(*ptr, 0);
RemoveWindow(*ptr);
*ptr = 0xFF;
schedule_bg_copy_tilemap_to_vram(2);
@@ -3546,7 +3548,7 @@ void display_pokemon_menu_message(u32 stringID)
else if (sub_81B314C() == FALSE)
stringID = 1;
}
- SetWindowBorderStyle(*windowPtr, FALSE, 0x4F, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 0xD);
StringExpandPlaceholders(gStringVar4, gUnknown_08615AF4[stringID]);
AddTextPrinterParameterized(*windowPtr, 1, gStringVar4, 0, 1, 0, 0);
schedule_bg_copy_tilemap_to_vram(2);
@@ -3596,7 +3598,7 @@ static u8 sub_81B31B0(u8 a)
}
gUnknown_0203CEC4->unkC[0] = AddWindow(&window);
- SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
if (a == 3)
return gUnknown_0203CEC4->unkC[0];
cursorDimension = GetMenuCursorDimensionByFont(1, 0);
@@ -3616,7 +3618,7 @@ static u8 sub_81B31B0(u8 a)
static void sub_81B3300(const u8 *text)
{
- SetWindowBorderStyle(6, FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13);
gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(6, 1, text, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
}
@@ -3629,7 +3631,7 @@ static void sub_81B334C(void)
static u8 sub_81B3364(void)
{
gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970);
- SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
return gUnknown_0203CEC4->unkC[0];
}
@@ -3833,7 +3835,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);
}
@@ -4211,7 +4213,11 @@ static void sub_81B452C(void)
{
u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B4578, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B4578,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B4578(void)
@@ -5178,7 +5184,7 @@ static void party_menu_link_mon_status_condition_object(u16 species, u8 status,
static void party_menu_get_status_condition_and_update_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
- party_menu_update_status_condition_object(sub_81B205C(mon), ptr);
+ party_menu_update_status_condition_object(GetMonAilment(mon), ptr);
}
static void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr)
@@ -6385,7 +6391,11 @@ static void sub_81B814C(void)
sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC);
mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL);
- sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B81A8, 3);
+ DoEasyChatScreen(
+ EASY_CHAT_TYPE_MAIL,
+ gSaveBlock1Ptr->mail[mail].words,
+ sub_81B81A8,
+ EASY_CHAT_PERSON_DISPLAY_NONE);
}
static void sub_81B81A8(void)
@@ -6513,7 +6523,7 @@ static void sub_81B8474(u8 taskId)
gTasks[taskId].func = sub_81B8104;
}
-void sub_81B8518(u8 unused)
+void InitChooseHalfPartyForBattle(u8 unused)
{
sub_81B8558();
InitPartyMenu(4, 0, 0, 0, 0, sub_81B1370, gMain.savedCallback);
@@ -7319,9 +7329,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/player_pc.c b/src/player_pc.c
index 0d08a5e7b..6e78533e7 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -361,14 +361,14 @@ static void PlayerPCProcessMenuInput(u8 taskId)
break;
case MENU_B_PRESSED:
PlaySE(SE_SELECT);
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
gTasks[taskId].func = PlayerPC_TurnOff;
break;
default:
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -403,7 +403,7 @@ static void PlayerPC_Mailbox(u8 taskId)
ItemStorage_SetItemAndMailCount(taskId);
if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE)
{
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
Mailbox_DrawMailboxMenu(taskId);
gTasks[taskId].func = Mailbox_ProcessInput;
}
@@ -451,7 +451,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var)
static void ItemStorageMenuPrint(const u8 *textPtr)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, textPtr, 0, 1, 0, 0);
}
@@ -506,7 +506,7 @@ void sub_816B31C(void)
void Mailbox_DoRedrawMailboxMenuAfterReturn(void)
{
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1);
pal_fill_black();
}
@@ -560,7 +560,7 @@ static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss)
FreeAndReserveObjectSpritePalettes();
LoadListMenuArrowsGfx();
sub_8122344(gUnknown_0203BCC4->spriteIds, 7);
- sub_8197434(0,0);
+ ClearDialogWindowAndFrame(0,0);
gTasks[taskId].func = ItemStorage_ProcessWithdrawTossInput;
}
@@ -583,7 +583,7 @@ static void sub_816B4DC(u8 taskId)
{
u16 *data = gTasks[taskId].data;
- sub_8198070(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -761,7 +761,7 @@ static void Mailbox_MoveToBag(u8 taskId)
static void Mailbox_DrawYesNoBeforeMove(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
gTasks[taskId].func = Mailbox_MoveToBagYesNoPrompt;
}
@@ -863,7 +863,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId)
static void Mailbox_Cancel(u8 taskId)
{
sub_81D1D04(2);
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
Mailbox_DrawMailboxMenu(taskId);
schedule_bg_copy_tilemap_to_vram(0);
gTasks[taskId].func = Mailbox_ProcessInput;
@@ -892,7 +892,7 @@ static u8 sub_816BC7C(u8 a)
if (*windowIdLoc == 0xFF)
{
*windowIdLoc = AddWindow(&gUnknown_085DFF5C[a]);
- SetWindowBorderStyle(*windowIdLoc, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(*windowIdLoc, FALSE, 0x214, 0xE);
schedule_bg_copy_tilemap_to_vram(0);
}
return *windowIdLoc;
@@ -903,7 +903,7 @@ static void sub_816BCC4(u8 a)
u8 *windowIdLoc = &(gUnknown_0203BCC4->windowIds[a]);
if (*windowIdLoc != 0xFF)
{
- sub_8198070(*windowIdLoc, FALSE);
+ ClearStdWindowAndFrameToTransparent(*windowIdLoc, FALSE);
ClearWindowTilemap(*windowIdLoc);
schedule_bg_copy_tilemap_to_vram(0);
RemoveWindow(*windowIdLoc);
@@ -977,7 +977,7 @@ static void sub_816BEF0(s32 id)
description = (u8 *)ItemId_GetDescription(gSaveBlock1Ptr->pcItems[id].itemId);
else
description = ItemStorage_GetItemPcResponse(ITEMPC_GO_BACK_TO_PREV);
- FillWindowPixelBuffer(windowId, 17);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
AddTextPrinterParameterized(windowId, 1, description, 0, 1, 0, NULL);
}
@@ -1005,7 +1005,7 @@ static void sub_816BFE0(u8 y, u8 b, u8 speed)
{
u8 windowId = gUnknown_0203BCC4->windowIds[0];
if (b == 0xFF)
- FillWindowPixelRect(windowId, 17, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ FillWindowPixelRect(windowId, PIXEL_FILL(1), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
AddTextPrinterParameterized4(windowId, 1, 0, y, 0, 0, gUnknown_085DFF8C, speed, gText_SelectorArrow2);
}
@@ -1123,7 +1123,7 @@ static const u8* ItemStorage_GetItemPcResponse(u16 itemId)
static void ItemStorage_PrintItemPcResponse(const u8 *string)
{
u8 windowId = gUnknown_0203BCC4->windowIds[1];
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
StringExpandPlaceholders(gStringVar4, string);
AddTextPrinterParameterized(windowId, 1, gStringVar4, 0, 1, 0, NULL);
}
@@ -1170,7 +1170,7 @@ static void ItemStorage_GoBackToPlayerPCMenu_InitStorage(u8 taskId)
data = gTasks[taskId].data;
if (!IsDma3ManagerBusyWithBgCopy())
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
if (!data[3])
InitItemStorageMenu(taskId, ITEMPC_MENU_WITHDRAW);
else
diff --git a/src/poison.c b/src/poison.c
index c86ec2cd8..9af981694 100644
--- a/src/poison.c
+++ b/src/poison.c
@@ -3,8 +3,6 @@
#include "trig.h"
#include "constants/rgb.h"
-extern void sub_80A77C8(struct Sprite *);
-
void sub_810DBAC(struct Sprite *);
void sub_810DC2C(struct Sprite *);
void sub_810DCD0(struct Sprite *);
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 3fd4f34df..2682754aa 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -665,7 +665,7 @@ static void HandleInitWindows(void)
for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
schedule_bg_copy_tilemap_to_vram(0);
@@ -749,7 +749,7 @@ static void sub_8135FCC(s32 pkblId)
struct Pokeblock *pokeblock;
u16 rectTilemapSrc[2];
- FillWindowPixelBuffer(7, 0);
+ FillWindowPixelBuffer(7, PIXEL_FILL(0));
if (pkblId != LIST_B_PRESSED)
{
@@ -1120,7 +1120,7 @@ static void PutPokeblockOptionsWindow(u8 taskId)
data[1] = 9;
sub_8136418();
- SetWindowBorderStyle(data[1], 0, 1, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(data[1], 0, 1, 0xE);
sub_81995E4(data[1], sPokeblockMenu->optionsNo, sPokeblockMenuActions, sPokeblockMenu->pokeblockOptionsIds);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[1], sPokeblockMenu->optionsNo, 0);
PutWindowTilemap(data[1]);
@@ -1173,7 +1173,7 @@ static void PokeblockAction_Toss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8198070(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[1], FALSE);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId].color]);
StringExpandPlaceholders(gStringVar4, gText_ThrowAwayVar1);
DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu);
@@ -1219,7 +1219,7 @@ static void HandleErasePokeblock(u8 taskId)
static void TossPokeblockChoice_No(u8 taskId)
{
- sub_8197DF8(10, FALSE);
+ ClearDialogWindowAndFrameToTransparent(10, FALSE);
schedule_bg_copy_tilemap_to_vram(1);
sub_81363BC();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
@@ -1266,7 +1266,7 @@ static void PokeblockAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8198070(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[1], FALSE);
schedule_bg_copy_tilemap_to_vram(1);
sub_81363BC();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index b1f182b66..da803f454 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -55,8 +55,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const u16 gUnknown_0860F074[];
-extern bool8 sub_81221EC(void);
-
// this file's functions
static void HandleInitBackgrounds(void);
static void HandleInitWindows(void);
@@ -581,7 +579,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
gMain.state++;
break;
case 10:
- SetWindowBorderStyle(0, 1, 1, 14);
+ DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 14);
gMain.state++;
break;
case 11:
@@ -704,7 +702,7 @@ static void HandleInitWindows(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
}
diff --git a/src/pokedex.c b/src/pokedex.c
index 805412c85..4bf8dff6d 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -2152,7 +2152,7 @@ static void CreateCaughtBall(u16 a, u8 x, u8 y, u16 unused)
if (a)
BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16);
else
- FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 8, 16);
}
static u8 CreateMonName(u16 num, u8 left, u8 top)
@@ -2170,7 +2170,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top)
void sub_80BD28C(u8 x, u8 y, u16 unused)
{
- FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 0x60, 16);
}
static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
@@ -2927,7 +2927,7 @@ void sub_80BEA24(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, sPokedexListItem->dexNum);
@@ -3222,7 +3222,7 @@ void sub_80BF250(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, &gPokedexTilemap_CryScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(3);
PutWindowTilemap(2);
@@ -3416,7 +3416,7 @@ void sub_80BF82C(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_SizeScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
gMain.state++;
break;
@@ -3766,7 +3766,7 @@ void sub_80BFE38(u8 taskId)
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, gTasks[taskId].data[1]);
@@ -4784,7 +4784,7 @@ void sub_80C1270(const u8 *str, u32 left, u32 top)
void sub_80C12B0(u32 x, u32 y, u32 width, u32 height)
{
- FillWindowPixelRect(0, 0, x, y, width, height);
+ FillWindowPixelRect(0, PIXEL_FILL(0), x, y, width, height);
}
void sub_80C12E0(u8 taskId)
diff --git a/src/pokemon.c b/src/pokemon.c
index 9553fdf17..a984abbb9 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -10,6 +10,7 @@
#include "battle_tower.h"
#include "event_data.h"
#include "evolution_scene.h"
+#include "field_specials.h"
#include "item.h"
#include "link.h"
#include "main.h"
@@ -72,10 +73,6 @@ extern const struct CompressedSpritePalette gMonPaletteTable[];
extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
extern const u8 gTrainerClassNames[][13];
-extern u16 get_unknown_box_id(void);
-extern void set_unknown_box_id(u8);
-extern bool8 sub_806F104(void);
-
// this file's functions
static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
@@ -2227,9 +2224,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 +4911,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 +5166,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 +5426,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 +7022,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_size_record.c b/src/pokemon_size_record.c
index b0e14d2b1..98d83d8ce 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "event_data.h"
+#include "pokedex.h"
#include "pokemon.h"
#include "pokemon_size_record.h"
#include "string_util.h"
@@ -15,9 +16,6 @@ struct UnknownStruct
u16 unk4;
};
-extern u16 GetPokedexHeightWeight(u16 dexNo, bool8 height);
-extern u16 SpeciesToNationalPokedexNum(u16 species);
-
static const struct UnknownStruct sBigMonSizeTable[] =
{
{ 290, 1, 0 },
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index c1ebe91b4..c5d40877b 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1218,7 +1218,7 @@ static const u16 gWallpaperPalettes_Plain[][16] =
static const u32 gWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.4bpp.lz");
static const u32 gWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.bin.lz");
-// 12×18 tilemap
+// 12x18 tilemap
static const u32 gUnknown_085773C4[] = INCBIN_U32("graphics/unused/tilemap_5773C4.bin");
static const u16 gUnknown_08577574[][2] =
@@ -1552,7 +1552,7 @@ void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4)
winTemplate.width = 24;
winTemplate.height = 2;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3));
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
@@ -1599,7 +1599,7 @@ void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr
winTemplate.height = 2;
var = winTemplate.width * 32;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3));
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
txtColor[0] = arg3;
@@ -1736,8 +1736,8 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
case 0:
CreatePCMenu(task->data[1], &task->data[15]);
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 0);
- FillWindowPixelBuffer(0, 0x11);
+ DrawDialogueFrame(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
CopyWindowToVram(task->data[15], 3);
@@ -1763,13 +1763,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
if (task->data[1] != task->data[3])
{
task->data[1] = task->data[3];
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
}
break;
case MENU_B_PRESSED:
case 4:
- sub_819746C(task->data[15], TRUE);
+ ClearStdWindowAndFrame(task->data[15], TRUE);
ScriptContext2_Disable();
EnableBothScriptContexts();
RemoveWindow(task->data[15]);
@@ -1778,13 +1778,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
default:
if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3);
task->data[0] = 3;
}
else if (task->data[2] == 1 && CountPartyMons() == 1)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3);
task->data[0] = 3;
}
@@ -1799,7 +1799,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
case 3:
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1809,7 +1809,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
task->data[1] = 4;
Menu_MoveCursor(-1);
task->data[1] = Menu_GetCursorPos();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1819,7 +1819,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
task->data[1] = 0;
Menu_MoveCursor(1);
task->data[1] = Menu_GetCursorPos();
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
@@ -1865,7 +1865,7 @@ static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0));
windowId = AddWindow(&winTemplate);
- NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
+ DrawStdWindowFrame(windowId, FALSE);
PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu);
*windowIdPtr = windowId;
@@ -2103,7 +2103,7 @@ static void sub_80C7BE4(void)
winTemplate.height = 4;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, 0x44);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
center = GetStringCenterAlignXOffset(1, boxName, 64);
AddTextPrinterParameterized3(windowId, 1, center, 1, gUnknown_08571734, TEXT_SPEED_FF, boxName);
@@ -4107,7 +4107,7 @@ static void LoadCursorMonGfx(u16 species, u32 pid)
static void PrintCursorMonInfo(void)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
{
AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 0, TEXT_SPEED_FF, NULL);
@@ -4416,7 +4416,7 @@ static void PrintStorageActionText(u8 id)
}
DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text);
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(1, 2, 14);
PutWindowTilemap(1);
@@ -4432,7 +4432,7 @@ static void ShowYesNoWindow(s8 cursorPos)
static void ClearBottomWindow(void)
{
- sub_8198070(1, FALSE);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -6501,7 +6501,7 @@ static void InitCanRelaseMonVars(void)
}
sub_80CE350(sPSSData->field_2176);
- sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
if (sPSSData->field_2174 != 0)
{
sPSSData->field_216D = 0;
@@ -6559,7 +6559,7 @@ static s8 RunCanReleaseMon(void)
{
if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i)
{
- knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
sPSSData->field_2174 &= ~(knownMoves);
}
}
@@ -6578,7 +6578,7 @@ static s8 RunCanReleaseMon(void)
case 1:
for (i = 0; i < IN_BOX_COUNT; i++)
{
- knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, sPSSData->field_2176);
+ knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
if (knownMoves != 0
&& !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F))
{
@@ -6654,7 +6654,7 @@ static void sub_80CE8E4(void)
if (sIsMonBeingMoved)
sub_80CE790();
else
- sBoxCursorPosition = gUnknown_0203CF20;
+ sBoxCursorPosition = gLastViewedMonIndex;
}
s16 CompactPartySlots(void)
@@ -8733,7 +8733,7 @@ static void AddMenu(void)
sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height;
sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow);
ClearWindowTilemap(sPSSData->field_CB0);
- SetWindowBorderStyle(sPSSData->field_CB0, FALSE, 11, 14);
+ DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 11, 14);
PrintMenuTable(sPSSData->field_CB0, sPSSData->menuItemsCount, (void*)sPSSData->menuItems);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sPSSData->field_CB0, sPSSData->menuItemsCount, 0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -8787,7 +8787,7 @@ static s16 sub_80D00AC(void)
static void sub_80D013C(void)
{
- sub_8198070(sPSSData->field_CB0, TRUE);
+ ClearStdWindowAndFrameToTransparent(sPSSData->field_CB0, TRUE);
RemoveWindow(sPSSData->field_CB0);
}
@@ -8835,7 +8835,7 @@ static bool8 sub_80D0164(void)
sPSSData->field_2200 = AddWindow8Bit(&gUnknown_0857BB1C);
if (sPSSData->field_2200 != 0xFF)
{
- FillWindowPixelBuffer(sPSSData->field_2200, 0);
+ FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0));
return TRUE;
}
}
@@ -8892,7 +8892,7 @@ static bool8 sub_80D024C(void)
ChangeBgX(0, -1024, 0);
ChangeBgY(0, -1024, 0);
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
- FillWindowPixelBuffer8Bit(sPSSData->field_2200, 0);
+ FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0));
sub_80D07B0(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn);
SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1);
PutWindowTilemap(sPSSData->field_2200);
@@ -9194,7 +9194,7 @@ static void sub_80D0834(u8 arg0, u8 arg1)
if (species != SPECIES_NONE)
{
FillWindowPixelRect8Bit(sPSSData->field_2200,
- 0,
+ PIXEL_FILL(0),
24 * arg0,
24 * arg1,
32,
@@ -9911,7 +9911,7 @@ static void PrintItemDescription(void)
else
description = ItemId_GetDescription(sPSSData->cursorMonItem);
- FillWindowPixelBuffer(2, 0x11);
+ FillWindowPixelBuffer(2, PIXEL_FILL(1));
AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1);
}
@@ -10357,7 +10357,7 @@ bool32 AnyStorageMonWithMove(u16 moveId)
{
if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES)
&& !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG)
- && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, moves))
+ && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, (u8*)moves))
return TRUE;
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 46bdc9ef3..3bbc832a0 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -47,7 +47,58 @@
#include "constants/songs.h"
#include "constants/species.h"
-static EWRAM_DATA struct PssData
+// Screen titles (upper left)
+#define PSS_LABEL_WINDOW_POKEMON_INFO_TITLE 0
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE 1
+#define PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE 2
+#define PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE 3
+
+// Button control text (upper right)
+#define PSS_LABEL_WINDOW_PROMPT_CANCEL 4
+#define PSS_LABEL_WINDOW_PROMPT_INFO 5
+#define PSS_LABEL_WINDOW_PROMPT_SWITCH 6
+#define PSS_LABEL_WINDOW_UNUSED1 7
+
+// Info screen
+#define PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL 8
+#define PSS_LABEL_WINDOW_POKEMON_INFO_TYPE 9
+
+// Skills screen
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT 10 // HP, Attack, Defense
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT 11 // Sp. Attack, Sp. Defense, Speed
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP 12 // EXP, Next Level
+#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS 13
+
+// Moves screen
+#define PSS_LABEL_WINDOW_MOVES_POWER_ACC 14 // Also contains the power and accuracy values
+#define PSS_LABEL_WINDOW_MOVES_APPEAL_JAM 15
+#define PSS_LABEL_WINDOW_UNUSED2 16
+
+// Above/below the pokemon's portrait (left)
+#define PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER 17
+#define PSS_LABEL_WINDOW_PORTRAIT_NICKNAME 18 // The upper name
+#define PSS_LABEL_WINDOW_PORTRAIT_SPECIES 19 // The lower name
+#define PSS_LABEL_WINDOW_END 20
+
+// Dynamic fields for the Pokemon Info page
+#define PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER 0
+#define PSS_DATA_WINDOW_INFO_ID 1
+#define PSS_DATA_WINDOW_INFO_ABILITY 2
+#define PSS_DATA_WINDOW_INFO_MEMO 3
+
+// Dynamic fields for the Pokemon Skills page
+#define PSS_DATA_WINDOW_SKILLS_HELD_ITEM 0
+#define PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT 1
+#define PSS_DATA_WINDOW_SKILLS_STATS_LEFT 2 // HP, Attack, Defense
+#define PSS_DATA_WINDOW_SKILLS_STATS_RIGHT 3 // Sp. Attack, Sp. Defense, Speed
+#define PSS_DATA_WINDOW_EXP 4 // Exp, next level
+
+// Dynamic fields for the Battle Moves and Contest Moves pages.
+#define PSS_DATA_WINDOW_MOVE_NAMES 0
+#define PSS_DATA_WINDOW_MOVE_PP 1
+#define PSS_DATA_WINDOW_MOVE_DESCRIPTION 2
+
+static EWRAM_DATA struct PokemonSummaryScreenData
{
/*0x00*/ union {
struct Pokemon *mons;
@@ -63,7 +114,7 @@ static EWRAM_DATA struct PssData
u8 isEgg; // 0x4
u8 level; // 0x5
u8 ribbonCount; // 0x6
- u8 unk7; // 0x7
+ u8 ailment; // 0x7
u8 altAbility; // 0x8
u8 metLocation; // 0x9
u8 metLevel; // 0xA
@@ -97,25 +148,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};
-
+} *sMonSummaryScreen = NULL;
+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
@@ -138,17 +186,17 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a);
static void sub_81C0348(void);
static void CloseSummaryScreen(u8 taskId);
static void HandleInput(u8 taskId);
-static void ChangePokemon(u8 taskId, s8 a);
+static void ChangeSummaryPokemon(u8 taskId, s8 a);
static void sub_81C0704(u8 taskId);
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 +208,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 +220,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 +285,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 +300,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,27 +340,27 @@ 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
+ [PSS_LABEL_WINDOW_POKEMON_INFO_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -321,7 +369,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 1,
},
- {//Text for Pokemon Skills
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -330,7 +378,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 23,
},
- {//Text for Battle Moves
+ [PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -339,7 +387,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 45,
},
- {//Text for Contest Moves
+ [PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
@@ -348,7 +396,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 67,
},
- { //Text on Pokemon Info: Button prompt: Cancel
+ [PSS_LABEL_WINDOW_PROMPT_CANCEL] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -357,7 +405,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 89,
},
- {//Info button found under moves
+ [PSS_LABEL_WINDOW_PROMPT_INFO] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -366,7 +414,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 105,
},
- {//Switch button under moves when viewing moves
+ [PSS_LABEL_WINDOW_PROMPT_SWITCH] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 0,
@@ -375,7 +423,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 121,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_UNUSED1] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -384,7 +432,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 137,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -393,7 +441,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 137,
},
- {//Type on pokemon info page
+ [PSS_LABEL_WINDOW_POKEMON_INFO_TYPE] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 6,
@@ -402,7 +450,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 173,
},
- {//HP, Attack and Defense text
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 7,
@@ -411,7 +459,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 209,
},
- {//Sp. atk, Sp. Def and Speed texxt
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 7,
@@ -420,7 +468,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 245,
},
- {//EXP and next lvl.
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 14,
@@ -429,7 +477,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 275,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 18,
@@ -438,7 +486,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 319,
},
- {//move text: Power, Accuracy and their numeric values.
+ [PSS_LABEL_WINDOW_MOVES_POWER_ACC] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -447,7 +495,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 331,
},
- {//contest text: appeal and jam
+ [PSS_LABEL_WINDOW_MOVES_APPEAL_JAM] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
@@ -456,7 +504,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 367,
},
- {//Unknown
+ [PSS_LABEL_WINDOW_UNUSED2] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
@@ -465,7 +513,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 387,
},
- {//No.
+ [PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 2,
@@ -474,7 +522,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 7,
.baseBlock = 387,
},
- {//Upper name
+ [PSS_LABEL_WINDOW_PORTRAIT_NICKNAME] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 12,
@@ -483,7 +531,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 395,
},
- {//Lower name
+ [PSS_LABEL_WINDOW_PORTRAIT_SPECIES] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 14,
@@ -492,11 +540,11 @@ static const struct WindowTemplate gUnknown_0861CC24[] =
.paletteNum = 6,
.baseBlock = 413,
},
- DUMMY_WIN_TEMPLATE
+ [PSS_LABEL_WINDOW_END] = DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_0861CCCC[] =
+static const struct WindowTemplate sPageInfoTemplate[] =
{
- {//Original Trainer
+ [PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 4,
@@ -505,7 +553,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//ID numbers
+ [PSS_DATA_WINDOW_INFO_ID] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 4,
@@ -514,7 +562,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 471,
},
- {//Ability
+ [PSS_DATA_WINDOW_INFO_ABILITY] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 9,
@@ -523,7 +571,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.paletteNum = 6,
.baseBlock = 485,
},
- {//Trainer Memo
+ [PSS_DATA_WINDOW_INFO_MEMO] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 14,
@@ -533,9 +581,9 @@ static const struct WindowTemplate gUnknown_0861CCCC[] =
.baseBlock = 557,
},
};
-static const struct WindowTemplate gUnknown_0861CCEC[] =
+static const struct WindowTemplate sPageSkillsTemplate[] =
{
- {//Held Item string
+ [PSS_DATA_WINDOW_SKILLS_HELD_ITEM] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 4,
@@ -544,7 +592,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//Ribbon string
+ [PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT] = {
.bg = 0,
.tilemapLeft = 20,
.tilemapTop = 4,
@@ -553,7 +601,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 469,
},
- {//Stat numbers left (HP, ATK & DEF)
+ [PSS_DATA_WINDOW_SKILLS_STATS_LEFT] = {
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 7,
@@ -562,7 +610,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 489,
},
- {//Stat numbers right (SP.ATK, SP.DEF & SPEED)
+ [PSS_DATA_WINDOW_SKILLS_STATS_RIGHT] = {
.bg = 0,
.tilemapLeft = 27,
.tilemapTop = 7,
@@ -571,7 +619,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] =
.paletteNum = 6,
.baseBlock = 525,
},
- {//Exp numbers
+ [PSS_DATA_WINDOW_EXP] = {
.bg = 0,
.tilemapLeft = 24,
.tilemapTop = 14,
@@ -581,9 +629,9 @@ 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?
+ [PSS_DATA_WINDOW_MOVE_NAMES] = {
.bg = 0,
.tilemapLeft = 15,
.tilemapTop = 4,
@@ -592,7 +640,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.paletteNum = 6,
.baseBlock = 449,
},
- {//PP Numbers
+ [PSS_DATA_WINDOW_MOVE_PP] = {
.bg = 0,
.tilemapLeft = 24,
.tilemapTop = 4,
@@ -601,7 +649,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] =
.paletteNum = 8,
.baseBlock = 539,
},
- {//Move description text
+ [PSS_DATA_WINDOW_MOVE_DESCRIPTION] = {
.bg = 0,
.tilemapLeft = 10,
.tilemapTop = 15,
@@ -628,8 +676,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 +695,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 +895,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 +963,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,43 +1042,43 @@ 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))
{
- pssData = AllocZeroed(sizeof(*pssData));
- pssData->mode = mode;
- pssData->monList.mons = mons;
- pssData->curMonIndex = monIndex;
- pssData->maxMonIndex = maxMonIndex;
- pssData->callback = callback;
+ sMonSummaryScreen = AllocZeroed(sizeof(*sMonSummaryScreen));
+ sMonSummaryScreen->mode = mode;
+ sMonSummaryScreen->monList.mons = mons;
+ sMonSummaryScreen->curMonIndex = monIndex;
+ sMonSummaryScreen->maxMonIndex = maxMonIndex;
+ sMonSummaryScreen->callback = callback;
if (mode == PSS_MODE_BOX)
- pssData->isBoxMon = TRUE;
+ sMonSummaryScreen->isBoxMon = TRUE;
else
- pssData->isBoxMon = FALSE;
+ sMonSummaryScreen->isBoxMon = FALSE;
switch (mode)
{
case PSS_MODE_NORMAL:
case PSS_MODE_BOX:
- pssData->minPageIndex = 0;
- pssData->maxPageIndex = 3;
+ sMonSummaryScreen->minPageIndex = 0;
+ sMonSummaryScreen->maxPageIndex = 3;
break;
case PSS_MODE_UNK1:
- pssData->minPageIndex = 0;
- pssData->maxPageIndex = 3;
- pssData->unk40C8 = TRUE;
+ sMonSummaryScreen->minPageIndex = 0;
+ sMonSummaryScreen->maxPageIndex = 3;
+ sMonSummaryScreen->unk40C8 = TRUE;
break;
case PSS_MODE_SELECT_MOVE:
- pssData->minPageIndex = 2;
- pssData->maxPageIndex = 3;
- pssData->unk40C3 = TRUE;
+ sMonSummaryScreen->minPageIndex = 2;
+ sMonSummaryScreen->maxPageIndex = 3;
+ sMonSummaryScreen->lockMonFlag = TRUE;
break;
}
- pssData->currPageIndex = pssData->minPageIndex;
+ sMonSummaryScreen->currPageIndex = sMonSummaryScreen->minPageIndex;
SummaryScreen_SetUnknownTaskId(-1);
if (gMonSpritesGfxPtr == 0)
@@ -1042,13 +1090,13 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove)
{
ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback);
- pssData->newMove = newMove;
+ sMonSummaryScreen->newMove = newMove;
}
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void))
{
ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback);
- pssData->unk40EF = TRUE;
+ sMonSummaryScreen->unk40EF = TRUE;
}
static void SummaryScreen_MainCB2(void)
@@ -1101,7 +1149,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
break;
case 5:
InitBGs();
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 6:
@@ -1113,16 +1161,16 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 8:
- sub_81C1BA0();
+ DrawPagination();
gMain.state++;
break;
case 9:
- CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 10:
- if (ExtractMonDataToSummaryStruct(&pssData->currentMon) != 0)
+ if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) != 0)
gMain.state++;
break;
case 11:
@@ -1134,7 +1182,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 13:
- PrintPageSpecificText(pssData->currPageIndex);
+ PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
gMain.state++;
break;
case 14:
@@ -1142,29 +1190,29 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 15:
- CreatePageWindowTilemaps(pssData->currPageIndex);
+ CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex);
gMain.state++;
break;
case 16:
ResetSpriteIds();
CreateMoveTypeIcons();
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
break;
case 17:
- pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &pssData->unk40F0);
- if (pssData->spriteIds[0] != 0xFF)
+ sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &sMonSummaryScreen->switchCounter);
+ if (sMonSummaryScreen->spriteIds[0] != 0xFF)
{
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
gMain.state++;
}
break;
case 18:
- CreateMonMarkingsSprite(&pssData->currentMon);
+ CreateMonMarkingsSprite(&sMonSummaryScreen->currentMon);
gMain.state++;
break;
case 19:
- CreateCaughtBallSprite(&pssData->currentMon);
+ CreateCaughtBallSprite(&sMonSummaryScreen->currentMon);
gMain.state++;
break;
case 20:
@@ -1176,7 +1224,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++;
break;
case 22:
- if (pssData->mode != PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE)
CreateTask(HandleInput, 0);
else
CreateTask(sub_81C171C, 0);
@@ -1202,10 +1250,10 @@ static bool8 SummaryScreen_LoadGraphics(void)
static void InitBGs(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_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]);
+ InitBgsFromTemplates(0, sUnknown_0861CBB4, ARRAY_COUNT(sUnknown_0861CBB4));
+ SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
+ SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0]);
+ SetBgTilemapBuffer(3, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
@@ -1220,64 +1268,64 @@ static void InitBGs(void)
static bool8 SummaryScreen_DecompressGraphics(void)
{
- switch (pssData->unk40F0)
+ switch (sMonSummaryScreen->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);
+ sMonSummaryScreen->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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ sMonSummaryScreen->switchCounter++;
}
break;
case 2:
- LZDecompressWram(gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gUnknown_08D98CC8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 3:
- LZDecompressWram(gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageSkillsTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 4:
- LZDecompressWram(gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageBattleMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 5:
- LZDecompressWram(gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
- pssData->unk40F0++;
+ LZDecompressWram(gPageContestMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
+ sMonSummaryScreen->switchCounter++;
break;
case 6:
- LoadCompressedPalette(gUnknown_08D9853C, 0, 0x100);
+ LoadCompressedPalette(gStatusScreenPalette, 0, 0x100);
LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 7:
LoadCompressedSpriteSheet(&sSpriteSheet_MoveTypes);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 8:
- LoadCompressedSpriteSheet(&gUnknown_0861D074);
- pssData->unk40F0++;
+ LoadCompressedSpriteSheet(&sMoveSelectorSpriteSheet);
+ sMonSummaryScreen->switchCounter++;
break;
case 9:
LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 10:
LoadCompressedSpritePalette(&sStatusIconsSpritePalette);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 11:
LoadCompressedSpritePalette(&gUnknown_0861D07C);
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
break;
case 12:
LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60);
- pssData->unk40F0 = 0;
+ sMonSummaryScreen->switchCounter = 0;
return TRUE;
}
return FALSE;
@@ -1285,126 +1333,127 @@ static bool8 SummaryScreen_DecompressGraphics(void)
static void CopyMonToSummaryStruct(struct Pokemon *mon)
{
- if (!pssData->isBoxMon)
+ if (!sMonSummaryScreen->isBoxMon)
{
- struct Pokemon *partyMon = pssData->monList.mons;
- *mon = partyMon[pssData->curMonIndex];
+ struct Pokemon *partyMon = sMonSummaryScreen->monList.mons;
+ *mon = partyMon[sMonSummaryScreen->curMonIndex];
}
else
{
- struct BoxPokemon *boxMon = pssData->monList.boxMons;
- BoxMonToMon(&boxMon[pssData->curMonIndex], mon);
+ struct BoxPokemon *boxMon = sMonSummaryScreen->monList.boxMons;
+ BoxMonToMon(&boxMon[sMonSummaryScreen->curMonIndex], mon);
}
}
-static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a)
+static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon)
{
u32 i;
- struct PokeSummary *sum = &pssData->summary;
- switch (pssData->unk40F0)
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
+ // Spread the data extraction over multiple frames.
+ switch (sMonSummaryScreen->switchCounter)
{
case 0:
- sum->species = GetMonData(a, MON_DATA_SPECIES);
- sum->species2 = GetMonData(a, MON_DATA_SPECIES2);
- sum->exp = GetMonData(a, MON_DATA_EXP);
- sum->level = GetMonData(a, MON_DATA_LEVEL);
- sum->altAbility = GetMonData(a, MON_DATA_ALT_ABILITY);
- sum->item = GetMonData(a, MON_DATA_HELD_ITEM);
- sum->pid = GetMonData(a, MON_DATA_PERSONALITY);
- sum->sanity = GetMonData(a, MON_DATA_SANITY_IS_BAD_EGG);
+ sum->species = GetMonData(mon, MON_DATA_SPECIES);
+ sum->species2 = GetMonData(mon, MON_DATA_SPECIES2);
+ sum->exp = GetMonData(mon, MON_DATA_EXP);
+ sum->level = GetMonData(mon, MON_DATA_LEVEL);
+ sum->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY);
+ sum->item = GetMonData(mon, MON_DATA_HELD_ITEM);
+ sum->pid = GetMonData(mon, MON_DATA_PERSONALITY);
+ sum->sanity = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
if (sum->sanity)
sum->isEgg = TRUE;
else
- sum->isEgg = GetMonData(a, MON_DATA_IS_EGG);
+ sum->isEgg = GetMonData(mon, MON_DATA_IS_EGG);
break;
case 1:
for (i = 0; i < MAX_MON_MOVES; i++)
{
- sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i);
- sum->pp[i] = GetMonData(a, MON_DATA_PP1+i);
+ sum->moves[i] = GetMonData(mon, MON_DATA_MOVE1+i);
+ sum->pp[i] = GetMonData(mon, MON_DATA_PP1+i);
}
- sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES);
+ sum->ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
break;
case 2:
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
- sum->nature = GetNature(a);
- sum->currentHP = GetMonData(a, MON_DATA_HP);
- sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
- sum->atk = GetMonData(a, MON_DATA_ATK);
- sum->def = GetMonData(a, MON_DATA_DEF);
- sum->spatk = GetMonData(a, MON_DATA_SPATK);
- sum->spdef = GetMonData(a, MON_DATA_SPDEF);
- sum->speed = GetMonData(a, MON_DATA_SPEED);
+ sum->nature = GetNature(mon);
+ sum->currentHP = GetMonData(mon, MON_DATA_HP);
+ sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(mon, MON_DATA_ATK);
+ sum->def = GetMonData(mon, MON_DATA_DEF);
+ sum->spatk = GetMonData(mon, MON_DATA_SPATK);
+ sum->spdef = GetMonData(mon, MON_DATA_SPDEF);
+ sum->speed = GetMonData(mon, MON_DATA_SPEED);
}
else
{
- sum->nature = GetNature(a);
- sum->currentHP = GetMonData(a, MON_DATA_HP);
- sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
- sum->atk = GetMonData(a, MON_DATA_ATK2);
- sum->def = GetMonData(a, MON_DATA_DEF2);
- sum->spatk = GetMonData(a, MON_DATA_SPATK2);
- sum->spdef = GetMonData(a, MON_DATA_SPDEF2);
- sum->speed = GetMonData(a, MON_DATA_SPEED2);
+ sum->nature = GetNature(mon);
+ sum->currentHP = GetMonData(mon, MON_DATA_HP);
+ sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(mon, MON_DATA_ATK2);
+ sum->def = GetMonData(mon, MON_DATA_DEF2);
+ sum->spatk = GetMonData(mon, MON_DATA_SPATK2);
+ sum->spdef = GetMonData(mon, MON_DATA_SPDEF2);
+ sum->speed = GetMonData(mon, MON_DATA_SPEED2);
}
break;
case 3:
- GetMonData(a, MON_DATA_OT_NAME, &sum->OTName);
- ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE));
- sum->unk7 = sub_81B205C(a);
- sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER);
- sum->OTID = GetMonData(a, MON_DATA_OT_ID);
- sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION);
- sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL);
- sum->metGame = GetMonData(a, MON_DATA_MET_GAME);
- sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP);
+ GetMonData(mon, MON_DATA_OT_NAME, sum->OTName);
+ ConvertInternationalString((u8*)&sum->OTName, GetMonData(mon, MON_DATA_LANGUAGE));
+ sum->ailment = GetMonAilment(mon);
+ sum->OTGender = GetMonData(mon, MON_DATA_OT_GENDER);
+ sum->OTID = GetMonData(mon, MON_DATA_OT_ID);
+ sum->metLocation = GetMonData(mon, MON_DATA_MET_LOCATION);
+ sum->metLevel = GetMonData(mon, MON_DATA_MET_LEVEL);
+ sum->metGame = GetMonData(mon, MON_DATA_MET_GAME);
+ sum->friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
break;
default:
- sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT);
+ sum->ribbonCount = GetMonData(mon, MON_DATA_RIBBON_COUNT);
return TRUE;
}
- pssData->unk40F0++;
+ sMonSummaryScreen->switchCounter++;
return FALSE;
}
static void sub_81C0348(void)
{
- if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES)
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES)
{
sub_81C1DA4(0, 255);
sub_81C1EFC(0, 255, 0);
}
else
{
- DrawContestMoveHearts(pssData->summary.moves[pssData->firstMoveIndex]);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
- SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
- SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
+ DrawContestMoveHearts(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
+ SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
+ SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]);
ChangeBgX(2, 0x10000, 1);
- ClearWindowTilemap(19);
- ClearWindowTilemap(13);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- if (pssData->summary.unk7 == 0)
+ if (sMonSummaryScreen->summary.ailment == AILMENT_NONE)
{
sub_81C2074(0, 0xFF);
}
else
{
- if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES)
- PutWindowTilemap(13);
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- sub_81C2524();
- sub_81C2228(&pssData->currentMon);
+ LimitEggSummaryPageDisplay();
+ DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
}
static void sub_81C0434(void)
{
FreeAllWindowBuffers();
- Free(pssData);
+ Free(sMonSummaryScreen);
}
static void BeginCloseSummaryScreen(u8 taskId)
@@ -1417,8 +1466,8 @@ static void CloseSummaryScreen(u8 taskId)
{
if (sub_81221EC() != TRUE && !gPaletteFade.active)
{
- SetMainCallback2(pssData->callback);
- gUnknown_0203CF20 = pssData->curMonIndex;
+ SetMainCallback2(sMonSummaryScreen->callback);
+ gLastViewedMonIndex = sMonSummaryScreen->curMonIndex;
SummaryScreen_DestroyUnknownTask();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -1437,11 +1486,11 @@ static void HandleInput(u8 taskId)
{
if (gMain.newKeys & DPAD_UP)
{
- ChangePokemon(taskId, -1);
+ ChangeSummaryPokemon(taskId, -1);
}
else if (gMain.newKeys & DPAD_DOWN)
{
- ChangePokemon(taskId, 1);
+ ChangeSummaryPokemon(taskId, 1);
}
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
{
@@ -1453,11 +1502,11 @@ static void HandleInput(u8 taskId)
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->currPageIndex != PSS_PAGE_SKILLS)
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_SKILLS)
{
- if (pssData->currPageIndex == PSS_PAGE_INFO)
+ if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
BeginCloseSummaryScreen(taskId);
}
@@ -1470,57 +1519,59 @@ static void HandleInput(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- sub_81C48F0();
+ StopPokemonAnimations();
PlaySE(SE_SELECT);
BeginCloseSummaryScreen(taskId);
}
}
}
-static void ChangePokemon(u8 taskId, s8 a)
+static void ChangeSummaryPokemon(u8 taskId, s8 delta)
{
- s8 r4_2;
+ s8 v1;
+ s8 v2;
- if (!pssData->unk40C3)
+ if (!sMonSummaryScreen->lockMonFlag)
{
- if (pssData->isBoxMon == TRUE)
+ if (sMonSummaryScreen->isBoxMon == TRUE)
{
- if (pssData->currPageIndex != PSS_PAGE_INFO)
+
+ if (sMonSummaryScreen->currPageIndex != PSS_PAGE_INFO)
{
- if (a == 1)
- a = 0;
+ if (delta == 1)
+ delta = 0;
else
- a = 2;
+ delta = 2;
}
else
{
- if (a == 1)
- a = 1;
+ if (delta == 1)
+ delta = 1;
else
- a = 3;
+ delta = 3;
}
- r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a);
+ v1 = sub_80D214C(sMonSummaryScreen->monList.boxMons, sMonSummaryScreen->curMonIndex, sMonSummaryScreen->maxMonIndex, delta);
}
else if (IsMultiBattle() == TRUE)
{
- r4_2 = sub_81C09B4(a);
+ v1 = sub_81C09B4(delta);
}
else
{
- r4_2 = sub_81C08F8(a);
+ v1 = sub_81C08F8(delta);
}
- if (r4_2 != -1)
+ if (v1 != -1)
{
PlaySE(SE_SELECT);
- if (pssData->summary.unk7 != 0)
+ if (sMonSummaryScreen->summary.ailment != AILMENT_NONE)
{
SetSpriteInvisibility(2, 1);
- ClearWindowTilemap(13);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C2074(0, 2);
}
- pssData->curMonIndex = r4_2;
+ sMonSummaryScreen->curMonIndex = v1;
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_81C0704;
}
@@ -1538,37 +1589,37 @@ static void sub_81C0704(u8 taskId)
break;
case 1:
SummaryScreen_DestroyUnknownTask();
- DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[0]]);
+ DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[0]]);
break;
case 2:
- DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[1]]);
+ DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[1]]);
break;
case 3:
- CopyMonToSummaryStruct(&pssData->currentMon);
- pssData->unk40F0 = 0;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sMonSummaryScreen->switchCounter = 0;
break;
case 4:
- if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE)
+ if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) == FALSE)
return;
break;
case 5:
- RemoveAndCreateMonMarkingsSprite(&pssData->currentMon);
+ RemoveAndCreateMonMarkingsSprite(&sMonSummaryScreen->currentMon);
break;
case 6:
- CreateCaughtBallSprite(&pssData->currentMon);
+ CreateCaughtBallSprite(&sMonSummaryScreen->currentMon);
break;
case 7:
- if (pssData->summary.unk7)
+ if (sMonSummaryScreen->summary.ailment != AILMENT_NONE)
sub_81C2074(10, -2);
- sub_81C2228(&pssData->currentMon);
+ DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon);
data[1] = 0;
break;
case 8:
- pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &data[1]);
- if (pssData->spriteIds[0] == 0xFF)
+ sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &data[1]);
+ if (sMonSummaryScreen->spriteIds[0] == 0xFF)
return;
- gSprites[pssData->spriteIds[0]].data[2] = 1;
- sub_81C0E24();
+ gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 1;
+ CheckExperienceProgressBar();
data[1] = 0;
break;
case 9:
@@ -1578,11 +1629,11 @@ static void sub_81C0704(u8 taskId)
sub_81C25E8();
break;
case 11:
- PrintPageSpecificText(pssData->currPageIndex);
- sub_81C2524();
+ PrintPageSpecificText(sMonSummaryScreen->currPageIndex);
+ LimitEggSummaryPageDisplay();
break;
case 12:
- gSprites[pssData->spriteIds[0]].data[2] = 0;
+ gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 0;
break;
default:
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
@@ -1597,25 +1648,25 @@ static void sub_81C0704(u8 taskId)
static s8 sub_81C08F8(s8 a)
{
- struct Pokemon *mon = pssData->monList.mons;
+ struct Pokemon *mon = sMonSummaryScreen->monList.mons;
- if (pssData->currPageIndex == PSS_PAGE_INFO)
+ if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO)
{
- if (a == -1 && pssData->curMonIndex == 0)
+ if (a == -1 && sMonSummaryScreen->curMonIndex == 0)
return -1;
- else if (a == 1 && pssData->curMonIndex >= pssData->maxMonIndex)
+ else if (a == 1 && sMonSummaryScreen->curMonIndex >= sMonSummaryScreen->maxMonIndex)
return -1;
else
- return pssData->curMonIndex + a;
+ return sMonSummaryScreen->curMonIndex + a;
}
else
{
- s8 index = pssData->curMonIndex;
+ s8 index = sMonSummaryScreen->curMonIndex;
do
{
index += a;
- if (index < 0 || index > pssData->maxMonIndex)
+ if (index < 0 || index > sMonSummaryScreen->maxMonIndex)
return -1;
} while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0);
return index;
@@ -1624,13 +1675,13 @@ static s8 sub_81C08F8(s8 a)
static s8 sub_81C09B4(s8 a)
{
- struct Pokemon *mon = pssData->monList.mons;
+ struct Pokemon *mon = sMonSummaryScreen->monList.mons;
s8 r5 = 0;
u8 i;
for (i = 0; i < 6; i++)
{
- if (gUnknown_0861CC1C[i] == pssData->curMonIndex)
+ if (gUnknown_0861CC1C[i] == sMonSummaryScreen->curMonIndex)
{
r5 = i;
break;
@@ -1655,42 +1706,42 @@ static bool8 sub_81C0A50(struct Pokemon* mon)
{
if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE)
return FALSE;
- else if (pssData->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0)
+ else if (sMonSummaryScreen->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0)
return TRUE;
else
return FALSE;
}
-static void ChangePage(u8 taskId, s8 b)
+static void ChangePage(u8 taskId, s8 delta)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
s16 *data = gTasks[taskId].data;
if (summary->isEgg)
return;
- else if (b == -1 && pssData->currPageIndex == pssData->minPageIndex)
+ else if (delta == -1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->minPageIndex)
return;
- else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex)
+ else if (delta == 1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->maxPageIndex)
return;
PlaySE(SE_SELECT);
- ClearPageWindowTilemaps(pssData->currPageIndex);
- pssData->currPageIndex += b;
+ ClearPageWindowTilemaps(sMonSummaryScreen->currPageIndex);
+ sMonSummaryScreen->currPageIndex += delta;
data[0] = 0;
- if (b == 1)
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
+ if (delta == 1)
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollRight, gTasks[taskId].func);
else
- SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
- CreateTextPrinterTask(pssData->currPageIndex);
+ SetTaskFuncWithFollowupFunc(taskId, PssScrollLeft, gTasks[taskId].func);
+ CreateTextPrinterTask(sMonSummaryScreen->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 (sMonSummaryScreen->bgDisplayOrder == 0)
{
data[1] = 1;
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
@@ -1705,35 +1756,35 @@ static void sub_81C0B8C(u8 taskId)
schedule_bg_copy_tilemap_to_vram(2);
}
ChangeBgX(data[1], 0, 0);
- SetBgTilemapBuffer(data[1], pssData->bgTilemapBuffers[pssData->currPageIndex][0]);
+ SetBgTilemapBuffer(data[1], sMonSummaryScreen->bgTilemapBuffers[sMonSummaryScreen->currPageIndex][0]);
ShowBg(1);
ShowBg(2);
}
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;
+ sMonSummaryScreen->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
- CreatePageWindowTilemaps(pssData->currPageIndex);
+ DrawPagination();
+ CreatePageWindowTilemaps(sMonSummaryScreen->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 (sMonSummaryScreen->bgDisplayOrder == 0)
data[1] = 2;
else
data[1] = 1;
@@ -1742,13 +1793,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 (sMonSummaryScreen->bgDisplayOrder == 0)
{
SetBgAttribute(1, BG_ATTR_PRIORITY, 1);
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
@@ -1760,46 +1811,46 @@ static void sub_81C0D44(u8 taskId)
SetBgAttribute(1, BG_ATTR_PRIORITY, 2);
schedule_bg_copy_tilemap_to_vram(1);
}
- if (pssData->currPageIndex > 1)
+ if (sMonSummaryScreen->currPageIndex > 1)
{
- SetBgTilemapBuffer(data[1], (u8*)pssData + ((pssData->currPageIndex << 12) + 0xFFFFF0BC));
+ SetBgTilemapBuffer(data[1], (u8*)sMonSummaryScreen + ((sMonSummaryScreen->currPageIndex << 12) + 0xFFFFF0BC));
ChangeBgX(data[1], 0x10000, 0);
}
ShowBg(1);
ShowBg(2);
- pssData->unk40C9 ^= 1;
+ sMonSummaryScreen->bgDisplayOrder ^= 1;
data[1] = 0;
data[0] = 0;
- sub_81C1BA0();
- CreatePageWindowTilemaps(pssData->currPageIndex);
+ DrawPagination();
+ CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex);
SetTypeIcons();
- sub_81C0E24();
+ CheckExperienceProgressBar();
SwitchTaskToFollowupFunc(taskId);
}
-static void sub_81C0E24(void)
+static void CheckExperienceProgressBar(void)
{
- if (pssData->currPageIndex == 1)
- DrawExperienceProgressBar(&pssData->currentMon);
+ if (sMonSummaryScreen->currPageIndex == 1)
+ DrawExperienceProgressBar(&sMonSummaryScreen->currentMon);
}
static void sub_81C0E48(u8 taskId)
{
u16 move;
- pssData->firstMoveIndex = 0;
- move = pssData->summary.moves[pssData->firstMoveIndex];
- ClearWindowTilemap(0x13);
- if (gSprites[pssData->spriteIds[2]].invisible == 0)
- ClearWindowTilemap(0xD);
+ sMonSummaryScreen->firstMoveIndex = 0;
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (gSprites[sMonSummaryScreen->spriteIds[2]].invisible == 0)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
- if (!pssData->unk40C8)
+ if (!sMonSummaryScreen->unk40C8)
{
- ClearWindowTilemap(5);
- PutWindowTilemap(6);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH);
}
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
PrintMoveDetails(move);
PrintNewMoveDetailsOrCancelText();
SetNewMoveTypeIcon();
@@ -1820,17 +1871,17 @@ static void HandleInput_MoveSelect(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
data[0] = 4;
- sub_81C1070(data, -1, &pssData->firstMoveIndex);
+ sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 4;
- sub_81C1070(data, 1, &pssData->firstMoveIndex);
+ sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->unk40C8 == TRUE
- || (pssData->newMove == MOVE_NONE && pssData->firstMoveIndex == MAX_MON_MOVES))
+ if (sMonSummaryScreen->unk40C8 == TRUE
+ || (sMonSummaryScreen->newMove == MOVE_NONE && sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES))
{
PlaySE(SE_SELECT);
sub_81C11F4(taskId);
@@ -1858,7 +1909,7 @@ static bool8 sub_81C1040(void)
u8 i;
for (i = 1; i < MAX_MON_MOVES; i++)
{
- if (pssData->summary.moves[i] != 0)
+ if (sMonSummaryScreen->summary.moves[i] != 0)
return TRUE;
}
return FALSE;
@@ -1881,10 +1932,10 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
moveIndex = a[0];
if (moveIndex == MAX_MON_MOVES)
{
- move = pssData->newMove;
+ move = sMonSummaryScreen->newMove;
break;
}
- move = pssData->summary.moves[moveIndex];
+ move = sMonSummaryScreen->summary.moves[moveIndex];
if (move != 0)
break;
}
@@ -1892,25 +1943,25 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2);
PrintMoveDetails(move);
- if ((*c == 4 && pssData->newMove == MOVE_NONE) || a[1] == 1)
+ if ((*c == 4 && sMonSummaryScreen->newMove == MOVE_NONE) || a[1] == 1)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(9, -3);
sub_81C1EFC(9, -3, move);
}
- if (*c != 4 && moveIndex == 4 && pssData->newMove == MOVE_NONE)
+ if (*c != 4 && moveIndex == 4 && sMonSummaryScreen->newMove == MOVE_NONE)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
schedule_bg_copy_tilemap_to_vram(0);
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
}
*c = moveIndex;
- if (c == &pssData->firstMoveIndex)
+ if (c == &sMonSummaryScreen->firstMoveIndex)
sub_81C4D18(8);
else
sub_81C4D18(18);
@@ -1919,16 +1970,16 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
static void sub_81C11F4(u8 taskId)
{
sub_81C4C60(8);
- ClearWindowTilemap(6);
- PutWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
PrintMoveDetails(0);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1);
- sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1);
+ sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1);
sub_81C4064();
- if (pssData->firstMoveIndex != MAX_MON_MOVES)
+ if (sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
sub_81C1DA4(0, 3);
sub_81C1EFC(0, 3, 0);
}
@@ -1940,7 +1991,7 @@ static void sub_81C11F4(u8 taskId)
static void sub_81C129C(u8 taskId)
{
- pssData->secondMoveIndex = pssData->firstMoveIndex;
+ sMonSummaryScreen->secondMoveIndex = sMonSummaryScreen->firstMoveIndex;
sub_81C4C84(1);
sub_81C4AF8(18);
gTasks[taskId].func = sub_81C12E4;
@@ -1955,16 +2006,16 @@ static void sub_81C12E4(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
data[0] = 3;
- sub_81C1070(&data[0], -1, &pssData->secondMoveIndex);
+ sub_81C1070(&data[0], -1, &sMonSummaryScreen->secondMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 3;
- sub_81C1070(&data[0], 1, &pssData->secondMoveIndex);
+ sub_81C1070(&data[0], 1, &sMonSummaryScreen->secondMoveIndex);
}
else if (gMain.newKeys & A_BUTTON)
{
- if (pssData->firstMoveIndex == pssData->secondMoveIndex)
+ if (sMonSummaryScreen->firstMoveIndex == sMonSummaryScreen->secondMoveIndex)
{
sub_81C13B0(taskId, 0);
}
@@ -1990,23 +2041,23 @@ static void sub_81C13B0(u8 taskId, bool8 b)
if (b == TRUE)
{
- if (!pssData->isBoxMon)
+ if (!sMonSummaryScreen->isBoxMon)
{
- struct Pokemon *why = pssData->monList.mons;
- SwapMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex);
+ struct Pokemon *why = sMonSummaryScreen->monList.mons;
+ SwapMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
}
else
{
- struct BoxPokemon *why = pssData->monList.boxMons;
- SwapBoxMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex);
+ struct BoxPokemon *why = sMonSummaryScreen->monList.boxMons;
+ SwapBoxMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
}
- CopyMonToSummaryStruct(&pssData->currentMon);
- sub_81C40A0(pssData->firstMoveIndex, pssData->secondMoveIndex);
- sub_81C4568(pssData->firstMoveIndex, pssData->secondMoveIndex);
- pssData->firstMoveIndex = pssData->secondMoveIndex;
+ CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon);
+ sub_81C40A0(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
+ sub_81C4568(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex);
+ sMonSummaryScreen->firstMoveIndex = sMonSummaryScreen->secondMoveIndex;
}
- move = pssData->summary.moves[pssData->firstMoveIndex];
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
PrintMoveDetails(move);
DrawContestMoveHearts(move);
schedule_bg_copy_tilemap_to_vram(1);
@@ -2016,7 +2067,7 @@ static void sub_81C13B0(u8 taskId, bool8 b)
static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &pssData->summary;
+ struct PokeSummary* summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -2025,9 +2076,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;
@@ -2051,7 +2102,7 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2)
{
- struct PokeSummary* summary = &pssData->summary;
+ struct PokeSummary* summary = &sMonSummaryScreen->summary;
u16 move1 = summary->moves[moveIndex1];
u16 move2 = summary->moves[moveIndex2];
@@ -2060,9 +2111,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,26 +2139,26 @@ 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;
- if (sub_81221EC() != 1)
+ if (sub_81221EC() != TRUE)
{
- if (gPaletteFade.active != 1)
+ if (gPaletteFade.active != TRUE)
{
if (gMain.newKeys & DPAD_UP)
{
data[0] = 4;
- sub_81C1070(data, -1, &pssData->firstMoveIndex);
+ sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[0] = 4;
- sub_81C1070(data, 1, &pssData->firstMoveIndex);
+ sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
@@ -2119,26 +2170,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 = sMonSummaryScreen->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,26 +2197,27 @@ 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)
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES || sMonSummaryScreen->newMove == MOVE_NONE || IsMoveHm(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]) != 1)
return TRUE;
else
return FALSE;
}
-static void sub_81C18F4(u8 taskId)
+static void ShowHMMovesCantBeForgottenWindow(u8 taskId)
{
- ClearWindowTilemap(14);
- ClearWindowTilemap(15);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
schedule_bg_copy_tilemap_to_vram(0);
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;
@@ -2175,27 +2227,27 @@ static void sub_81C1940(u8 taskId)
{
data[1] = 1;
data[0] = 4;
- sub_81C1070(&data[0], -1, &pssData->firstMoveIndex);
+ sub_81C1070(&data[0], -1, &sMonSummaryScreen->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_DOWN)
{
data[1] = 1;
data[0] = 4;
- sub_81C1070(&data[0], 1, &pssData->firstMoveIndex);
+ sub_81C1070(&data[0], 1, &sMonSummaryScreen->firstMoveIndex);
data[1] = 0;
- gTasks[taskId].func = sub_81C174C;
+ gTasks[taskId].func = HandleReplaceMoveInput;
}
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{
- if (pssData->currPageIndex != 2)
+ if (sMonSummaryScreen->currPageIndex != 2)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ gTasks[taskId].func = HandleReplaceMoveInput;
ChangePage(taskId, -1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
@@ -2203,13 +2255,13 @@ static void sub_81C1940(u8 taskId)
}
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
{
- if (pssData->currPageIndex != 3)
+ if (sMonSummaryScreen->currPageIndex != 3)
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
- gTasks[taskId].func = sub_81C174C;
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
+ gTasks[taskId].func = HandleReplaceMoveInput;
ChangePage(taskId, 1);
sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move);
@@ -2217,25 +2269,25 @@ static void sub_81C1940(u8 taskId)
}
else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- ClearWindowTilemap(19);
- if (!gSprites[pssData->spriteIds[2]].invisible)
- ClearWindowTilemap(13);
- move = pssData->summary.moves[pssData->firstMoveIndex];
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
PrintMoveDetails(move);
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;
@@ -2244,30 +2296,30 @@ static void sub_81C1BA0(void)
{
u8 j = i * 2;
- if (i < pssData->minPageIndex)
+ if (i < sMonSummaryScreen->minPageIndex)
{
alloced[j + 0] = 0x40;
alloced[j + 1] = 0x40;
alloced[j + 8] = 0x50;
alloced[j + 9] = 0x50;
}
- else if (i > pssData->maxPageIndex)
+ else if (i > sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x4A;
alloced[j + 1] = 0x4A;
alloced[j + 8] = 0x5A;
alloced[j + 9] = 0x5A;
}
- else if (i < pssData->currPageIndex)
+ else if (i < sMonSummaryScreen->currPageIndex)
{
alloced[j + 0] = 0x46;
alloced[j + 1] = 0x47;
alloced[j + 8] = 0x56;
alloced[j + 9] = 0x57;
}
- else if (i == pssData->currPageIndex)
+ else if (i == sMonSummaryScreen->currPageIndex)
{
- if (i != pssData->maxPageIndex)
+ if (i != sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x41;
alloced[j + 1] = 0x42;
@@ -2282,7 +2334,7 @@ static void sub_81C1BA0(void)
alloced[j + 9] = 0x5C;
}
}
- else if (i != pssData->maxPageIndex)
+ else if (i != sMonSummaryScreen->maxPageIndex)
{
alloced[j + 0] = 0x43;
alloced[j + 1] = 0x44;
@@ -2333,11 +2385,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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1);
}
else
{
@@ -2359,23 +2411,23 @@ 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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= sUnknown_0861CC04.field_6)
{
if (data[0] < 0)
{
- if (pssData->currPageIndex == 2)
- PutWindowTilemap(14);
+ if (sMonSummaryScreen->currPageIndex == 2)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- if (!gSprites[pssData->spriteIds[2]].invisible)
- PutWindowTilemap(13);
- PutWindowTilemap(19);
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
schedule_bg_copy_tilemap_to_vram(0);
DestroyTask(taskId);
@@ -2386,10 +2438,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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1);
else
{
u8 taskId = FindTaskIdByFunc(sub_81C1F80);
@@ -2409,26 +2461,26 @@ 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, sMonSummaryScreen->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)
- PutWindowTilemap(15);
+ if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
DrawContestMoveHearts(data[2]);
}
else
{
- if (!gSprites[pssData->spriteIds[2]].invisible)
+ if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible)
{
- PutWindowTilemap(13);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
}
- PutWindowTilemap(19);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
schedule_bg_copy_tilemap_to_vram(0);
DestroyTask(taskId);
@@ -2439,12 +2491,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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0);
}
else
{
@@ -2460,17 +2512,17 @@ 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, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0);
+ sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->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)
{
CreateSetStatusSprite();
- PutWindowTilemap(13);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS);
schedule_bg_copy_tilemap_to_vram(0);
}
DestroyTask(taskId);
@@ -2505,17 +2557,17 @@ 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;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C;
}
else
{
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A;
- pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A;
+ sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A;
}
schedule_bg_copy_tilemap_to_vram(3);
}
@@ -2532,7 +2584,7 @@ static void sub_81C228C(bool8 isMonShiny)
static void DrawExperienceProgressBar(struct Pokemon *unused)
{
s64 numExpProgressBarTicks;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 *r9;
u8 i;
@@ -2553,7 +2605,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
numExpProgressBarTicks = 0;
}
- r9 = &pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255];
+ r9 = &sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255];
for (i = 0; i < 8; i++)
{
if (numExpProgressBarTicks > 7)
@@ -2565,7 +2617,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
numExpProgressBarTicks = 0;
}
- if (GetBgTilemapBuffer(1) == pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0])
+ if (GetBgTilemapBuffer(1) == sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0])
schedule_bg_copy_tilemap_to_vram(1);
else
schedule_bg_copy_tilemap_to_vram(2);
@@ -2573,7 +2625,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
static void DrawContestMoveHearts(u16 move)
{
- u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
+ u16 *tilemap = sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
u8 i;
u8 effectValue;
@@ -2615,9 +2667,9 @@ 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)
+ if (sMonSummaryScreen->summary.isEgg)
ChangeBgX(3, 0x10000, 0);
else
ChangeBgX(3, 0, 0);
@@ -2626,16 +2678,16 @@ static void sub_81C2524(void)
static void ResetWindows(void)
{
u8 i;
- InitWindows(gUnknown_0861CC24);
+ InitWindows(sSummaryTemplate);
DeactivateAllTextPrinters();
for (i = 0; i < 20; i++)
{
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
- for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- pssData->windowIds[i] = 0xFF;
+ sMonSummaryScreen->windowIds[i] = 0xFF;
}
}
@@ -2646,10 +2698,10 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x,
static void sub_81C25E8(void)
{
- FillWindowPixelBuffer(17, 0);
- FillWindowPixelBuffer(18, 0);
- FillWindowPixelBuffer(19, 0);
- if (!pssData->summary.isEgg)
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, PIXEL_FILL(0));
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, PIXEL_FILL(0));
+ FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, PIXEL_FILL(0));
+ if (!sMonSummaryScreen->summary.isEgg)
sub_81C2628();
else
sub_81C2794();
@@ -2659,8 +2711,8 @@ static void sub_81C25E8(void)
static void sub_81C2628(void)
{
u8 strArray[16];
- struct Pokemon *mon = &pssData->currentMon;
- struct PokeSummary *summary = &pssData->summary;
+ struct Pokemon *mon = &sMonSummaryScreen->currentMon;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u16 dexNum = SpeciesToPokedexNum(summary->species);
if (dexNum != 0xFFFF)
{
@@ -2669,19 +2721,19 @@ static void sub_81C2628(void)
StringAppend(gStringVar1, gStringVar2);
if (!IsMonShiny(mon))
{
- SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
sub_81C228C(FALSE);
}
else
{
- SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 7);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
sub_81C228C(TRUE);
}
- PutWindowTilemap(17);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
else
{
- ClearWindowTilemap(17);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
sub_81C228C(FALSE);
else
@@ -2690,24 +2742,24 @@ static void sub_81C2628(void)
StringCopy(gStringVar1, &gText_LevelSymbol[0]);
ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3);
StringAppend(gStringVar1, gStringVar2);
- SummaryScreen_PrintTextOnWindow(19, gStringVar1, 0x18, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gStringVar1, 0x18, 17, 0, 1);
GetMonNickname(mon, gStringVar1);
- SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
strArray[0] = CHAR_SLASH;
StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]);
- SummaryScreen_PrintTextOnWindow(19, &strArray[0], 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, &strArray[0], 0, 1, 0, 1);
sub_81C27DC(mon, summary->species2);
- PutWindowTilemap(18);
- PutWindowTilemap(19);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C2794(void)
{
- GetMonNickname(&pssData->currentMon, gStringVar1);
- SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1);
- PutWindowTilemap(18);
- ClearWindowTilemap(17);
- ClearWindowTilemap(19);
+ GetMonNickname(&sMonSummaryScreen->currentMon, gStringVar1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
}
static void sub_81C27DC(struct Pokemon *mon, u16 species)
@@ -2718,10 +2770,10 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species)
switch (gender)
{
case MON_MALE:
- SummaryScreen_PrintTextOnWindow(19, gText_MaleSymbol, 57, 17, 0, 3);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_MaleSymbol, 57, 17, 0, 3);
break;
case MON_FEMALE:
- SummaryScreen_PrintTextOnWindow(19, gText_FemaleSymbol, 57, 17, 0, 4);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_FemaleSymbol, 57, 17, 0, 4);
break;
}
}
@@ -2729,7 +2781,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)
@@ -2738,108 +2791,108 @@ static void PrintPageNamesAndStatsPageToWindows(void)
int iconXPos;
int statsXPos;
- SummaryScreen_PrintTextOnWindow(0, gText_PkmnInfo, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(1, gText_PkmnSkills, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE, gText_PkmnInfo, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE, gText_PkmnSkills, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE, gText_BattleMoves, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE, gText_ContestMoves, 2, 1, 0, 1);
stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 62);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(4, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_CANCEL, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_CANCEL, gText_Cancel2, stringXPos, 1, 0, 0);
stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(5, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_INFO, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_INFO, gText_Info, stringXPos, 1, 0, 0);
stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E);
iconXPos = stringXPos - 16;
if (iconXPos < 0)
iconXPos = 0;
- PrintAOrBButtonIcon(6, FALSE, iconXPos);
- SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0);
+ PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_SWITCH, FALSE, iconXPos);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_SWITCH, gText_Switch, stringXPos, 1, 0, 0);
- SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL, gText_RentalPkmn, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE, gText_TypeSlash, 0, 1, 0, 0);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_HP4, statsXPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_HP4, statsXPos, 1, 0, 1);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Attack3, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_Attack3, statsXPos, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Attack3, statsXPos, 17, 0, 1);
statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Defense3, 42);
- SummaryScreen_PrintTextOnWindow(10, gText_Defense3, statsXPos, 33, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Defense3, statsXPos, 33, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpAtk4, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_SpAtk4, statsXPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpAtk4, statsXPos, 1, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpDef4, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_SpDef4, statsXPos, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpDef4, statsXPos, 17, 0, 1);
statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_Speed2, 36);
- SummaryScreen_PrintTextOnWindow(11, gText_Speed2, statsXPos, 33, 0, 1);
- SummaryScreen_PrintTextOnWindow(12, gText_ExpPoints, 6, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(12, gText_NextLv, 6, 17, 0, 1);
- SummaryScreen_PrintTextOnWindow(13, gText_Status, 2, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(14, gText_Power, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(14, gText_Accuracy2, 0, 17, 0, 1);
- SummaryScreen_PrintTextOnWindow(15, gText_Appeal, 0, 1, 0, 1);
- SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_Speed2, statsXPos, 33, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_ExpPoints, 6, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_NextLv, 6, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS, gText_Status, 2, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Power, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Accuracy2, 0, 17, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Appeal, 0, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Jam, 0, 17, 0, 1);
}
static void CreatePageWindowTilemaps(u8 page)
{
u8 i;
- ClearWindowTilemap(0);
- ClearWindowTilemap(1);
- ClearWindowTilemap(2);
- ClearWindowTilemap(3);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE);
switch (page)
{
case PSS_PAGE_INFO:
- PutWindowTilemap(0);
- PutWindowTilemap(4);
- if (InBattleFactory() == TRUE || sub_81B9E94() == TRUE)
- PutWindowTilemap(8);
- PutWindowTilemap(9);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL);
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE)
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE);
break;
case PSS_PAGE_SKILLS:
- PutWindowTilemap(1);
- PutWindowTilemap(10);
- PutWindowTilemap(11);
- PutWindowTilemap(12);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT);
+ PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP);
break;
case PSS_PAGE_BATTLE_MOVES:
- PutWindowTilemap(2);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ PutWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE);
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PutWindowTilemap(14);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- PutWindowTilemap(5);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
case PSS_PAGE_CONTEST_MOVES:
- PutWindowTilemap(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ PutWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE);
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PutWindowTilemap(15);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
}
else
{
- PutWindowTilemap(5);
+ PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
}
- for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- PutWindowTilemap(pssData->windowIds[i]);
+ PutWindowTilemap(sMonSummaryScreen->windowIds[i]);
}
schedule_bg_copy_tilemap_to_vram(0);
@@ -2851,41 +2904,41 @@ static void ClearPageWindowTilemaps(u8 page)
switch (page)
{
case PSS_PAGE_INFO:
- ClearWindowTilemap(4);
- if (InBattleFactory() == TRUE || sub_81B9E94() == TRUE)
- ClearWindowTilemap(8);
- ClearWindowTilemap(9);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL);
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE);
break;
case PSS_PAGE_SKILLS:
- ClearWindowTilemap(10);
- ClearWindowTilemap(11);
- ClearWindowTilemap(12);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP);
break;
case PSS_PAGE_BATTLE_MOVES:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- ClearWindowTilemap(14);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
}
else
{
- ClearWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
case PSS_PAGE_CONTEST_MOVES:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- ClearWindowTilemap(15);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
}
else
{
- ClearWindowTilemap(5);
+ ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO);
}
break;
}
- for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
SummaryScreen_RemoveWindowByIndex(i);
}
@@ -2895,18 +2948,18 @@ static void ClearPageWindowTilemaps(u8 page)
static u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId)
{
- u8 *windowIdPtr = &(pssData->windowIds[templateId]);
+ u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[templateId]);
if (*windowIdPtr == 0xFF)
{
*windowIdPtr = AddWindow(&template[templateId]);
- FillWindowPixelBuffer(*windowIdPtr, 0);
+ FillWindowPixelBuffer(*windowIdPtr, PIXEL_FILL(0));
}
return *windowIdPtr;
}
static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
{
- u8 *windowIdPtr = &(pssData->windowIds[windowIndex]);
+ u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[windowIndex]);
if (*windowIdPtr != 0xFF)
{
ClearWindowTilemap(*windowIdPtr);
@@ -2918,10 +2971,10 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
static void PrintPageSpecificText(u8 pageIndex)
{
u16 i;
- for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++)
{
- if (pssData->windowIds[i] != 0xFF)
- FillWindowPixelBuffer(pssData->windowIds[i], 0);
+ if (sMonSummaryScreen->windowIds[i] != 0xFF)
+ FillWindowPixelBuffer(sMonSummaryScreen->windowIds[i], PIXEL_FILL(0));
}
sTextPrinterFunctions[pageIndex]();
}
@@ -2933,7 +2986,7 @@ static void CreateTextPrinterTask(u8 pageIndex)
static void PrintInfoPageText(void)
{
- if (pssData->summary.isEgg)
+ if (sMonSummaryScreen->summary.isEgg)
{
PrintEggOTName();
PrintEggOTID();
@@ -2985,52 +3038,52 @@ static void PrintMonOTName(void)
{
u8 windowId;
int x;
- if (InBattleFactory() != TRUE && sub_81B9E94() != TRUE)
+ if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE)
{
- windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER);
SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1);
x = GetStringWidth(1, gText_OTSlash, 0);
- if (pssData->summary.OTGender == 0)
- SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 5);
+ if (sMonSummaryScreen->summary.OTGender == 0)
+ SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 5);
else
- SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 6);
+ SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 6);
}
}
static void PrintMonOTID(void)
{
int xPos;
- if (InBattleFactory() != TRUE && sub_81B9E94() != TRUE)
+ if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE)
{
- ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5);
+ ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)sMonSummaryScreen->summary.OTID, 2, 5);
xPos = GetStringRightAlignXOffset(1, gStringVar1, 56);
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ID), 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);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), 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);
+ u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
}
static void BufferMonTrainerMemo(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
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)
+ if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE || IsInGamePartnerMon() == TRUE)
{
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature);
}
@@ -3074,19 +3127,19 @@ static void BufferMonTrainerMemo(void)
static void PrintMonTrainerMemo(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), gStringVar4, 0, 1, 0, 0);
}
static void BufferNatureString(void)
{
- struct PssData *sumStruct = pssData;
+ struct PokemonSummaryScreenData *sumStruct = sMonSummaryScreen;
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5);
}
static void GetMetLevelString(u8 *output)
{
- u8 level = pssData->summary.metLevel;
+ u8 level = sMonSummaryScreen->summary.metLevel;
if (level == 0)
level = EGG_HATCH_LEVEL;
ConvertIntToDecimalStringN(output, level, 0, 3);
@@ -3095,11 +3148,11 @@ static void GetMetLevelString(u8 *output)
static bool8 DoesMonOTMatchOwner(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
u32 trainerId;
u8 gender;
- if (pssData->monList.mons == gEnemyParty)
+ if (sMonSummaryScreen->monList.mons == gEnemyParty)
{
u8 multiID = GetMultiplayerId() ^ 1;
trainerId = (u16)gLinkPlayers[multiID].trainerId;
@@ -3121,7 +3174,7 @@ static bool8 DoesMonOTMatchOwner(void)
static bool8 DidMonComeFromGBAGames(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN)
return TRUE;
return FALSE;
@@ -3129,7 +3182,7 @@ static bool8 DidMonComeFromGBAGames(void)
bool8 DidMonComeFromRSE(void)
{
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD)
return TRUE;
return FALSE;
@@ -3139,7 +3192,7 @@ static bool8 IsInGamePartnerMon(void)
{
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle)
{
- if (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5)
+ if (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5)
return TRUE;
}
return FALSE;
@@ -3147,7 +3200,7 @@ static bool8 IsInGamePartnerMon(void)
static void PrintEggOTName(void)
{
- u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0);
+ u32 windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER);
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,15 +3212,15 @@ 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, PSS_DATA_WINDOW_INFO_ID), gStringVar1, x, 1, 0, 1);
}
static void PrintEggState(void)
{
const u8 *text;
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
- if (pssData->summary.sanity == TRUE)
+ if (sMonSummaryScreen->summary.sanity == TRUE)
text = gText_EggWillTakeALongTime;
else if (sum->friendship <= 5)
text = gText_EggAboutToHatch;
@@ -3178,15 +3231,15 @@ static void PrintEggState(void)
else
text = gText_EggWillTakeALongTime;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), text, 0, 1, 0, 0);
}
static void PrintEggMemo(void)
{
const u8 *text;
- struct PokeSummary *sum = &pssData->summary;
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
- if (pssData->summary.sanity != 1)
+ if (sMonSummaryScreen->summary.sanity != 1)
{
if (sum->metLocation == METLOC_FATEFUL_ENCOUNTER)
text = gText_PeculiarEggNicePlace;
@@ -3202,7 +3255,7 @@ static void PrintEggMemo(void)
text = gText_OddEggFoundByCouple;
}
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), text, 0, 1, 0, 0);
}
static void PrintSkillsPageText(void)
@@ -3255,22 +3308,22 @@ static void PrintHeldItemName(void)
const u8 *text;
int offset;
- if (pssData->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5))
+ if (sMonSummaryScreen->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5))
{
text = ItemId_GetName(ITEM_ENIGMA_BERRY);
}
- else if (pssData->summary.item == ITEM_NONE)
+ else if (sMonSummaryScreen->summary.item == ITEM_NONE)
{
text = gText_None;
}
else
{
- CopyItemName(pssData->summary.item, gStringVar1);
+ CopyItemName(sMonSummaryScreen->summary.item, gStringVar1);
text = gStringVar1;
}
offset = GetStringCenterAlignXOffset(1, text, 72) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_HELD_ITEM), text, offset, 1, 0, 0);
}
static void PrintRibbonCount(void)
@@ -3278,19 +3331,19 @@ static void PrintRibbonCount(void)
const u8 *text;
int offset;
- if (pssData->summary.ribbonCount == 0)
+ if (sMonSummaryScreen->summary.ribbonCount == 0)
{
text = gText_None;
}
else
{
- ConvertIntToDecimalStringN(gStringVar1, pssData->summary.ribbonCount, 1, 2);
+ ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.ribbonCount, 1, 2);
StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1);
text = gStringVar4;
}
offset = GetStringCenterAlignXOffset(1, text, 70) + 6;
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, offset, 1, 0, 0);
}
static void BufferLeftColumnStats(void)
@@ -3300,17 +3353,17 @@ static void BufferLeftColumnStats(void)
u8 *attackString = Alloc(8);
u8 *defenseString = Alloc(8);
- ConvertIntToDecimalStringN(currentHPString, pssData->summary.currentHP, 1, 3);
- ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3);
- ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7);
- ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7);
+ ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, 1, 3);
+ ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, 1, 3);
+ ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, 1, 7);
+ ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, 1, 7);
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString);
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,31 +3373,31 @@ static void BufferLeftColumnStats(void)
static void PrintLeftColumnStats(void)
{
- SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_STATS_LEFT), gStringVar4, 4, 1, 0, 0);
}
static void BufferRightColumnStats(void)
{
- ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3);
- ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3);
- ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, 1, 3);
DynamicPlaceholderTextUtil_Reset();
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, PSS_DATA_WINDOW_SKILLS_STATS_RIGHT), gStringVar4, 2, 1, 0, 0);
}
static void PrintExpPointsNextLevel(void)
{
- struct PokeSummary *sum = &pssData->summary;
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4);
+ struct PokeSummary *sum = &sMonSummaryScreen->summary;
+ u8 windowId = AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_EXP);
int offset;
u32 expToNextLevel;
@@ -3369,17 +3422,17 @@ static void PrintBattleMoves(void)
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
- if (pssData->firstMoveIndex == MAX_MON_MOVES)
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
{
- if (pssData->newMove != MOVE_NONE)
- PrintMoveDetails(pssData->newMove);
+ if (sMonSummaryScreen->newMove != MOVE_NONE)
+ PrintMoveDetails(sMonSummaryScreen->newMove);
}
else
{
- PrintMoveDetails(pssData->summary.moves[pssData->firstMoveIndex]);
+ PrintMoveDetails(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]);
}
}
}
@@ -3403,22 +3456,22 @@ static void Task_PrintBattleMoves(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 5:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 6:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->firstMoveIndex == MAX_MON_MOVES)
- data[1] = pssData->newMove;
+ if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
+ data[1] = sMonSummaryScreen->newMove;
else
- data[1] = pssData->summary.moves[pssData->firstMoveIndex];
+ data[1] = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex];
}
break;
case 7:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PrintMoveDetails(data[1]);
}
break;
@@ -3435,9 +3488,9 @@ static void PrintMoveNameAndPP(u8 moveIndex)
u32 ppState;
const u8 *text;
u32 offset;
- struct PssData *summaryStruct = pssData;
- u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
- u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
+ struct PokemonSummaryScreenData *summaryStruct = sMonSummaryScreen;
+ u8 moveNameWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 ppValueWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
u16 move = summaryStruct->summary.moves[moveIndex];
if (move != 0)
@@ -3449,7 +3502,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);
@@ -3470,7 +3523,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
const u8 *text;
if (moveIndex != 0)
{
- FillWindowPixelRect(14, 0, 53, 0, 19, 32);
+ FillWindowPixelRect(PSS_LABEL_WINDOW_MOVES_POWER_ACC, PIXEL_FILL(0), 53, 0, 19, 32);
if (gBattleMoves[moveIndex].power < 2)
{
@@ -3482,7 +3535,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
text = gStringVar1;
}
- SummaryScreen_PrintTextOnWindow(14, text, 53, 1, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 1, 0, 0);
if (gBattleMoves[moveIndex].accuracy == 0)
{
@@ -3494,7 +3547,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
text = gStringVar1;
}
- SummaryScreen_PrintTextOnWindow(14, text, 53, 17, 0, 0);
+ SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 17, 0, 0);
}
}
@@ -3505,10 +3558,10 @@ static void PrintContestMoves(void)
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
- PrintContestMoveDescription(pssData->firstMoveIndex);
+ PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
}
}
@@ -3532,14 +3585,14 @@ static void Task_PrintContestMoves(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 4:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 5:
- if (pssData->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
- if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
- PrintContestMoveDescription(pssData->firstMoveIndex);
+ if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
+ PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
}
break;
case 6:
@@ -3554,24 +3607,24 @@ static void PrintContestMoveDescription(u8 moveSlot)
u16 move;
if (moveSlot == MAX_MON_MOVES)
- move = pssData->newMove;
+ move = sMonSummaryScreen->newMove;
else
- move = pssData->summary.moves[moveSlot];
+ move = sMonSummaryScreen->summary.moves[moveSlot];
if (move != MOVE_NONE)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0);
}
}
static void PrintMoveDetails(u16 move)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
- FillWindowPixelBuffer(windowId, 0);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
if (move != MOVE_NONE)
{
- if (pssData->currPageIndex == 2)
+ if (sMonSummaryScreen->currPageIndex == PSS_MODE_BOX)
{
PrintMovePowerAndAccuracy(move);
SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
@@ -3592,18 +3645,18 @@ 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, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
- if (pssData->newMove == MOVE_NONE)
+ if (sMonSummaryScreen->newMove == MOVE_NONE)
{
SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1);
}
else
{
- u16 move = pssData->newMove;
+ u16 move = sMonSummaryScreen->newMove;
- if (pssData->currPageIndex == 2)
+ if (sMonSummaryScreen->currPageIndex == 2)
SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6);
else
SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5);
@@ -3612,28 +3665,28 @@ 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);
- FillWindowPixelRect(windowId, 0, 0, 66, 72, 16);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES);
+ FillWindowPixelRect(windowId, PIXEL_FILL(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, PSS_DATA_WINDOW_MOVE_NAMES);
+ u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP);
- FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10);
- FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10);
+ FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x48, 0x10);
+ FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x48, 0x10);
- FillWindowPixelRect(windowId2, 0, 0, moveIndex1 * 16, 0x30, 0x10);
- FillWindowPixelRect(windowId2, 0, 0, moveIndex2 * 16, 0x30, 0x10);
+ FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x30, 0x10);
+ FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x30, 0x10);
PrintMoveNameAndPP(moveIndex1);
PrintMoveNameAndPP(moveIndex2);
@@ -3641,8 +3694,8 @@ static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2)
static void PrintHMMovesCantBeForgotten(void)
{
- u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2);
- FillWindowPixelBuffer(windowId, 0);
+ u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0);
}
@@ -3650,24 +3703,24 @@ static void ResetSpriteIds(void)
{
u8 i;
- for (i = 0; i < ARRAY_COUNT(pssData->spriteIds); i++)
+ for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++)
{
- pssData->spriteIds[i] = 0xFF;
+ sMonSummaryScreen->spriteIds[i] = 0xFF;
}
}
static void DestroySpriteInArray(u8 spriteArrayId)
{
- if (pssData->spriteIds[spriteArrayId] != 0xFF)
+ if (sMonSummaryScreen->spriteIds[spriteArrayId] != 0xFF)
{
- DestroySprite(&gSprites[pssData->spriteIds[spriteArrayId]]);
- pssData->spriteIds[spriteArrayId] = 0xFF;
+ DestroySprite(&gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]);
+ sMonSummaryScreen->spriteIds[spriteArrayId] = 0xFF;
}
}
static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
{
- gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible;
+ gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]].invisible = invisible;
}
static void HidePageSpecificSprites(void)
@@ -3675,16 +3728,16 @@ static void HidePageSpecificSprites(void)
// Keeps Pokémon, caught ball and status sprites visible.
u8 i;
- for (i = 3; i < ARRAY_COUNT(pssData->spriteIds); i++)
+ for (i = 3; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++)
{
- if (pssData->spriteIds[i] != 0xFF)
+ if (sMonSummaryScreen->spriteIds[i] != 0xFF)
SetSpriteInvisibility(i, TRUE);
}
}
static void SetTypeIcons(void)
{
- switch (pssData->currPageIndex)
+ switch (sMonSummaryScreen->currPageIndex)
{
case PSS_PAGE_INFO:
SetMonTypeIcons();
@@ -3706,8 +3759,8 @@ static void CreateMoveTypeIcons(void)
for (i = 3; i < 8; i++)
{
- if (pssData->spriteIds[i] == 0xFF)
- pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
+ if (sMonSummaryScreen->spriteIds[i] == 0xFF)
+ sMonSummaryScreen->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
SetSpriteInvisibility(i, TRUE);
}
@@ -3715,7 +3768,7 @@ static void CreateMoveTypeIcons(void)
static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
{
- struct Sprite *sprite = &gSprites[pssData->spriteIds[spriteArrayId]];
+ struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]];
StartSpriteAnim(sprite, typeId);
sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId];
sprite->pos1.x = x + 16;
@@ -3725,7 +3778,7 @@ static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
static void SetMonTypeIcons(void)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (summary->isEgg)
{
SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3);
@@ -3749,7 +3802,7 @@ static void SetMonTypeIcons(void)
static void SetMoveTypeIcons(void)
{
u8 i;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (summary->moves[i] != MOVE_NONE)
@@ -3762,7 +3815,7 @@ static void SetMoveTypeIcons(void)
static void SetContestMoveTypeIcons(void)
{
u8 i;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (summary->moves[i] != MOVE_NONE)
@@ -3774,23 +3827,23 @@ static void SetContestMoveTypeIcons(void)
static void SetNewMoveTypeIcon(void)
{
- if (pssData->newMove == MOVE_NONE)
+ if (sMonSummaryScreen->newMove == MOVE_NONE)
{
SetSpriteInvisibility(7, TRUE);
}
else
{
- if (pssData->currPageIndex == 2)
- SetMoveTypeSpritePosAndType(gBattleMoves[pssData->newMove].type, 85, 96, 7);
+ if (sMonSummaryScreen->currPageIndex == 2)
+ SetMoveTypeSpritePosAndType(gBattleMoves[sMonSummaryScreen->newMove].type, 85, 96, 7);
else
- SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[pssData->newMove].contestCategory, 85, 96, 7);
+ SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[sMonSummaryScreen->newMove].contestCategory, 85, 96, 7);
}
}
static void sub_81C4568(u8 a0, u8 a1)
{
- struct Sprite *sprite1 = &gSprites[pssData->spriteIds[a0 + 3]];
- struct Sprite *sprite2 = &gSprites[pssData->spriteIds[a1 + 3]];
+ struct Sprite *sprite1 = &gSprites[sMonSummaryScreen->spriteIds[a0 + 3]];
+ struct Sprite *sprite2 = &gSprites[sMonSummaryScreen->spriteIds[a1 + 3]];
u8 temp = sprite1->animNum;
sprite1->animNum = sprite2->animNum;
@@ -3809,7 +3862,7 @@ static void sub_81C4568(u8 a0, u8 a1)
static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
{
const struct CompressedSpritePalette *pal;
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
switch (*a1)
{
@@ -3818,7 +3871,7 @@ static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
case 0:
if (gMain.inBattle)
{
- if (sub_80688F8(3, pssData->curMonIndex))
+ if (sub_80688F8(3, sMonSummaryScreen->curMonIndex))
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
}
@@ -3831,7 +3884,7 @@ static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
{
if (gMonSpritesGfxPtr != NULL)
{
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
}
@@ -3842,7 +3895,7 @@ static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
}
else
{
- if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid);
}
@@ -3865,10 +3918,10 @@ static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
static void PlayMonCry(void)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (!summary->isEgg)
{
- if (ShouldPlayNormalMonCry(&pssData->currentMon) == TRUE)
+ if (ShouldPlayNormalMonCry(&sMonSummaryScreen->currentMon) == TRUE)
{
PlayCry3(summary->species2, 0, 0);
}
@@ -3881,7 +3934,7 @@ static void PlayMonCry(void)
static u8 sub_81C47B4(struct Pokemon *unused)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3906,7 +3959,7 @@ static u8 sub_81C47B4(struct Pokemon *unused)
static void SpriteCB_Pokemon(struct Sprite *sprite)
{
- struct PokeSummary *summary = &pssData->summary;
+ struct PokeSummary *summary = &sMonSummaryScreen->summary;
if (!gPaletteFade.active && sprite->data[2] != 1)
{
@@ -3932,7 +3985,7 @@ void SummaryScreen_DestroyUnknownTask(void)
static bool32 SummaryScreen_DoesSpriteHaveCallback(void)
{
- if (gSprites[pssData->spriteIds[0]].callback == SpriteCallbackDummy)
+ if (gSprites[sMonSummaryScreen->spriteIds[0]].callback == SpriteCallbackDummy)
{
return FALSE;
}
@@ -3942,16 +3995,16 @@ 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();
+ gSprites[sMonSummaryScreen->spriteIds[0]].animPaused = TRUE;
+ gSprites[sMonSummaryScreen->spriteIds[0]].callback = SpriteCallbackDummy;
+ StopPokemonAnimationDelayTask();
- paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100;
+ paletteIndex = (gSprites[sMonSummaryScreen->spriteIds[0]].oam.paletteNum * 16) | 0x100;
for (i = 0; i < 16; i++)
{
@@ -3961,22 +4014,22 @@ 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;
+ sMonSummaryScreen->markingsSprite = sprite;
if (sprite != NULL)
{
StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS));
- pssData->markingsSprite->pos1.x = 60;
- pssData->markingsSprite->pos1.y = 26;
- pssData->markingsSprite->oam.priority = 1;
+ sMonSummaryScreen->markingsSprite->pos1.x = 60;
+ sMonSummaryScreen->markingsSprite->pos1.y = 26;
+ sMonSummaryScreen->markingsSprite->oam.priority = 1;
}
}
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon)
{
- DestroySprite(pssData->markingsSprite);
+ DestroySprite(sMonSummaryScreen->markingsSprite);
FreeSpriteTilesByTag(30003);
CreateMonMarkingsSprite(mon);
}
@@ -3986,14 +4039,14 @@ static void CreateCaughtBallSprite(struct Pokemon *mon)
u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL));
LoadBallGfx(ball);
- pssData->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0);
- gSprites[pssData->spriteIds[1]].callback = SpriteCallbackDummy;
- gSprites[pssData->spriteIds[1]].oam.priority = 3;
+ sMonSummaryScreen->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0);
+ gSprites[sMonSummaryScreen->spriteIds[1]].callback = SpriteCallbackDummy;
+ gSprites[sMonSummaryScreen->spriteIds[1]].oam.priority = 3;
}
static void CreateSetStatusSprite(void)
{
- u8 *spriteId = &pssData->spriteIds[2];
+ u8 *spriteId = &sMonSummaryScreen->spriteIds[2];
u8 anim;
if (*spriteId == 0xFF)
@@ -4001,7 +4054,7 @@ static void CreateSetStatusSprite(void)
*spriteId = CreateSprite(&sSpriteTemplate_StatusCondition, 64, 152, 0);
}
- anim = sub_81B205C(&pssData->currentMon);
+ anim = GetMonAilment(&sMonSummaryScreen->currentMon);
if (anim != 0)
{
@@ -4017,9 +4070,9 @@ static void CreateSetStatusSprite(void)
static void sub_81C4AF8(u8 a0)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[a0];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[a0];
- if (pssData->currPageIndex > 1)
+ if (sMonSummaryScreen->currPageIndex > 1)
{
u8 subsprite = 0;
if (a0 == 8)
@@ -4071,11 +4124,11 @@ static void sub_81C4BE4(struct Sprite *sprite)
if (sprite->data[0] == 8)
{
- sprite->pos2.y = pssData->firstMoveIndex * 16;
+ sprite->pos2.y = sMonSummaryScreen->firstMoveIndex * 16;
}
else
{
- sprite->pos2.y = pssData->secondMoveIndex * 16;
+ sprite->pos2.y = sMonSummaryScreen->secondMoveIndex * 16;
}
}
@@ -4091,7 +4144,7 @@ static void sub_81C4C60(u8 a0)
static void sub_81C4C84(u8 a0)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[8];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[8];
a0 *= 3;
for (i = 0; i < 10; i++)
@@ -4114,7 +4167,7 @@ static void sub_81C4C84(u8 a0)
static void sub_81C4D18(u8 firstSpriteId)
{
u8 i;
- u8 *spriteIds = &pssData->spriteIds[firstSpriteId];
+ u8 *spriteIds = &sMonSummaryScreen->spriteIds[firstSpriteId];
for (i = 0; i < 10; i++)
{
diff --git a/src/pokenav.c b/src/pokenav.c
index 9b315dc9a..1912e7e57 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -209,7 +209,7 @@ void sub_81C7710(void);
static void InitKeys_(void);
static void FreeVars(void);
static void VblankCb_Pokenav(void);
-static void Cb2_Pokenav(void);
+static void CB2_Pokenav(void);
void sub_81C7C28(void);
void sub_81C72BC(void);
void sub_81C7B74(void);
@@ -456,7 +456,7 @@ u32 sub_81C7078(u32 (*func)(s32), u32 priority)
{
u16 taskId;
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
taskId = CreateTask(sub_81C7170, priority);
else
taskId = CreateTask(sub_81C71E4, priority);
@@ -553,7 +553,7 @@ void sub_81C71E4(u8 taskId)
}
}
-void CB2_PokeNav(void)
+void CB2_InitPokeNav(void)
{
gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40));
if (gUnknown_0203CF40 == NULL)
@@ -566,7 +566,7 @@ void CB2_PokeNav(void)
ResetTasks();
SetVBlankCallback(NULL);
CreateTask(sub_81C742C, 0);
- SetMainCallback2(Cb2_Pokenav);
+ SetMainCallback2(CB2_Pokenav);
SetVBlankCallback(VblankCb_Pokenav);
}
}
@@ -597,7 +597,7 @@ void sub_81C72BC(void)
FreeAllSpritePalettes();
SetVBlankCallback(NULL);
CreateTask(sub_81C742C, 0);
- SetMainCallback2(Cb2_Pokenav);
+ SetMainCallback2(CB2_Pokenav);
SetVBlankCallback(VblankCb_Pokenav);
}
}
@@ -656,7 +656,7 @@ static bool32 AnyMonHasRibbon(void)
return FALSE;
}
-static void Cb2_Pokenav(void)
+static void CB2_Pokenav(void)
{
RunTasks();
AnimateSprites();
@@ -1208,8 +1208,8 @@ bool32 IsDma3ManagerBusyWithBgCopy_(void)
void sub_81C7BF8(u32 windowId)
{
- FillWindowPixelBuffer(windowId, 0x44);
- FillWindowPixelRect(windowId, 0x55, 0, 0, 0x80, 1);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
+ FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1);
}
void sub_81C7C28(void)
diff --git a/src/pokenav_match_call.c b/src/pokenav_match_call.c
index 53f9f0548..b775ed10e 100644
--- a/src/pokenav_match_call.c
+++ b/src/pokenav_match_call.c
@@ -1,13 +1,11 @@
-
-// Includes
#include "global.h"
#include "battle_setup.h"
#include "event_data.h"
#include "string_util.h"
#include "battle.h"
#include "gym_leader_rematch.h"
+#include "match_call.h"
-extern void sub_8197080(u8 *dest);
extern const u8 gTrainerClassNames[][13];
// Static type declarations
diff --git a/src/record_mixing.c b/src/record_mixing.c
index c0ca5f19c..3a16f817e 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -34,9 +34,8 @@
#include "daycare.h"
#include "international_string_util.h"
#include "constants/battle_frontier.h"
+#include "dewford_trend.h"
-extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
-extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
// Static type declarations
@@ -106,7 +105,7 @@ static EWRAM_DATA union PlayerRecords *sSentRecord = NULL;
// Static ROM declarations
static void Task_RecordMixing_Main(u8 taskId);
-static void sub_80E7324(u8 taskId);
+static void Task_MixingRecordsRecv(u8 taskId);
static void Task_SendPacket(u8 taskId);
static void Task_CopyReceiveBuffer(u8 taskId);
static void Task_SendPacket_SwitchToReceive(u8 taskId);
@@ -120,7 +119,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
static void sub_80E7B2C(const u8 *);
static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
static void ReceiveGiftItem(u16 *item, u8 which);
-static void sub_80E7FF8(u8 taskId);
+static void Task_DoRecordMixing(u8 taskId);
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
@@ -170,7 +169,8 @@ static const u8 gUnknown_0858CFBE[3][4] =
#define BUFFER_CHUNK_SIZE 200
-void sub_80E6BE8(void)
+// Note: VAR_0x8005 contains the spotId.
+void RecordMixingPlayerSpotTriggered(void)
{
sub_80B37D4(Task_RecordMixing_Main);
}
@@ -292,7 +292,7 @@ static void ReceiveExchangePacket(u32 which)
static void PrintTextOnRecordMixing(const u8 *src)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, src, 0, 1, 0, NULL);
CopyWindowToVram(0, 3);
}
@@ -313,6 +313,7 @@ static void Task_RecordMixing_SoundEffect(u8 taskId)
#define tState data[0]
#define tSndEffTaskId data[15]
+// Note: Currently, special var 8005 contains the player's spot id.
static void Task_RecordMixing_Main(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -322,16 +323,16 @@ static void Task_RecordMixing_Main(u8 taskId)
case 0: // init
sSentRecord = malloc(sizeof(union PlayerRecords));
sReceivedRecords = malloc(sizeof(union PlayerRecords) * 4);
- sub_8009628(gSpecialVar_0x8005);
+ SetLocalLinkPlayerId(gSpecialVar_0x8005);
VarSet(VAR_TEMP_0, 1);
gUnknown_03001130 = FALSE;
PrepareExchangePacket();
CreateRecordMixingSprite();
tState = 1;
- data[10] = CreateTask(sub_80E7324, 80);
+ data[10] = CreateTask(Task_MixingRecordsRecv, 80);
tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
break;
- case 1: // wait for sub_80E7324
+ case 1: // wait for Task_MixingRecordsRecv
if (!gTasks[data[10]].isActive)
{
tState = 2;
@@ -341,11 +342,11 @@ static void Task_RecordMixing_Main(u8 taskId)
}
break;
case 2:
- data[10] = CreateTask(sub_80E7FF8, 10);
+ data[10] = CreateTask(Task_DoRecordMixing, 10);
tState = 3;
PlaySE(SE_W226);
break;
- case 3: // wait for sub_80E7FF8
+ case 3: // wait for Task_DoRecordMixing
if (!gTasks[data[10]].isActive)
{
tState = 4;
@@ -370,7 +371,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
CreateTask(sub_80AF2B4, 10);
}
- sub_8197434(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
EnableBothScriptContexts();
}
@@ -381,7 +382,7 @@ static void Task_RecordMixing_Main(u8 taskId)
#undef tState
#undef tSndEffTaskId
-static void sub_80E7324(u8 taskId)
+static void Task_MixingRecordsRecv(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -405,7 +406,7 @@ static void sub_80E7324(u8 taskId)
u8 players = GetLinkPlayerCount_2();
if (IsLinkMaster() == TRUE)
{
- if (players == sub_800AA48())
+ if (players == GetSavedPlayerCount())
{
PlaySE(SE_PIN);
task->data[0] = 201;
@@ -420,14 +421,15 @@ static void sub_80E7324(u8 taskId)
}
break;
case 201:
- if (sub_800AA48() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
+ // We're the link master. Delay for 30 frames per connected player.
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
task->data[0] = 1;
}
break;
case 301:
- if (sub_800AA48() == GetLinkPlayerCount_2())
+ if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
task->data[0] = 1;
break;
case 400: // wait 20 frames
@@ -470,6 +472,7 @@ static void sub_80E7324(u8 taskId)
StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]);
sRecordStructSize = sizeof(struct PlayerRecordsEmerald);
}
+ // Note: This task is destroyed by Task_CopyReceiveBuffer when it's done.
}
break;
case 5: // wait 60 frames
@@ -938,7 +941,7 @@ static void ReceiveGiftItem(u16 *item, u8 which)
}
}
-static void sub_80E7FF8(u8 taskId)
+static void Task_DoRecordMixing(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -953,20 +956,22 @@ static void sub_80E7FF8(u8 taskId)
else
task->data[0] = 6;
break;
+
+ // Mixing Ruby/Sapphire records.
case 2:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
task->data[0] ++;
break;
case 3:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
task->data[0] = 4;
task->data[1] = 0;
}
break;
- case 4:
+ case 4: // Wait 10 frames
if (++task->data[1] > 10)
{
sub_800AC34();
@@ -974,22 +979,24 @@ static void sub_80E7FF8(u8 taskId)
}
break;
case 5:
- if (gReceivedRemoteLinkPlayers == 0)
+ if (gReceivedRemoteLinkPlayers == FALSE)
DestroyTask(taskId);
break;
+
+ // Mixing Emerald records.
case 6:
- if (!sub_801048C(0))
+ if (!sub_801048C(FALSE))
{
CreateTask(sub_8153688, 5);
task->data[0] ++;
}
break;
- case 7:
+ case 7: // wait for sub_8153688 to finish.
if (!FuncIsActiveTask(sub_8153688))
{
if (gWirelessCommType)
{
- sub_801048C(1);
+ sub_801048C(TRUE);
task->data[0] = 8;
}
else
diff --git a/src/region_map.c b/src/region_map.c
index ff0c19167..8dadc78a7 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -883,7 +883,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
case MAP_TYPE_CITY:
case MAP_TYPE_ROUTE:
case MAP_TYPE_UNDERWATER:
- case MAP_TYPE_6:
+ case MAP_TYPE_OCEAN_ROUTE:
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
gRegionMap->playerIsInCave = FALSE;
mapWidth = gMapHeader.mapLayout->width;
@@ -896,7 +896,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
}
break;
case MAP_TYPE_UNDERGROUND:
- case MAP_TYPE_7:
+ case MAP_TYPE_UNUSED_2:
if (gMapHeader.flags & 0x02)
{
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
@@ -1159,7 +1159,7 @@ static u16 RegionMap_GetTerraCaveMapSecId(void)
{
s16 idx;
- idx = VarGet(VAR_0x4037) - 1;
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION) - 1;
if (idx < 0 || idx > 15)
{
idx = 0;
@@ -1171,7 +1171,7 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
{
u16 idx;
- idx = VarGet(VAR_0x4037);
+ idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION);
if (idx < 9 || idx > 16)
{
idx = 9;
@@ -1622,7 +1622,7 @@ void MCB2_FlyMap(void)
case 7:
LoadPalette(sRegionMapFramePal, 0x10, 0x20);
PutWindowTilemap(2);
- FillWindowPixelBuffer(2, 0x00);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
gMain.state++;
@@ -1687,8 +1687,8 @@ static void sub_8124904(void)
{
StringLength(gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]);
flag = TRUE;
- sub_8198070(0, FALSE);
- SetWindowBorderStyle(1, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x65, 0x0d);
AddTextPrinterParameterized(1, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
name = gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec];
AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL);
@@ -1702,12 +1702,12 @@ static void sub_8124904(void)
{
if (gUnknown_03001180 == TRUE)
{
- sub_8198070(1, FALSE);
- SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
}
else
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
}
AddTextPrinterParameterized(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1718,10 +1718,10 @@ static void sub_8124904(void)
{
if (gUnknown_03001180 == TRUE)
{
- sub_8198070(1, FALSE);
- SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ ClearStdWindowAndFrameToTransparent(1, FALSE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
}
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 2);
schedule_bg_copy_tilemap_to_vram(0);
gUnknown_03001180 = FALSE;
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 34444cbf4..ce9f5b98b 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -290,7 +290,7 @@ static void FreeCursorPalette(void)
static void HideChooseTimeWindow(u8 windowId)
{
- sub_8198070(windowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(windowId, FALSE);
RemoveWindow(windowId);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -319,7 +319,7 @@ static void PrintTime(u8 windowId, u8 x, u8 y, u16 days, u8 hours, u8 minutes, u
static void ShowChooseTimeWindow(u8 windowId, u16 days, u8 hours, u8 minutes, u8 seconds)
{
- SetWindowBorderStyle(windowId, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x214, 0xE);
PrintTime(windowId, 0, 1, days, hours, minutes, seconds);
AddTextPrinterParameterized(windowId, 1, gText_Confirm2, 126, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
@@ -495,7 +495,7 @@ static void VBlankCB(void)
static void ShowMessage(const u8 *str)
{
- sub_8197B1C(1, FALSE, 0x200, 0xF);
+ DrawDialogFrameWithCustomTileAndPalette(1, FALSE, 0x200, 0xF);
AddTextPrinterParameterized(1, 1, str, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -507,7 +507,7 @@ static void Task_ShowResetRtcPrompt(u8 taskId)
switch (data[0])
{
case 0:
- SetWindowBorderStyle(0, FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x214, 0xE);
AddTextPrinterParameterized(0, 1, gText_PresentTime, 0, 1, TEXT_SPEED_FF, 0);
PrintTime(
0,
@@ -574,7 +574,7 @@ static void Task_ResetRtcScreen(u8 taskId)
case 2:
if (gTasks[data[1]].isActive != TRUE)
{
- sub_8198070(0, FALSE);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
ShowMessage(gText_PleaseResetTime);
gLocalTime = gSaveBlock2Ptr->lastBerryTreeUpdate;
data[1] = CreateTask(Task_ResetRtc_0, 80);
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 0926d4569..dd177f884 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -2,6 +2,7 @@
#include "reshow_battle_screen.h"
#include "battle.h"
#include "palette.h"
+#include "pokemon.h"
#include "main.h"
#include "scanline_effect.h"
#include "text.h"
@@ -18,8 +19,6 @@
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern void SetMultiuseSpriteTemplateToTrainerBack(u16 backPicId, u8 battlerPosition);
-
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
static bool8 LoadBattlerSpriteGfx(u8 battlerId);
diff --git a/src/rock.c b/src/rock.c
index 14ffc63e0..814b1d88b 100644
--- a/src/rock.c
+++ b/src/rock.c
@@ -12,8 +12,6 @@
extern const union AnimCmd *const gUnknown_085950E0[];
extern const union AnimCmd *const gUnknown_085954D0[];
-extern void AnimMoveTwisterParticle(struct Sprite *);
-
void sub_81109F0(struct Sprite *);
void sub_8110AB4(struct Sprite *);
void AnimDirtParticleAcrossScreen(struct Sprite *);
diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c
index baed26cf8..3d9eab8d7 100644
--- a/src/rom_8011DC0.c
+++ b/src/rom_8011DC0.c
@@ -33,8 +33,7 @@
#include "start_menu.h"
#include "data2.h"
#include "field_screen_effect.h"
-
-extern void HealPlayerParty(void);
+#include "script_pokemon_util_80F87D8.h"
struct UnkStruct_Shared
{
@@ -188,7 +187,7 @@ extern u8 gUnknown_02022C3E;
extern u16 gUnknown_02022C3C;
extern u8 gUnknown_02022C20[];
extern u8 gFieldLinkPlayerCount;
-extern u8 gUnknown_03005DB4;
+extern u8 gLocalLinkPlayerId;
// IWRAM vars
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
@@ -387,7 +386,7 @@ void nullsub_89(void)
void sub_80124EC(u8 windowId, u8 arg1, u8 stringId)
{
- FillWindowPixelBuffer(windowId, 0x11);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
switch (arg1 << 8)
{
case 0x200:
@@ -506,17 +505,17 @@ void sub_8012780(u8 taskId)
}
data->field_11 = AddWindow(&gUnknown_082F012C);
- FillWindowPixelBuffer(data->field_10, 0x22);
+ FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2));
sub_80173E0(data->field_10, 0, gUnknown_082EDBC4, 8, 1, 4);
PutWindowTilemap(data->field_10);
CopyWindowToVram(data->field_10, 2);
- NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE);
+ DrawStdWindowFrame(data->listWindowId, FALSE);
gMultiuseListMenuTemplate = gUnknown_082F015C;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
- NewMenuHelpers_DrawStdWindowFrame(data->field_11, FALSE);
+ DrawStdWindowFrame(data->field_11, FALSE);
PutWindowTilemap(data->field_11);
CopyWindowToVram(data->field_11, 2);
@@ -786,10 +785,10 @@ void sub_8012780(u8 taskId)
void sub_8012F64(struct UnkStruct_Leader *data)
{
ClearWindowTilemap(data->field_11);
- sub_819746C(data->field_11, FALSE);
+ ClearStdWindowAndFrame(data->field_11, FALSE);
DestroyListMenuTask(data->listTaskId, 0, 0);
ClearWindowTilemap(data->field_10);
- sub_819746C(data->listWindowId, FALSE);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
CopyBgTilemapBufferToVram(0);
RemoveWindow(data->field_11);
RemoveWindow(data->listWindowId);
@@ -1075,17 +1074,17 @@ void sub_80134E8(u8 taskId)
data->listWindowId = AddWindow(&gUnknown_082F0174);
data->field_D = AddWindow(&gUnknown_082F017C);
- FillWindowPixelBuffer(data->field_C, 0x22);
+ FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2));
sub_80173E0(data->field_C, 0, gUnknown_082EF7DC, 8, 1, 4);
PutWindowTilemap(data->field_C);
CopyWindowToVram(data->field_C, 2);
- NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE);
+ DrawStdWindowFrame(data->listWindowId, FALSE);
gMultiuseListMenuTemplate = gUnknown_082F0204;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
- NewMenuHelpers_DrawStdWindowFrame(data->field_D, FALSE);
+ DrawStdWindowFrame(data->field_D, FALSE);
PutWindowTilemap(data->field_D);
sub_80125BC(data->field_D);
CopyWindowToVram(data->field_D, 2);
@@ -1254,10 +1253,10 @@ void sub_80134E8(u8 taskId)
case 18:
case 20:
ClearWindowTilemap(data->field_D);
- sub_819746C(data->field_D, FALSE);
+ ClearStdWindowAndFrame(data->field_D, FALSE);
DestroyListMenuTask(data->listTaskId, 0, 0);
ClearWindowTilemap(data->field_C);
- sub_819746C(data->listWindowId, FALSE);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
CopyBgTilemapBufferToVram(0);
RemoveWindow(data->field_D);
RemoveWindow(data->listWindowId);
@@ -1630,7 +1629,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,9 +1638,9 @@ 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();
+ gLocalLinkPlayerId = GetMultiplayerId();
SetCableClubWarp();
SetWarpDestination(mapGroup, mapNum, -1, x, y);
WarpIntoMap();
@@ -1697,7 +1696,7 @@ void sub_801440C(u8 taskId)
case 81:
CleanupOverworldWindowsAndTilemaps();
gMain.savedCallback = sub_801AC54;
- sub_81B8518(3);
+ InitChooseHalfPartyForBattle(3);
break;
case 1:
CleanupOverworldWindowsAndTilemaps();
@@ -2155,7 +2154,7 @@ void sub_8014F48(u8 taskId)
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
sub_8018784(data->field_D);
- FillWindowPixelBuffer(data->field_D, 0x11);
+ FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1));
PutWindowTilemap(data->field_D);
sub_80125BC(data->field_D);
CopyWindowToVram(data->field_D, 2);
diff --git a/src/roulette.c b/src/roulette.c
index a6a020f39..05d5006f0 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -973,7 +973,7 @@ static void sub_81405CC(void)
sub_814372C(6);
sub_81436D0(0);
sub_81424FC(0);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5B89, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
gSpriteCoordOffsetX = -60;
@@ -996,7 +996,7 @@ static void sub_81405CC(void)
taskId = gUnknown_0203AB88->varA4 = CreateTask(sub_81408A8, 0);
gTasks[taskId].data[6] = 6;
gTasks[taskId].data[13] = GetCoins();
- sub_80EDE84(GetCoins());
+ AlertTVThatPlayerPlayedRoulette(GetCoins());
gUnknown_0203AB88->varA5 = CreateTask(sub_8140814, 1);
SetMainCallback2(sub_8140238);
return;
@@ -1043,8 +1043,8 @@ static void sub_81408A8(u8 taskId)
static void sub_8140914(u8 taskId)
{
- DisplayYesNoMenu();
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, 0);
+ DisplayYesNoMenuDefaultYes();
+ DrawStdWindowFrame(gUnknown_0203AB8C, 0);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C13, 0, 1, TEXT_SPEED_FF, 0);
CopyWindowToVram(gUnknown_0203AB8C, 3);
DoYesNoFuncWithChoice(taskId, &gUnknown_085B6410);
@@ -1052,7 +1052,7 @@ static void sub_8140914(u8 taskId)
static void sub_8140968(u8 taskId)
{
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
gTasks[taskId].func = sub_8140BD0;
}
@@ -1808,14 +1808,14 @@ static void sub_814189C(u8 taskId)
if (gTasks[taskId].data[2] == 12)
{
PlayFanfare(MUS_ME_B_BIG);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BD7, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
}
else
{
PlayFanfare(MUS_ME_B_SMALL);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BCB, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
}
@@ -1823,7 +1823,7 @@ static void sub_814189C(u8 taskId)
case 0:
default:
m4aSongNumStart(SE_HAZURE);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BE0, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
break;
@@ -1867,7 +1867,7 @@ static void sub_8141A18(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]), STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gUnknown_082A5BEF);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
gTasks[taskId].data[1] = (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]);
@@ -1900,14 +1900,14 @@ static void sub_8141B58(u8 taskId)
{
if (gTasks[taskId].data[6] == 6)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C21, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, dp01t_12_3_battle_menu, 0xFFFF, 3);
}
else if (gTasks[taskId].data[13] == 9999)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140914, 0xFFFF, 0x3);
@@ -1919,7 +1919,7 @@ static void sub_8141B58(u8 taskId)
}
else
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C04, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140994, 0x3C, 0x3);
@@ -1944,7 +1944,7 @@ static void dp01t_12_3_battle_menu(u8 taskId)
if (gTasks[taskId].data[13] == 9999)
{
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(gUnknown_0203AB8C, 3);
sub_8141F7C(taskId, sub_8140914, 0xFFFF, 3);
@@ -1964,7 +1964,7 @@ static void sub_8141DE4(u8 taskId)
gSpecialVar_0x8004 = TRUE;
else
gSpecialVar_0x8004 = FALSE;
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
gTasks[taskId].func = sub_8141E7C;
}
@@ -3256,7 +3256,7 @@ static const struct SpriteTemplate gUnknown_085B7AEC =
static void sub_81428C4(u8 r0)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(r0, &gUnknown_085B6408);
}
@@ -3272,7 +3272,7 @@ static void sub_81428E4(u8 taskId)
static void sub_8142918(u8 taskId)
{
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
HideCoinsWindow();
FreeAllWindowBuffers();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
@@ -3283,7 +3283,7 @@ static void sub_8142918(u8 taskId)
static void sub_814297C(u8 taskId)
{
- sub_819746C(0, FALSE);
+ ClearStdWindowAndFrame(0, FALSE);
HideCoinsWindow();
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -3296,7 +3296,7 @@ static void sub_81429A0(u8 taskId)
{
gSpecialVar_0x8004 = 1;
HideCoinsWindow();
- sub_819746C(0, TRUE);
+ ClearStdWindowAndFrame(0, TRUE);
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -3309,7 +3309,7 @@ static void sub_81429F0(u8 taskId)
u32 temp = gUnknown_085B6344[(gSpecialVar_0x8004 & 1) + (gSpecialVar_0x8004 >> 7 << 1)];
ConvertIntToDecimalStringN(gStringVar1, temp, STR_CONV_MODE_LEADING_ZEROS, 1);
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81428C4;
@@ -3326,7 +3326,7 @@ static void Task_Roulette_0(u8 taskId)
{
if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 1))
{
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gUnknown_082A5B6B, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81429F0;
@@ -3334,7 +3334,7 @@ static void Task_Roulette_0(u8 taskId)
else
{
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81428C4;
@@ -3343,7 +3343,7 @@ static void Task_Roulette_0(u8 taskId)
else
{
StringExpandPlaceholders(gStringVar4, gUnknown_082A5B4E);
- NewMenuHelpers_DrawStdWindowFrame(0, FALSE);
+ DrawStdWindowFrame(0, FALSE);
AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
CopyWindowToVram(0, 3);
gTasks[taskId].func = sub_81429A0;
diff --git a/src/safari_zone.c b/src/safari_zone.c
index accf94981..703c3d0cd 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -10,6 +10,7 @@
#include "string_util.h"
#include "tv.h"
#include "constants/game_stat.h"
+#include "field_screen_effect.h"
struct PokeblockFeeder
{
@@ -27,8 +28,6 @@ extern const u8 EventScript_2A4B6F[];
extern const u8 EventScript_2A4B4C[];
extern const u8 EventScript_2A4B9B[];
-extern void sub_80AF6F0(void);
-
EWRAM_DATA u8 gNumSafariBalls = 0;
EWRAM_DATA static u16 sSafariZoneStepCounter = 0;
EWRAM_DATA static u8 sSafariZoneCaughtMons = 0;
diff --git a/src/save.c b/src/save.c
index a22e20f0b..361a88e1e 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,5 +1,7 @@
#include "global.h"
+#include "agb_flash.h"
#include "gba/flash_internal.h"
+#include "fieldmap.h"
#include "save.h"
#include "task.h"
#include "decompress.h"
@@ -8,6 +10,7 @@
#include "pokemon_storage_system.h"
#include "main.h"
#include "trainer_hill.h"
+#include "link.h"
#include "constants/game_stat.h"
static u16 CalculateChecksum(void *data, u16 size);
@@ -70,12 +73,6 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] =
SAVEBLOCK_CHUNK(gPokemonStorage, 8),
};
-extern void DoSaveFailedScreen(u8); // save_failed_screen
-extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data);
-extern void save_serialize_map(void);
-extern void sub_800ADF8(void);
-extern bool8 IsLinkTaskFinished(void);
-
// iwram common
u16 gLastWrittenSector;
u32 gLastSaveCounter;
@@ -659,10 +656,10 @@ static void UpdateSaveAddresses(void)
u8 HandleSavingData(u8 saveType)
{
u8 i;
- u32 *backupVar = gUnknown_0203CF5C;
+ u32 *backupVar = gTrainerHillVBlankCounter;
u8 *tempAddr;
- gUnknown_0203CF5C = NULL;
+ gTrainerHillVBlankCounter = NULL;
UpdateSaveAddresses();
switch (saveType)
{
@@ -705,7 +702,7 @@ u8 HandleSavingData(u8 saveType)
save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
break;
}
- gUnknown_0203CF5C = backupVar;
+ gTrainerHillVBlankCounter = backupVar;
return 0;
}
@@ -768,7 +765,7 @@ u8 sub_8153408(void) // trade.s save
return 0;
}
-u8 sub_8153430(void)
+u8 FullSaveGame(void)
{
if (gFlashMemoryPresent != TRUE)
return 1;
@@ -780,7 +777,7 @@ u8 sub_8153430(void)
return 0;
}
-bool8 sub_8153474(void)
+bool8 CheckSaveFile(void)
{
u8 retVal = FALSE;
u16 val = ++gUnknown_03006208;
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 2478ebbec..08f193890 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -229,10 +229,10 @@ static void CB2_SaveFailedScreen(void)
LoadPalette(sSaveFailedClockPal, 0x100, 0x20);
LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
- SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
- FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards?
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
+ DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], PIXEL_FILL(1)); // backwards?
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again?
CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1);
SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
@@ -265,19 +265,19 @@ static void CB2_WipeSave(void)
{
if (WipeSectors(gDamagedSaveSectors) != FALSE)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
SetMainCallback2(CB2_GameplayCannotBeContinued);
return;
}
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0);
HandleSavingData(gSaveFailedType);
if (gDamagedSaveSectors != 0)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
}
@@ -286,12 +286,12 @@ static void CB2_WipeSave(void)
if (wipeTries == 3)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
}
else
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
if (gGameContinueCallback == NULL)
SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0);
@@ -308,7 +308,7 @@ static void CB2_GameplayCannotBeContinued(void)
if (gMain.newKeys & A_BUTTON)
{
- FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0);
SetVBlankCallback(VBlankCB);
SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 51d96ff2e..314504600 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1203,7 +1203,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1217,7 +1217,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -1302,7 +1302,7 @@ bool8 ScrCmd_cmdDB(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
sub_81973A4();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 1, msg, 0, 1, 0, 0);
return FALSE;
}
@@ -1517,9 +1517,9 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1);
gUnknown_03000F30 = AddWindow(&winTemplate);
LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0);
- NewMenuHelpers_DrawStdWindowFrame(gUnknown_03000F30, 0);
+ DrawStdWindowFrame(gUnknown_03000F30, 0);
PutWindowTilemap(gUnknown_03000F30);
- FillWindowPixelBuffer(gUnknown_03000F30, 0x11);
+ FillWindowPixelBuffer(gUnknown_03000F30, PIXEL_FILL(1));
AddTextPrinterParameterized(gUnknown_03000F30, 6, gStringVar4, xText, yText, 0xFF, 0x0);
CopyWindowToVram(gUnknown_03000F30, 3);
return FALSE;
@@ -2028,14 +2028,14 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx)
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
u16 tileId = VarGet(ScriptReadHalfword(ctx));
- u16 v8 = VarGet(ScriptReadHalfword(ctx));
+ u16 isImpassable = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
- if (!v8)
+ if (!isImpassable)
MapGridSetMetatileIdAt(x, y, tileId);
else
- MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
return FALSE;
}
@@ -2182,7 +2182,7 @@ bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
{
- if (is_c1_link_related_active())
+ if (IsUpdateLinkStateCBActive())
{
return FALSE;
}
@@ -2254,7 +2254,7 @@ bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx)
void sub_809BDB4(void)
{
- sub_819746C(gUnknown_03000F30, 1);
+ ClearStdWindowAndFrame(gUnknown_03000F30, 1);
RemoveWindow(gUnknown_03000F30);
}
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/script_menu.c b/src/script_menu.c
index 7180bfc60..c7523a370 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1202,7 +1202,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top)
else
{
gSpecialVar_Result = 0xFF;
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
taskId = CreateTask(Task_HandleYesNoInput, 0x50);
return TRUE;
}
@@ -1312,7 +1312,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId)
#undef tWindowId
-bool8 ScrSpecial_CreatePCMenu(void)
+bool16 ScrSpecial_CreatePCMenu(void)
{
if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
{
@@ -1630,7 +1630,7 @@ u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height)
void sub_80E2A78(u8 windowId)
{
- sub_8198070(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
@@ -1639,27 +1639,27 @@ static void sub_80E2A94(u8 multichoiceId)
switch (multichoiceId)
{
case 77:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBAC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 76:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BB9C[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 78:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBBC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 79:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBCC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 75:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBEC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 74:
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gUnknown_0858BBE0[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
}
diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c
index cade00b50..7d6020c7a 100755
--- a/src/script_pokemon_util_80F87D8.c
+++ b/src/script_pokemon_util_80F87D8.c
@@ -29,6 +29,7 @@
#include "constants/items.h"
#include "constants/species.h"
#include "constants/vars.h"
+#include "constants/battle_frontier.h"
extern const u16 gEventObjectPalette8[];
extern const u16 gEventObjectPalette17[];
@@ -40,7 +41,7 @@ static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 };
static void sub_80F8EE8(u8 taskId);
static void sub_80F9088(u8 taskId);
-static void sub_80F9460(void);
+static void CB2_ReturnFromChooseHalfParty(void);
static void sub_80F94B8(void);
void SetContestTrainerGfxIds(void)
@@ -640,22 +641,24 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
}
-void sub_80F9438(void)
+// Note: When control returns to the event script, gSpecialVar_Result will be
+// TRUE if the party selection was successful.
+void ChooseHalfPartyForBattle(void)
{
- gMain.savedCallback = sub_80F9460;
- VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??)
- sub_81B8518(0);
+ gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
+ VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM);
+ InitChooseHalfPartyForBattle(0);
}
-static void sub_80F9460(void)
+static void CB2_ReturnFromChooseHalfParty(void)
{
switch (gSelectedOrderFromParty[0])
{
case 0:
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
break;
default:
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = TRUE;
break;
}
@@ -665,7 +668,7 @@ static void sub_80F9460(void)
void sub_80F9490(void)
{
gMain.savedCallback = sub_80F94B8;
- sub_81B8518(gSpecialVar_0x8004 + 1);
+ InitChooseHalfPartyForBattle(gSpecialVar_0x8004 + 1);
}
static void sub_80F94B8(void)
diff --git a/src/secret_base.c b/src/secret_base.c
index adcab9cbc..4b270e424 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -43,8 +43,6 @@
#include "constants/species.h"
#include "constants/trainers.h"
-extern void mapldr_default(void);
-
// Static type declarations
struct SecretBaseListMenuBuffer {
@@ -60,7 +58,7 @@ struct SecretBaseRecordMixer {
// Static RAM declarations
EWRAM_DATA u8 sCurSecretBaseId = 0;
-EWRAM_DATA u8 gUnknown_0203A01D = 0;
+EWRAM_DATA bool8 gInFriendSecretBase = FALSE;
EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL;
// Static ROM declarations
@@ -259,7 +257,7 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile)
{
for (x = 0; x < mapLayout->width; x ++)
{
- if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile)
+ if ((mapLayout->map[y * mapLayout->width + x] & METATILE_ID_MASK) == tile)
{
*xPtr = x;
*yPtr = y;
@@ -282,7 +280,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile1 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -291,7 +289,7 @@ void sub_80E8D4C(void)
{
if (gUnknown_0858CFCC[i].tile2 == tile)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
return;
}
@@ -352,7 +350,7 @@ void sub_80E8EE0(struct MapEvents const *events)
{
if (gUnknown_0858CFCC[i].tile1 == tile_id)
{
- MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xc00);
+ MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK);
break;
}
}
@@ -407,7 +405,7 @@ void sub_80E9068(void)
bool8 sub_80E909C(void)
{
- if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0)
{
return FALSE;
}
@@ -434,7 +432,7 @@ void sub_80E9108(void)
sub_80E8CB0(&x, &y, 0x220);
x += 7;
y += 7;
- MapGridSetMetatileIdAt(x, y, 0x220 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(x, y);
pal_fill_black();
CreateTask(sub_80E90C8, 0);
@@ -492,12 +490,12 @@ void sub_80E9238(u8 flagIn)
if (curBaseId != 0)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK);
}
- else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1)
{
sub_80E8CB0(&x, &y, 0x220);
- MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | 0xc00);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK);
}
}
}
@@ -552,7 +550,7 @@ void sub_80E933C(void)
metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE)
{
- gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20;
+ gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + UNKNOWN_VAR_OFFSET_3F20;
VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]);
gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId;
FlagClear(gSpecialVar_0x8004 + 0xAE);
@@ -791,7 +789,7 @@ void sub_80E9AD0(void)
{
if (gUnknown_0858CFCC[j].tile2 == tile)
{
- MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | 0xc00);
+ MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | METATILE_COLLISION_MASK);
break;
}
}
@@ -871,7 +869,7 @@ void sub_80E9C9C(u8 taskId)
{
data[1] = 0;
data[2] = 0;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer));
data[6] = AddWindow(&gUnknown_0858D06C[0]);
game_continue(taskId);
@@ -963,7 +961,7 @@ void sub_80E9E90(u8 taskId)
PlaySE(SE_SELECT);
DestroyListMenuTask(data[5], NULL, NULL);
RemoveScrollIndicatorArrowPair(data[8]);
- sub_819746C(data[6], 0);
+ ClearStdWindowAndFrame(data[6], 0);
ClearWindowTilemap(data[6]);
RemoveWindow(data[6]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1020,8 +1018,8 @@ void sub_80E9FFC(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_819746C(data[6], FALSE);
- sub_819746C(data[7], FALSE);
+ ClearStdWindowAndFrame(data[6], FALSE);
+ ClearStdWindowAndFrame(data[7], FALSE);
ClearWindowTilemap(data[6]);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
@@ -1033,7 +1031,7 @@ void sub_80E9FFC(u8 taskId)
void sub_80EA06C(u8 taskId)
{
- DisplayYesNoMenu();
+ DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058);
}
@@ -1042,7 +1040,7 @@ void sub_80EA08C(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0;
game_continue(taskId);
@@ -1061,7 +1059,7 @@ void sub_80EA13C(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- sub_8197434(0, 0);
+ ClearDialogWindowAndFrame(0, 0);
DestroyListMenuTask(data[5], &data[2], &data[1]);
sub_80E9E00(taskId);
gTasks[taskId].func = sub_80E9E90;
@@ -1073,7 +1071,7 @@ void sub_80EA18C(u8 taskId)
data = gTasks[taskId].data;
sub_80E9E44(taskId);
- sub_819746C(data[7], 0);
+ ClearStdWindowAndFrame(data[7], 0);
ClearWindowTilemap(data[7]);
RemoveWindow(data[7]);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1186,11 +1184,11 @@ void SecretBasePerStepCallback(u8 taskId)
case 0:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- gUnknown_0203A01D = TRUE;
+ gInFriendSecretBase = TRUE;
}
else
{
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
PlayerGetDestCoords(&data[2], &data[3]);
data[1] = 1;
@@ -1201,103 +1199,103 @@ void SecretBasePerStepCallback(u8 taskId)
{
data[2] = x;
data[3] = y;
- VarSet(VAR_0x40EC, VarGet(VAR_0x40EC) + 1);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1);
behavior = MapGridGetMetatileBehaviorAt(x, y);
tileId = MapGridGetMetatileIdAt(x, y);
if (tileId == 0x234 || tileId == 0x23C)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x20);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20);
}
}
else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x01);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01);
}
}
else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x04);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04);
}
}
else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a))
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x200);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200);
}
}
else if (behavior == 0xc1 && tileId == 0x23d)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000);
}
}
else if (behavior == 0x47 && tileId == 0x23e)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x1000);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x2000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000);
}
}
else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x80);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80);
}
}
else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE)
{
PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y);
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
switch ((int)MapGridGetMetatileIdAt(x, y))
{
case 0x338:
case 0x33c:
case 0x340:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x02);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02);
break;
case 0x228:
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x100);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100);
break;
}
}
}
else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400);
}
ShatterSecretBaseBreakableDoor(x, y);
}
else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){
- if (gUnknown_0203A01D == TRUE) {
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8000);
+ if (gInFriendSecretBase == TRUE) {
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000);
}
}
else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4000);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000);
}
}
else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE)
{
- if (gUnknown_0203A01D == TRUE)
+ if (gInFriendSecretBase == TRUE)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x02);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02);
}
}
}
@@ -1780,33 +1778,33 @@ void sub_80EB18C(struct SecretBaseRecord *bases)
void sub_80EB1AC(void)
{
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40F0, TRUE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, TRUE);
}
else
{
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
- gUnknown_0203A01D = FALSE;
+ gInFriendSecretBase = FALSE;
}
void sub_80EB218(void)
{
- if (VarGet(VAR_0x40F0) && gUnknown_0203A01D == TRUE && !CurrentMapIsSecretBase())
+ if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && gInFriendSecretBase == TRUE && !CurrentMapIsSecretBase())
{
- VarSet(VAR_0x40F0, FALSE);
- gUnknown_0203A01D = FALSE;
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
+ gInFriendSecretBase = FALSE;
sub_80EEA70();
- VarSet(VAR_0x40EC, 0);
- VarSet(VAR_0x40ED, 0);
- VarSet(VAR_0x40EE, 0);
- VarSet(VAR_0x40EF, 0);
- VarSet(VAR_0x40F0, FALSE);
+ VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0);
+ VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0);
+ VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE);
}
}
@@ -1814,7 +1812,7 @@ void sub_80EB290(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800);
}
}
@@ -1822,7 +1820,7 @@ void sub_80EB2C8(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400);
}
}
@@ -1830,9 +1828,9 @@ void sub_80EB300(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x2000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000);
}
}
@@ -1840,9 +1838,9 @@ void sub_80EB368(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x800);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800);
}
}
@@ -1850,9 +1848,9 @@ void sub_80EB3D0(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x1000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000);
}
}
@@ -1860,9 +1858,9 @@ void sub_80EB438(void)
{
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001);
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001);
}
}
@@ -1891,7 +1889,7 @@ void sub_80EB498(void)
case 0x334:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000);
}
break;
}
@@ -1909,7 +1907,7 @@ void sub_80EB56C(void)
case 0x28b:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40);
}
break;
case 0x2d8:
@@ -1932,21 +1930,21 @@ void sub_80EB56C(void)
case 0x2fb:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8);
+ VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8);
}
break;
case 0x22c:
case 0x233:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40);
}
break;
case 0x288:
case 0x289:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x22d:
@@ -1954,7 +1952,7 @@ void sub_80EB56C(void)
case 0x22f:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
case 0x287:
@@ -1982,7 +1980,7 @@ void sub_80EB56C(void)
case 0x2cf:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2009,7 +2007,7 @@ void sub_80EB9E0(void)
case 0x2c6:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
}
@@ -2047,14 +2045,14 @@ void sub_80EBB28(void)
case 0x2c7:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8);
}
break;
case 0x280:
case 0x281:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100);
}
break;
case 0x225:
@@ -2062,7 +2060,7 @@ void sub_80EBB28(void)
case 0x227:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10);
}
break;
}
@@ -2080,7 +2078,7 @@ void sub_80EBE7C(void)
case 0x28e:
if (VarGet(VAR_CURRENT_SECRET_BASE) != 0)
{
- VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4);
+ VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4);
}
break;
}
diff --git a/src/shop.c b/src/shop.c
index 8eefd5e97..e03e2ab0c 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -366,7 +366,7 @@ void CB2_ExitSellMenu(void)
static void Task_HandleShopMenuQuit(u8 taskId)
{
- sub_8198070(gMartInfo.windowId, 2);
+ ClearStdWindowAndFrameToTransparent(gMartInfo.windowId, 2);
RemoveWindow(gMartInfo.windowId);
SaveRecordedItemPurchasesForTVShow();
ScriptContext2_Disable();
@@ -545,7 +545,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, s
description = gText_QuitShopping;
}
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
BuyMenuPrint(2, description, 3, 1, 0, 0);
}
@@ -981,12 +981,12 @@ static void Task_BuyHowManyDialogueInit(u8 taskId)
u16 quantityInBag = CountTotalItemQuantityInBag(tItemId);
u16 maxQuantity;
- SetWindowBorderStyle(3, FALSE, 1, 13);
+ DrawStdFrameWithCustomTileAndPalette(3, FALSE, 1, 13);
ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gText_InBagVar1);
BuyMenuPrint(3, gStringVar4, 0, 1, 0, 0);
tItemCount = 1;
- SetWindowBorderStyle(4, FALSE, 1, 13);
+ DrawStdFrameWithCustomTileAndPalette(4, FALSE, 1, 13);
BuyMenuPrintItemQuantityAndPrice(taskId);
schedule_bg_copy_tilemap_to_vram(0);
@@ -1018,8 +1018,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(4, 0);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(4, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(4);
ClearWindowTilemap(3);
PutWindowTilemap(1);
@@ -1031,8 +1031,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- sub_8198070(4, 0);
- sub_8198070(3, 0);
+ ClearStdWindowAndFrameToTransparent(4, 0);
+ ClearStdWindowAndFrameToTransparent(3, 0);
ClearWindowTilemap(4);
ClearWindowTilemap(3);
BuyMenuReturnToItemList(taskId);
@@ -1131,7 +1131,7 @@ static void BuyMenuReturnToItemList(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_8197DF8(5, 0);
+ ClearDialogWindowAndFrameToTransparent(5, 0);
BuyMenuPrintCursor(tListTaskId, 1);
PutWindowTilemap(1);
PutWindowTilemap(2);
@@ -1144,7 +1144,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- FillWindowPixelBuffer(4, 0x11);
+ FillWindowPixelBuffer(4, PIXEL_FILL(1));
PrintMoneyAmount(4, 38, 1, gShopDataPtr->totalCost, TEXT_SPEED_FF);
ConvertIntToDecimalStringN(gStringVar1, tItemCount, 2, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
diff --git a/src/siirtc.c b/src/siirtc.c
index f7e85ef4f..5c153a841 100644
--- a/src/siirtc.c
+++ b/src/siirtc.c
@@ -76,19 +76,19 @@ static void DisableGpioPortRead();
static const char AgbLibRtcVersion[] = "SIIRTC_V001";
-void SiiRtcUnprotect()
+void SiiRtcUnprotect(void)
{
EnableGpioPortRead();
sLocked = FALSE;
}
-void SiiRtcProtect()
+void SiiRtcProtect(void)
{
DisableGpioPortRead();
sLocked = TRUE;
}
-u8 SiiRtcProbe()
+u8 SiiRtcProbe(void)
{
u8 errorCode;
struct SiiRtcInfo rtc;
@@ -129,7 +129,7 @@ u8 SiiRtcProbe()
return (errorCode << 4) | 1;
}
-bool8 SiiRtcReset()
+bool8 SiiRtcReset(void)
{
u8 result;
struct SiiRtcInfo rtc;
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 0871506cd..a2e1f1554 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -60,33 +60,33 @@ enum
struct SlotMachineEwramStruct
{
/*0x00*/ u8 state;
- /*0x01*/ u8 unk01;
+ /*0x01*/ u8 machineId;
/*0x02*/ u8 pikaPower;
- /*0x03*/ u8 unk03;
- /*0x04*/ u8 unk04;
- /*0x05*/ u8 unk05;
- /*0x06*/ u8 unk06;
- /*0x07*/ u8 unk07;
+ /*0x03*/ u8 luckyGame;
+ /*0x04*/ u8 luckyFlags;
+ /*0x05*/ u8 reelTimeDraw;
+ /*0x06*/ u8 luckySpinsLeft; // tentative
+ /*0x07*/ u8 biasTag;
/*0x08*/ u16 matchedSymbols;
- /*0x0A*/ u8 unk0A;
- /*0x0B*/ u8 unk0B;
+ /*0x0A*/ u8 fairRollsLeft; // only happens if you win reeltime
+ /*0x0B*/ u8 fairRollsUsed;
/*0x0C*/ s16 coins;
/*0x0E*/ s16 payout;
- /*0x10*/ s16 unk10;
+ /*0x10*/ s16 netCoinLoss; // coins lost to machine (but never goes below 0)
/*0x12*/ s16 bet;
- /*0x14*/ s16 unk14;
- /*0x16*/ s16 unk16;
- /*0x18*/ s16 unk18;
- /*0x1A*/ s16 unk1A;
- /*0x1C*/ s16 unk1C[3];
- /*0x22*/ u16 unk22[3];
- /*0x28*/ s16 reelPositions[3];
- /*0x2E*/ s16 unk2E[3];
- /*0x34*/ s16 unk34[3];
- /*0x3A*/ u8 reelTasks[3];
- /*0x3D*/ u8 unk3D;
- /*0x3E*/ u8 unk3E;
- /*0x3F*/ u8 unk3F;
+ /*0x14*/ s16 reeltimePixelOffset;
+ /*0x16*/ s16 reeltimePosition;
+ /*0x18*/ s16 currReel;
+ /*0x1A*/ s16 reelIncrement; // speed of reel
+ /*0x1C*/ s16 reelPixelOffsets[3];
+ /*0x22*/ u16 reelPixelOffsetsWhileStopping[3];
+ /*0x28*/ s16 reelTagOffsets[3];
+ /*0x2E*/ s16 reelExtraTurns[3];
+ /*0x34*/ s16 winnerRows[3];
+ /*0x3A*/ u8 slotReelTasks[3];
+ /*0x3D*/ u8 unkTaskPointer3D;
+ /*0x3E*/ u8 unkTaskPointer3E;
+ /*0x3F*/ u8 reelTimeSprite3F;
/*0x40*/ u8 unk40;
/*0x41*/ u8 unk41;
/*0x42*/ u8 unk42;
@@ -95,8 +95,8 @@ struct SlotMachineEwramStruct
/*0x49*/ u8 unk49[2];
/*0x49*/ u8 unk4B[3];
/*0x4E*/ u8 unk4E[2];
- /*0x50*/ u8 unk50[2];
- /*0x52*/ u8 unk52[2];
+ /*0x50*/ u8 reelTimeSprites1[2];
+ /*0x52*/ u8 reelTimeSprites2[2];
/*0x54*/ u8 unk54[4];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
@@ -115,238 +115,238 @@ struct UnkStruct1
#define SLOTMACHINE_GFX_TILES 233
-/*static */void CB2_SlotMachineSetup(void);
-/*static */void CB2_SlotMachineLoop(void);
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
-/*static */void SlotMachineDummyTask(u8 taskId);
-/*static */void SlotMachineSetup_0_0(void);
-/*static */void SlotMachineSetup_6_2(void);
-/*static */void SlotMachineSetup_1_0(void);
-/*static */void SlotMachineSetup_2_0(void);
-/*static */void SlotMachineSetup_2_1(void);
-/*static */void SlotMachineSetup_0_1(void);
-/*static */void SlotMachineSetup_3_0(void);
-/*static */void SlotMachineSetup_4_0(void);
-/*static */void SlotMachineSetup_5_0(void);
-/*static */void SlotMachineSetup_6_0(void);
-/*static */void SlotMachineSetup_6_1(void);
-/*static */void SlotMachineSetup_8_0(void);
-/*static */void SlotMachineSetup_9_0(void);
-/*static */void SlotMachineSetup_10_0(void);
-/*static */void SlotMachineSetup_10_1(void);
-/*static */void sub_8101D04(void);
-/*static */void sub_8104DA4(void);
-/*static */void sub_8101D24(u8 taskId);
-/*static */bool8 sub_8101D5C(struct Task *task);
-/*static */bool8 sub_8101D8C(struct Task *task);
-/*static */bool8 sub_8101DB0(struct Task *task);
-/*static */bool8 sub_8101DF4(struct Task *task);
-/*static */bool8 sub_8101E10(struct Task *task);
-/*static */bool8 sub_8101E3C(struct Task *task);
-/*static */bool8 sub_8101F44(struct Task *task);
-/*static */bool8 sub_8101F60(struct Task *task);
-/*static */bool8 sub_8101F88(struct Task *task);
-/*static */bool8 sub_8101FA4(struct Task *task);
-/*static */bool8 sub_8102008(struct Task *task);
-/*static */bool8 sub_8102034(struct Task *task);
-/*static */bool8 sub_8102058(struct Task *task);
-/*static */bool8 sub_8102090(struct Task *task);
-/*static */bool8 sub_81020C8(struct Task *task);
-/*static */bool8 sub_81021E0(struct Task *task);
-/*static */bool8 sub_81021FC(struct Task *task);
-/*static */bool8 sub_8102264(struct Task *task);
-/*static */bool8 sub_81022A0(struct Task *task);
-/*static */bool8 sub_81022CC(struct Task *task);
-/*static */bool8 sub_81022F0(struct Task *task);
-/*static */bool8 sub_8102318(struct Task *task);
-/*static */bool8 sub_8102344(struct Task *task);
-/*static */bool8 sub_810239C(struct Task *task);
-/*static */bool8 sub_81023B8(struct Task *task);
-/*static */bool8 sub_81023E0_(struct Task *task);
-/*static */bool8 sub_81023FC(struct Task *task);
-/*static */bool8 sub_8102424(struct Task *task);
-/*static */bool8 sub_8102460(struct Task *task);
-/*static */void sub_8102484(void);
-/*static */void sub_81024F0(void);
-/*static */bool8 sub_8102540_(void);
-/*static */u8 sub_8102578(void);
-/*static */u16 dp15_jump_random_unknown(void);
-/*static */u8 sub_81025BC(void);
-/*static */void CheckMatch(void);
-/*static */void CheckMatch_CenterRow(void);
-/*static */void CheckMatch_TopAndBottom(void);
-/*static */void CheckMatch_Diagonals(void);
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
-/*static */void sub_8102A24(void);
-/*static */void sub_8102A64(u8 taskId);
-/*static */bool8 sub_8102A44(void);
-/*static */bool8 sub_8102A9C(struct Task *task);
-/*static */bool8 sub_8102AD0(struct Task *task);
-/*static */bool8 sub_8102B80(struct Task *task);
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
-/*static */void sub_8102DA8(void);
-/*static */void sub_8102DEC(u8 a0);
-/*static */void sub_8102E1C(u8 a0);
-/*static */bool8 sub_8102E40(u8 a0);
-/*static */void sub_8102E68(u8 taskId);
-/*static */bool8 sub_8102EA0(struct Task *task);
-/*static */bool8 sub_8102EA4(struct Task *task);
-/*static */bool8 sub_8102EC0(struct Task *task);
-/*static */bool8 sub_8102F4C(struct Task *task);
-/*static */bool8 sub_8103008(struct Task *task);
-/*static */bool8 sub_810305C(void);
-/*static */bool8 sub_8103154(u8 a0, u8 a1);
-/*static */bool8 sub_81031B4(u8 a0, u8 a1);
-/*static */bool8 sub_81032C0(void);
-/*static */bool8 sub_81032E8(void);
-/*static */bool8 sub_810333C(void);
-/*static */bool8 sub_81033DC(void);
-/*static */bool8 sub_810341C(u8 a0);
-/*static */bool8 sub_810347C(u8 a0);
-/*static */void sub_81034F4(void);
-/*static */void sub_8103540(void);
-/*static */void sub_8103564(void);
-/*static */void j5_08111E84(void);
-/*static */void sub_8103668(void);
-/*static */void sub_810380C(void);
-/*static */void sub_8103830(void);
-/*static */void sub_8103910(void);
-/*static */void sub_8103A78(void);
-/*static */void sub_8103C14(u8 a0);
-/*static */void sub_8103C48(u8 taskId);
-/*static */void sub_8103D50(u8 a0);
-/*static */void sub_8103C78(struct Task *task, u8 taskId);
-/*static */void sub_8103CAC(struct Task *task, u8 taskId);
-/*static */void sub_8103CC8(struct Task *task, u8 taskId);
-/*static */void sub_8103D8C(u8 a0);
-/*static */void sub_8103DC8(void);
-/*static */void sub_8103E04(u8 a0);
-/*static */bool8 sub_8103E38(void);
-/*static */bool8 sub_8103E7C(void);
-/*static */bool8 sub_8103EAC(u8 spriteId);
-/*static */void sub_8103EE4(struct Sprite *sprite);
-/*static */void sub_8103F70(void);
-/*static */bool8 sub_8103FA0(void);
-/*static */void sub_8103FE8_(u8 taskId);
-/*static */void sub_8104048(void);
-/*static */void sub_8104064(u8 pikaPower);
-/*static */bool8 sub_81040C8(void);
-/*static */void sub_81040E8(u8 taskId);
-/*static */void nullsub_68(struct Task *task);
-/*static */void sub_810411C(struct Task *task);
-/*static */void sub_8104144(struct Task *task);
-/*static */void sub_81041AC(struct Task *task);
-/*static */void sub_812D394(struct Task *task);
-/*static */void sub_810423C(u8 pikaPower);
-/*static */void sub_810430C(void);
-/*static */bool8 sub_810432C(void);
-/*static */void sub_810434C(u8 taskId);
-/*static */void sub_810437C(struct Task *task);
-/*static */void sub_81043EC(struct Task *task);
-/*static */void sub_8104468(struct Task *task);
-/*static */void sub_8104498(struct Task *task);
-/*static */void sub_8104548(struct Task *task);
-/*static */void sub_8104598(struct Task *task);
-/*static */void sub_81045CC(struct Task *task);
-/*static */void sub_810463C(struct Task *task);
-/*static */void sub_81046C0(struct Task *task);
-/*static */void sub_8104764(struct Task *task);
-/*static */void sub_8104794(struct Task *task);
-/*static */void sub_81047EC(struct Task *task);
-/*static */void sub_8104860(struct Task *task);
-/*static */void sub_81048A8(struct Task *task);
-/*static */void sub_81048CC(struct Task *task);
-/*static */void sub_8104940(struct Task *task);
-/*static */void sub_81049C8(struct Task *task);
-/*static */void sub_81049F8(struct Task *task);
-/*static */void sub_8104A40(s16 a0, s16 a1);
-/*static */void sub_8104A88(s16 a0);
-/*static */void sub_8104AB8(u8 a0);
-/*static */bool8 sub_8104AEC(void);
-/*static */void sub_8104B0C(u8 taskId);
-/*static */void sub_8104B3C(struct Task *task);
-/*static */void sub_8104B60(struct Task *task);
-/*static */void sub_8104B80(struct Task *task);
-/*static */void sub_8104BC8(struct Task *task);
-/*static */void sub_812DD78(struct Task *task);
-/*static */void sub_8104BFC(struct Task *task);
-/*static */void sub_812DE14(struct Task *task);
-/*static */void sub_812DE30(struct Task *task);
-/*static */void sub_8104C44(struct Task *task);
-/*static */void sub_8104C5C(void);
-/*static */void sub_8104CAC(u8 arg0);
-/*static */bool8 sub_8104E18(void);
-/*static */void nullsub_69(struct Task *task);
-/*static */void sub_8104E74_(u8 taskId);
-/*static */void sub_8104EA8(void);
-/*static */void sub_8104F8C(void);
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
-/*static */void sub_81050C4(void);
-/*static */void sub_8105100(void);
-/*static */void sub_810514C(void);
-/*static */void sub_81051C0(void);
-/*static */void sub_8105284_(void);
-/*static */void sub_81052EC(void);
-/*static */void sub_81053A0(void);
-/*static */void sub_810545C(void);
-/*static */void sub_81054B8(void);
-/*static */void sub_8105524(void);
-/*static */void sub_8105554(void);
-/*static */void sub_8105578(void);
-/*static */void sub_8105688(s16 a0);
-/*static */void sub_81056C0(void);
-/*static */void sub_81056F0(void);
-/*static */void sub_81057E8(s16 a0);
-/*static */void sub_8105804(void);
-/*static */void sub_8105854(void);
-/*static */void sub_81058A0(void);
-/*static */void sub_81058C4(void);
-/*static */void sub_81059B8(void);
-/*static */void sub_81059E8(void);
-/*static */bool8 sub_8105ACC(void);
-/*static */void sub_8105AEC(void);
-/*static */u8 sub_8105B1C(s16 x, s16 y);
-/*static */void sub_8105B88(u8 spriteId);
-/*static */u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
-/*static */void sub_81063C0(void);
-/*static */void sub_8106404(void);
-/*static */void sub_8106448(void);
-/*static */void sub_81064B8(void);
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-/*static */void sub_81065DC(void);
-/*static */void sub_812F958(void);
-/*static */void sub_812F968(void);
-/*static */void LoadSlotMachineWheelOverlay(void);
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+static void CB2_SlotMachineSetup(void);
+static void CB2_SlotMachineLoop(void);
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb);
+static void SlotMachineDummyTask(u8 taskId);
+static void SlotMachineSetup_0_0(void);
+static void SlotMachineSetup_6_2(void);
+static void SlotMachineSetup_1_0(void);
+static void SlotMachineSetup_2_0(void);
+static void SlotMachineSetup_2_1(void);
+static void SlotMachineSetup_0_1(void);
+static void SlotMachineSetup_3_0(void);
+static void SlotMachineSetup_4_0(void);
+static void SlotMachineSetup_5_0(void);
+static void SlotMachineSetup_6_0(void);
+static void SlotMachineSetup_6_1(void);
+static void SlotMachineSetup_8_0(void);
+static void SlotMachineSetup_9_0(void);
+static void SlotMachineSetup_10_0(void);
+static void SlotMachineSetupGameplayTasks(void);
+static void GameplayTasks_Slots(void);
+static void sub_8104DA4(void);
+static void RunSlotActions(u8 taskId);
+static bool8 SlotAction_UnfadeScreen(struct Task *task);
+static bool8 SlotAction_WaitForUnfade(struct Task *task);
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task);
+static bool8 SlotAction3(struct Task *task);
+static bool8 SlotAction4(struct Task *task);
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task);
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task);
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task);
+static bool8 SlotAction_GivingInformation(struct Task *task);
+static bool8 SlotAction9(struct Task *task);
+static bool8 SlotAction10(struct Task *task);
+static bool8 SlotAction_SetLuckySpins(struct Task *task);
+static bool8 SlotAction_AwaitReelStop(struct Task *task);
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task);
+static bool8 SlotAction_CheckMatches(struct Task *task);
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task);
+static bool8 SlotAction_EndOfRoll(struct Task *task);
+static bool8 SlotAction_MatchedPower(struct Task *task);
+static bool8 SlotAction18(struct Task *task);
+static bool8 SlotAction_Loop(struct Task *task);
+static bool8 SlotAction_NoMatches(struct Task *task);
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task);
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task);
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task);
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task);
+static bool8 SlotAction_EndGame(struct Task *task);
+static bool8 SlotAction_FreeDataStructures(struct Task *task);
+static void DrawLuckyFlags(void);
+static void SetLuckySpins(void);
+static bool8 IsThisRoundLucky(void);
+static u8 AttemptsAtLuckyFlags_Top3(void);
+static u16 SlowReelSpeed(void);
+static u8 AttemptsAtLuckyFlags_NotTop3(void);
+static void CheckMatch(void);
+static void CheckMatch_CenterRow(void);
+static void CheckMatch_TopAndBottom(void);
+static void CheckMatch_Diagonals(void);
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+static void AwardPayout(void);
+static void RunAwardPayoutActions(u8 taskId);
+static bool8 IsFinalTask_RunAwardPayoutActions(void);
+static bool8 AwardPayoutAction0(struct Task *task);
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task);
+static bool8 AwardPayoutAction_FreeTask(struct Task *task);
+static u8 GetNearbyTag_Quantized(u8 x, s16 y);
+static void GameplayTask_StopSlotReel(void);
+static void ReelTasks_SetUnkTaskData(u8 a0);
+static void sub_8102E1C(u8 a0);
+static bool8 IsSlotReelMoving(u8 a0);
+static void RunSlotReelActions(u8 taskId);
+static bool8 SlotReelAction_StayStill(struct Task *task);
+static bool8 SlotReelAction_Spin(struct Task *task);
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task);
+static bool8 SlotReelAction_MoveToStop(struct Task *task);
+static bool8 SlotReelAction_OscillatingStop(struct Task *task);
+static bool8 DecideReelTurns_BiasTag_Reel1(void);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void);
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3(void);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 a0);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 a0);
+static void DecideReelTurns_NoBiasTag_Reel1(void);
+static void DecideReelTurns_NoBiasTag_Reel2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void);
+static void DecideReelTurns_NoBiasTag_Reel3(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void);
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void);
+static void sub_8103C14(u8 a0);
+static void sub_8103C48(u8 taskId);
+static void LoadBetTiles(u8 a0);
+static void sub_8103C78(struct Task *task, u8 taskId);
+static void sub_8103CAC(struct Task *task, u8 taskId);
+static void sub_8103CC8(struct Task *task, u8 taskId);
+static void sub_8103D8C(u8 a0);
+static void sub_8103DC8(void);
+static void sub_8103E04(u8 a0);
+static bool8 sub_8103E38(void);
+static bool8 sub_8103E7C(void);
+static bool8 sub_8103EAC(u8 spriteId);
+static void sub_8103EE4(struct Sprite *sprite);
+static void sub_8103F70(void);
+static bool8 sub_8103FA0(void);
+static void sub_8103FE8_(u8 taskId);
+static void GameplayTask_PikaPower(void);
+static void DisplayPikaPower(u8 pikaPower);
+static bool8 sub_81040C8(void);
+static void sub_81040E8(u8 taskId);
+static void nullsub_68(struct Task *task);
+static void sub_810411C(struct Task *task);
+static void sub_8104144(struct Task *task);
+static void sub_81041AC(struct Task *task);
+static void ClearTaskDataFields_2orHigher(struct Task *task);
+static void sub_810423C(u8 pikaPower);
+static void BeginReeltime(void);
+static bool8 IsFinalTask_RunReelTimeActions(void);
+static void RunReeltimeActions(u8 taskId);
+static void ReeltimeAction0(struct Task *task);
+static void ReeltimeAction1(struct Task *task);
+static void ReeltimeAction2(struct Task *task);
+static void ReeltimeAction3(struct Task *task);
+static void ReeltimeAction4(struct Task *task);
+static void ReeltimeAction5(struct Task *task);
+static void ReeltimeAction6(struct Task *task);
+static void ReelTimeAction_LandOnOutcome(struct Task *task);
+static void ReeltimeAction8(struct Task *task);
+static void ReeltimeAction9(struct Task *task);
+static void ReeltimeAction10(struct Task *task);
+static void ReeltimeAction11(struct Task *task);
+static void ReeltimeAction12(struct Task *task);
+static void ReeltimeAction13(struct Task *task);
+static void ReeltimeAction14(struct Task *task);
+static void ReeltimeAction15(struct Task *task);
+static void ReeltimeAction16(struct Task *task);
+static void ReeltimeAction17(struct Task *task);
+static void sub_8104A40(s16 a0, s16 a1);
+static void sub_8104A88(s16 a0);
+static void OpenInfoBox(u8 a0);
+static bool8 IsInfoBoxClosed(void);
+static void RunInfoBoxActions(u8 taskId);
+static void InfoBox_FadeIn(struct Task *task);
+static void InfoBox_WaitForFade(struct Task *task);
+static void InfoBox_8104B80(struct Task *task);
+static void InfoBox_AwaitPlayerInput(struct Task *task);
+static void InfoBox_AddText(struct Task *task);
+static void InfoBox_8104BFC(struct Task *task);
+static void InfoBox_812DE14(struct Task *task);
+static void InfoBox_812DE30(struct Task *task);
+static void InfoBox_FreeTask(struct Task *task);
+static void sub_8104C5C(void);
+static void sub_8104CAC(u8 arg0);
+static bool8 sub_8104E18(void);
+static void nullsub_69(struct Task *task);
+static void sub_8104E74_(u8 taskId);
+static void sub_8104EA8(void);
+static void sub_8104F8C(void);
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+static void sub_81050C4(void);
+static void sub_8105100(void);
+static void sub_810514C(void);
+static void sub_81051C0(void);
+static void sub_8105284_(void);
+static void sub_81052EC(void);
+static void sub_81053A0(void);
+static void sub_810545C(void);
+static void sub_81054B8(void);
+static void sub_8105524(void);
+static void sub_8105554(void);
+static void CreateReelTimeSprites1(void);
+static void sub_8105688(s16 a0);
+static void sub_81056C0(void);
+static void CreateReelTimeSprite2(void);
+static void sub_81057E8(s16 a0);
+static void sub_8105804(void);
+static void sub_8105854(void);
+static void sub_81058A0(void);
+static void sub_81058C4(void);
+static void sub_81059B8(void);
+static void sub_81059E8(void);
+static bool8 sub_8105ACC(void);
+static void sub_8105AEC(void);
+static u8 sub_8105B1C(s16 x, s16 y);
+static void sub_8105B88(u8 spriteId);
+static u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
+static void sub_81063C0(void);
+static void sub_8106404(void);
+static void sub_8106448(void);
+static void sub_81064B8(void);
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+static void sub_81065DC(void);
+static void sub_812F958(void);
+static void sub_812F968(void);
+static void LoadSlotMachineWheelOverlay(void);
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
// Ewram variables
-static EWRAM_DATA u16 *gUnknown_0203AAC8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AACC = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AAD0 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD4 = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAD8 = NULL;
-static EWRAM_DATA u16 *gUnknown_0203AADC = NULL;
-static EWRAM_DATA u8 *gUnknown_0203AAE0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAEC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAFC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB00 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB04 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB08 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB0C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB10 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB14 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB18 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB1C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB20 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB24 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB28 = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB2C = NULL;
-static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB30 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAC8 = NULL;
+static EWRAM_DATA u16 *sSelectedPikaPowerTile = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AAD0 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD4 = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAD8 = NULL;
+static EWRAM_DATA u16 *sUnknown_0203AADC = NULL;
+static EWRAM_DATA u8 *sUnknown_0203AAE0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAEC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF0 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF4 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF8 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAFC = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB00 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB04 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB08 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB0C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB10 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB14 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB18 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB1C = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB20 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB24 = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB28 = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB2C = NULL;
+static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL;
static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
// IWRAM bss
@@ -355,10 +355,10 @@ static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26];
// Const rom data.
extern const struct UnkStruct1 *const gUnknown_083ED048[];
extern const u16 gPalette_83EDE24[];
-extern const u8 gUnknown_083ECD04[][3];
-extern const u8 gUnknown_083ECE3A[];
-extern const u16 gUnknown_083ECE42[];
-extern const u16 gUnknown_083ECE48[];
+extern const u8 gLuckyRoundProbabilities[][3];
+extern const u8 gBiasTags[];
+extern const u16 gLuckyFlagSettings_Top3[];
+extern const u16 gLuckyFlagSettings_NotTop3[];
extern const s16 gUnknown_083ECE7E[][2];
extern const SpriteCallback gUnknown_083ECF0C[];
extern const struct SpriteTemplate *const gUnknown_083EDB5C[];
@@ -369,36 +369,36 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED54C;
extern const struct SpriteTemplate gSpriteTemplate_83ED534;
extern const u8 gUnknown_083ECC58[2];
extern const struct SpriteTemplate gSpriteTemplate_83ED51C;
-extern const u16 gUnknown_083ECE12[];
+extern const u16 gProbabilityTable_SkipToReeltimeAction14[];
extern const u16 *const gUnknown_083EDE10[];
-extern const u16 gUnknown_083ECE1C[][2];
-extern const u16 gUnknown_083ECE30[];
-extern const u16 sSlotMatchFlags[];
-extern const u16 sSlotPayouts[];
+extern const u16 gReelIncrementTable[][2];
+extern const u16 gReelTimeBonusIncrementTable[];
+extern const u16 gSlotMatchFlags[];
+extern const u16 gSlotPayouts[];
extern const u8 *const gUnknown_083EDCE4;
extern const u8 *const gUnknown_083EDCDC;
-extern const u32 sReelTimeGfx[];
-extern const struct SpriteSheet sSlotMachineSpriteSheets[];
+extern const u32 gReelTimeGfx[];
+extern const struct SpriteSheet gSlotMachineSpriteSheets[];
extern const struct SpritePalette gSlotMachineSpritePalettes[];
extern const u16 *const gUnknown_083EDE20;
-extern const s16 gUnknown_083ECCF8[][2];
+extern const s16 gInitialReelPositions[][2];
extern const struct BgTemplate gUnknown_085A7424[4];
extern const struct WindowTemplate gUnknown_085A7434[];
-extern const u8 gUnknown_083ECD16[][6];
-extern const u8 gUnknown_083ECD28[][6];
-extern const u8 gUnknown_083ECD46[][17];
-extern const u8 gUnknown_083ECDAC[][17];
-extern const u8 sSym2Match[];
-extern const u8 gUnknown_083ECCF1[];
-extern const u8 sReelSymbols[][21];
+extern const u8 gLuckyFlagProbabilities_Top3[][6];
+extern const u8 gLuckyFlagProbabilities_NotTop3[][6];
+extern const u8 gReeltimeProbabilities_UnluckyGame[][17];
+extern const u8 gReelTimeProbabilities_LuckyGame[][17];
+extern const u8 gSym2Match[];
+extern const u8 gReelTimeTags[];
+extern const u8 gReelSymbols[][REEL_NUM_TAGS];
extern const u16 *const gUnknown_083EDD08[];
extern const u16 *const gUnknown_083EDD1C[];
extern const u8 gUnknown_083EDD30[];
-extern const u8 gUnknown_083EDD35[][2];
-extern const u8 gUnknown_083EDD3B[];
+extern const u8 gBettingTilesId[][2];
+extern const u8 gNumberBettingTiles[];
extern const u16 *const gUnknown_083EDDA0[];
extern const u16 *const gUnknown_083EDDAC;
-extern const u16 sReelTimeWindowTilemap[];
+extern const u16 gReelTimeWindowTilemap[];
extern const u16 gUnknown_085A9898[];
extern void (*const gUnknown_083ED064[])(void);
@@ -453,106 +453,108 @@ const struct WindowTemplate gUnknown_085A7444 =
0, 1, 3, 20, 13, 13, 1
};
-const u8 gUnknown_085A744C[] = {3, 1, 2, 0};
-
-bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
-{
- sub_8101D5C,
- sub_8101D8C,
- sub_8101DB0,
- sub_8101DF4,
- sub_8101E10,
- sub_8101E3C,
- sub_8101F44,
- sub_8101F60,
- sub_8101F88,
- sub_8101FA4,
- sub_8102008,
- sub_8102034,
- sub_8102058,
- sub_8102090,
- sub_81020C8,
- sub_81021E0,
- sub_81021FC,
- sub_8102264,
- sub_81022A0,
- sub_81022CC,
- sub_81022F0,
- sub_8102318,
- sub_8102344,
- sub_810239C,
- sub_81023B8,
- sub_81023E0_,
- sub_81023FC,
- sub_8102424,
- sub_8102460,
+const u8 gColors_ReeltimeHelp[] = {3, 1, 2, 0};
+
+bool8 (*const SlotActions[])(struct Task *task) =
+{
+ SlotAction_UnfadeScreen, // 0
+ SlotAction_WaitForUnfade, // 1
+ SlotAction_SetSlotMachineVars, // 2
+ SlotAction3, // 3
+ SlotAction4, // 4
+ SlotAction_AwaitPlayerInput, // 5
+ SlotAction_PrintYouDontHaveThreeCoins, // 6
+ SlotAction_ExitYouDontHaveThreeCoinsMessage, // 7
+ SlotAction_GivingInformation, // 8
+ SlotAction9, // 9
+ SlotAction10, // 10
+ SlotAction_SetLuckySpins, // 11
+ SlotAction_AwaitReelStop, // 12
+ SlotAction_WaitForAllReelsToStop, // 13
+ SlotAction_CheckMatches, // 14
+ SlotAction_WaitForPayoutToBeAwarded, // 15
+ SlotAction_EndOfRoll, // 16
+ SlotAction_MatchedPower, // 17
+ SlotAction18, // 18
+ SlotAction_Loop, // 19
+ SlotAction_NoMatches, // 20
+ SlotAction_PrintQuitTheGame, // 21
+ SlotAction_SeeIfPlayerQuits, // 22
+ SlotAction_PrintMessage_9999Coins, // 23
+ SlotAction_ExitMessage_9999Coins, // 24
+ SlotAction_PrintMessage_NoMoreCoins, // 25
+ SlotAction_ExitMessage_NoMoreCoins, // 26
+ SlotAction_EndGame, // 27
+ SlotAction_FreeDataStructures, // 28
};
-bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+bool8 (*const AwardPayoutActions[])(struct Task *task) =
{
- sub_8102A9C,
- sub_8102AD0,
- sub_8102B80
+ AwardPayoutAction0,
+ AwardPayoutAction_GivePayoutToPlayer,
+ AwardPayoutAction_FreeTask
};
-bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+bool8 (*const SlotReelActions[])(struct Task *task) =
{
- sub_8102EA0,
- sub_8102EA4,
- sub_8102EC0,
- sub_8102F4C,
- sub_8103008
+ SlotReelAction_StayStill,
+ SlotReelAction_Spin,
+ SlotReelAction_DecideWhereToStop,
+ SlotReelAction_MoveToStop,
+ SlotReelAction_OscillatingStop
};
-bool8 (*const gUnknown_083ECB40[])(void) =
+// returns True if a match with the biasTag is possible in that reel
+// also modifies data in sSlotMachine reel arrays to indicate how to get to the matching state
+bool8 (*const DecideReelTurns_BiasTag[])(void) =
{
- sub_810305C,
- sub_81032C0,
- sub_81033DC
+ DecideReelTurns_BiasTag_Reel1,
+ DecideReelTurns_BiasTag_Reel2,
+ DecideReelTurns_BiasTag_Reel3
};
-void (*const gUnknown_083ECB4C[])(void) =
+void (*const DecideReelTurns_NoBiasTag[])(void) =
{
- sub_81034F4,
- sub_8103540,
- sub_810380C
+ DecideReelTurns_NoBiasTag_Reel1,
+ DecideReelTurns_NoBiasTag_Reel2,
+ DecideReelTurns_NoBiasTag_Reel3
};
-const u16 gUnknown_085A74FC[] = {2, 4, 4, 4, 8};
+const u16 ReelStopShocks[] = {2, 4, 4, 4, 8};
-bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+bool8 (*const DecideReelTurns_BiasTag_Reel1_Bets[])(u8 tag1, u8 tag2) =
{
- sub_8103154,
- sub_81031B4,
- sub_81031B4
+ DecideReelTurns_BiasTag_Reel1_Bet1,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3,
+ DecideReelTurns_BiasTag_Reel1_Bet2or3
};
-bool8 (*const gUnknown_083ECB70[])(void) =
+bool8 (*const DecideReelTurns_BiasTag_Reel2_Bets[])(void) =
{
- sub_81032E8,
- sub_81032E8,
- sub_810333C
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet1or2,
+ DecideReelTurns_BiasTag_Reel2_Bet3
};
-bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+bool8 (*const DecideReelTurns_BiasTag_Reel3_Bets[])(u8 biasTag) =
{
- sub_810341C,
- sub_810341C,
- sub_810347C
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet1or2,
+ DecideReelTurns_BiasTag_Reel3_Bet3
};
-void (*const gUnknown_083ECB88[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel2_Bets[])(void) =
{
- sub_8103564,
- j5_08111E84,
- sub_8103668
+ DecideReelTurns_NoBiasTag_Reel2_Bet1,
+ DecideReelTurns_NoBiasTag_Reel2_Bet2,
+ DecideReelTurns_NoBiasTag_Reel2_Bet3
};
-void (*const gUnknown_083ECB94[])(void) =
+void (*const DecideReelTurns_NoBiasTag_Reel3_Bets[])(void) =
{
- sub_8103830,
- sub_8103910,
- sub_8103A78
+ DecideReelTurns_NoBiasTag_Reel3_Bet1,
+ DecideReelTurns_NoBiasTag_Reel3_Bet2,
+ DecideReelTurns_NoBiasTag_Reel3_Bet3
};
void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
@@ -572,57 +574,57 @@ void (*const gUnknown_083ECBB4[])(struct Task *task) =
sub_81041AC
};
-const u16 gUnknown_083ECBC4[][2] =
+const u16 pikaPowerTileTable[][2] =
{
{0x9e, 0x6e},
{0x9f, 0x6f},
{0xaf, 0x7f},
};
-void (*const gUnknown_083ECBD0[])(struct Task *task) =
-{
- sub_810437C,
- sub_81043EC,
- sub_8104468,
- sub_8104498,
- sub_8104548,
- sub_8104598,
- sub_81045CC,
- sub_810463C,
- sub_81046C0,
- sub_8104764,
- sub_8104794,
- sub_81047EC,
- sub_8104860,
- sub_81048A8,
- sub_81048CC,
- sub_8104940,
- sub_81049C8,
- sub_8104794,
- sub_81049F8
+void (*const ReeltimeActions[])(struct Task *task) =
+{
+ ReeltimeAction0,
+ ReeltimeAction1,
+ ReeltimeAction2,
+ ReeltimeAction3,
+ ReeltimeAction4,
+ ReeltimeAction5,
+ ReeltimeAction6,
+ ReelTimeAction_LandOnOutcome,
+ ReeltimeAction8,
+ ReeltimeAction9,
+ ReeltimeAction10,
+ ReeltimeAction11,
+ ReeltimeAction12,
+ ReeltimeAction13,
+ ReeltimeAction14,
+ ReeltimeAction15,
+ ReeltimeAction16,
+ ReeltimeAction10,
+ ReeltimeAction17
};
const u8 gUnknown_085A75C0[] = {1, 1, 2, 2};
const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08};
const s16 gUnknown_085A75CC[] = {10, 8, 6, 4};
-void (*const gUnknown_083ECC30[])(struct Task *task) =
-{
- sub_8104B3C,
- sub_8104B60,
- sub_8104B80,
- sub_8104B60,
- sub_812DD78,
- sub_8104B60,
- sub_8104BC8,
- sub_8104B60,
- sub_812DE14,
- sub_8104B60,
- sub_812DE30,
- sub_8104B60,
- sub_8104BFC,
- sub_8104B60,
- sub_8104C44,
+void (*const InfoBoxActions[])(struct Task *task) =
+{
+ InfoBox_FadeIn,
+ InfoBox_WaitForFade,
+ InfoBox_8104B80,
+ InfoBox_WaitForFade,
+ InfoBox_AddText,
+ InfoBox_WaitForFade,
+ InfoBox_AwaitPlayerInput,
+ InfoBox_WaitForFade,
+ InfoBox_812DE14,
+ InfoBox_WaitForFade,
+ InfoBox_812DE30,
+ InfoBox_WaitForFade,
+ InfoBox_8104BFC,
+ InfoBox_WaitForFade,
+ InfoBox_FreeTask,
};
void (*const gUnknown_083ECC54[])(struct Task *task) =
@@ -651,7 +653,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
// code
#define tState data[0]
-/*static */void Task_FadeToSlotMachine(u8 taskId)
+static void Task_FadeToSlotMachine(u8 taskId)
{
switch (gTasks[taskId].tState)
{
@@ -669,19 +671,19 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C;
}
}
-void PlaySlotMachine(u8 arg0, MainCallback cb)
+void PlaySlotMachine(u8 slotMachineIndex, MainCallback cb)
{
u8 taskId;
sSlotMachine = AllocZeroed(sizeof(*sSlotMachine));
- PlaySlotMachine_Internal(arg0, cb);
+ PlaySlotMachine_Internal(slotMachineIndex, cb);
taskId = CreateTask(Task_FadeToSlotMachine, 0);
gTasks[taskId].tState = 0;
}
#undef tState
-/*static */void CB2_SlotMachineSetup(void)
+static void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
{
@@ -733,7 +735,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
break;
case 10:
SlotMachineSetup_10_0();
- SlotMachineSetup_10_1();
+ SlotMachineSetupGameplayTasks();
gMain.state++;
break;
case 11:
@@ -742,7 +744,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
}
-/*static */void CB2_SlotMachineLoop(void)
+static void CB2_SlotMachineLoop(void)
{
RunTasks();
AnimateSprites();
@@ -750,7 +752,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
UpdatePaletteFade();
}
-/*static */void SlotMachine_VBlankCallback(void)
+static void SlotMachine_VBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -761,25 +763,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
}
-/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb)
{
- struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
- task->data[0] = arg0;
+ struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)];
+ task->data[0] = slotMachineIndex;
StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
}
-/*static */void sub_81019EC(void)
+
+static void sub_81019EC(void)
{
- struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
- sSlotMachine->unk01 = task->data[0];
+ struct Task *task = &gTasks[FindTaskIdByFunc(SlotMachineDummyTask)];
+ sSlotMachine->machineId = task->data[0];
LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
}
-/*static */void SlotMachineDummyTask(u8 taskId)
+static void SlotMachineDummyTask(u8 taskId)
{
}
-/*static */void SlotMachineSetup_0_0(void)
+static void SlotMachineSetup_0_0(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
@@ -790,24 +793,24 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
DeactivateAllTextPrinters();
}
-/*static */void SlotMachineSetup_6_0(void)
+static void SlotMachineSetup_6_0(void)
{
SetVBlankCallback(SlotMachine_VBlankCallback);
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
}
-/*static */void SlotMachineSetup_1_0(void)
+static void SlotMachineSetup_1_0(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-/*static */void SlotMachineSetup_2_0(void)
+static void SlotMachineSetup_2_0(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-/*static */void SlotMachineSetup_2_1(void)
+static void SlotMachineSetup_2_1(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -827,40 +830,42 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
}
-/*static */void SlotMachineSetup_0_1(void)
+// set up initial state of slot machine
+static void SlotMachineSetup_0_1(void)
{
u8 i;
- sub_81019EC();
+ sub_81019EC(); // assigns sSlotMachine->machineId, etc.
sSlotMachine->state = 0;
sSlotMachine->pikaPower = 0;
- sSlotMachine->unk03 = Random() & 1;
- sSlotMachine->unk04 = 0;
+ sSlotMachine->luckyGame = Random() & 1;
+ sSlotMachine->luckyFlags = 0;
sSlotMachine->matchedSymbols = 0;
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
sSlotMachine->coins = GetCoins();
sSlotMachine->payout = 0;
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk1A = 8;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->reelIncrement = 8;
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
sSlotMachine->winIn = 0x3f;
sSlotMachine->winOut = 0x3f;
sSlotMachine->backupMapMusic = GetCurrentMapMusic();
- for (i = 0; i < 3; i++)
+
+ for (i = 0; i < NUM_REELS; i++)
{
- sSlotMachine->unk22[i] = 0;
- sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21;
- sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24;
- sSlotMachine->unk1C[i] %= 0x1f8;
+ sSlotMachine->reelPixelOffsetsWhileStopping[i] = 0;
+ sSlotMachine->reelTagOffsets[i] = gInitialReelPositions[i][sSlotMachine->luckyGame] % REEL_NUM_TAGS;
+ sSlotMachine->reelPixelOffsets[i] = REEL_NUM_TAGS * REEL_TAG_HEIGHT - sSlotMachine->reelTagOffsets[i] * REEL_TAG_HEIGHT;
+ sSlotMachine->reelPixelOffsets[i] %= REEL_NUM_TAGS * REEL_TAG_HEIGHT;
}
- sub_80EDE70(GetCoins());
+ AlertTVThatPlayerPlayedSlotMachine(GetCoins());
}
-/*static */void SlotMachineSetup_3_0(void)
+static void SlotMachineSetup_3_0(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -869,22 +874,23 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
ResetTasks();
}
-/*static */void SlotMachineSetup_4_0(void)
+static void SlotMachineSetup_4_0(void)
{
- gUnknown_0203AACC = Alloc(8);
- gUnknown_0203AAD0 = AllocZeroed(0xE);
- gUnknown_0203AADC = AllocZeroed(8);
+ sSelectedPikaPowerTile = Alloc(8);
+ sUnknown_0203AAD0 = AllocZeroed(0xE);
+ sUnknown_0203AADC = AllocZeroed(8);
- gUnknown_0203AAD0[0] = 0x2051;
- gUnknown_0203AAD0[1] = 0x2851;
- gUnknown_0203AAD0[2] = 0x2061;
- gUnknown_0203AAD0[3] = 0x2861;
- gUnknown_0203AAD0[4] = 0x20BE;
- gUnknown_0203AAD0[5] = 0x28BE;
- gUnknown_0203AAD0[6] = 0x20BF;
+ // several of these are 1 bit off from each other
+ sUnknown_0203AAD0[0] = 0x2051;
+ sUnknown_0203AAD0[1] = 0x2851;
+ sUnknown_0203AAD0[2] = 0x2061;
+ sUnknown_0203AAD0[3] = 0x2861;
+ sUnknown_0203AAD0[4] = 0x20BE;
+ sUnknown_0203AAD0[5] = 0x28BE;
+ sUnknown_0203AAD0[6] = 0x20BF;
}
-/*static */void SlotMachineSetup_5_0(void)
+static void SlotMachineSetup_5_0(void)
{
sub_8106448();
sub_81064B8();
@@ -894,7 +900,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PutWindowTilemap(0);
}
-/*static */void SlotMachineSetup_10_0(void)
+static void SlotMachineSetup_10_0(void)
{
sub_8104EA8();
sub_8104F8C();
@@ -902,26 +908,28 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_81050C4();
}
-/*static */void SlotMachineSetup_10_1(void)
+// create gameplay tasks
+static void SlotMachineSetupGameplayTasks(void)
{
- sub_8104048();
- sub_8102DA8();
+ GameplayTask_PikaPower();
+ GameplayTask_StopSlotReel();
sub_8104C5C();
- sub_8101D04();
+ GameplayTasks_Slots();
}
-/*static */void sub_8101D04(void)
+static void GameplayTasks_Slots(void)
{
- sub_8101D24(CreateTask(sub_8101D24, 0));
+ RunSlotActions(CreateTask(RunSlotActions, 0));
}
-/*static */void sub_8101D24(u8 taskId)
+// task->data[0] is a timer
+static void RunSlotActions(u8 taskId)
{
- while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
+ while (SlotActions[sSlotMachine->state](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8101D5C(struct Task *task)
+static bool8 SlotAction_UnfadeScreen(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
sub_810423C(sSlotMachine->pikaPower);
@@ -929,25 +937,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8101D8C(struct Task *task)
+static bool8 SlotAction_WaitForUnfade(struct Task *task)
{
if (!gPaletteFade.active)
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8101DB0(struct Task *task)
+static bool8 SlotAction_SetSlotMachineVars(struct Task *task)
{
sSlotMachine->payout = 0;
sSlotMachine->bet = 0;
- sSlotMachine->unk18 = 0;
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->currReel = 0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
sSlotMachine->state = 4;
if (sSlotMachine->coins <= 0)
{
sSlotMachine->state = 25;
}
- else if (sSlotMachine->unk0A)
+ else if (sSlotMachine->fairRollsLeft)
{
sSlotMachine->state = 3;
sub_8104CAC(4);
@@ -955,14 +963,14 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101DF4(struct Task *task)
+static bool8 SlotAction3(struct Task *task)
{
if (sub_8104E18())
sSlotMachine->state = 4;
return FALSE;
}
-/*static */bool8 sub_8101E10(struct Task *task)
+static bool8 SlotAction4(struct Task *task)
{
sub_8104CAC(0);
sSlotMachine->state = 5;
@@ -971,27 +979,27 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return TRUE;
}
-/*static */bool8 sub_8101E3C(struct Task *task)
+static bool8 SlotAction_AwaitPlayerInput(struct Task *task)
{
s16 i;
if (gMain.newKeys & SELECT_BUTTON)
{
- sub_8104AB8(0);
+ OpenInfoBox(0);
sSlotMachine->state = 8;
}
- else if (gMain.newKeys & R_BUTTON)
+ else if (gMain.newKeys & R_BUTTON) // bet the max amount
{
if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
{
for (i = sSlotMachine->bet; i < 3; i++)
- sub_8103D50(i);
+ LoadBetTiles(i);
sSlotMachine->coins -= (3 - sSlotMachine->bet);
sSlotMachine->bet = 3;
sSlotMachine->state = 9;
PlaySE(SE_REGI);
}
- else
+ else // you didn't have enough coins to bet the max
{
sSlotMachine->state = 6;
}
@@ -1001,56 +1009,63 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
{
PlaySE(SE_REGI);
- sub_8103D50(sSlotMachine->bet);
+ LoadBetTiles(sSlotMachine->bet);
sSlotMachine->coins--;
sSlotMachine->bet++;
}
+ // player maxed out or finished betting
if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
sSlotMachine->state = 9;
+ // player wants to quit
if (gMain.newKeys & B_BUTTON)
sSlotMachine->state = 21;
}
return FALSE;
}
-/*static */bool8 sub_8101F44(struct Task *task)
+static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 7;
return FALSE;
}
-/*static */bool8 sub_8101F60(struct Task *task)
+static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_8101F88(struct Task *task)
+static bool8 SlotAction_GivingInformation(struct Task *task)
{
- if (sub_8104AEC())
+ if (IsInfoBoxClosed())
sSlotMachine->state = 5;
return FALSE;
}
-/*static */bool8 sub_8101FA4(struct Task *task)
+// probably make all the slots roll
+static bool8 SlotAction9(struct Task *task)
{
- sub_8102484();
+ DrawLuckyFlags();
sub_8104DA4();
- sub_8102DEC(0);
- sub_8102DEC(1);
- sub_8102DEC(2);
- sub_80EEC80();
+
+ // for each reel...
+ ReelTasks_SetUnkTaskData(0);
+ ReelTasks_SetUnkTaskData(1);
+ ReelTasks_SetUnkTaskData(2);
+
+ sub_80EEC80(); // something with daily slot variable
+
task->data[0] = 0;
- if (sSlotMachine->unk04 & 0x20)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_REELTIME)
{
- sub_810430C();
+ BeginReeltime();
sSlotMachine->state = 10;
}
else
@@ -1058,52 +1073,52 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
sub_8104CAC(1);
sSlotMachine->state = 11;
}
- sSlotMachine->unk1A = 8;
- if (sSlotMachine->unk0A)
- sSlotMachine->unk1A = dp15_jump_random_unknown();
+ sSlotMachine->reelIncrement = 8;
+ if (sSlotMachine->fairRollsLeft)
+ sSlotMachine->reelIncrement = SlowReelSpeed();
return FALSE;
}
-/*static */bool8 sub_8102008(struct Task *task)
+static bool8 SlotAction10(struct Task *task)
{
- if (sub_810432C())
+ if (IsFinalTask_RunReelTimeActions())
{
sub_8104CAC(1);
- sSlotMachine->unk04 &= 0xDF;
+ sSlotMachine->luckyFlags &= ~LUCKY_BIAS_REELTIME;
sSlotMachine->state = 11;
}
return FALSE;
}
-/*static */bool8 sub_8102034(struct Task *task)
+static bool8 SlotAction_SetLuckySpins(struct Task *task)
{
if (++task->data[0] >= 30)
{
- sub_81024F0();
+ SetLuckySpins();
sSlotMachine->state = 12;
}
return FALSE;
}
-/*static */bool8 sub_8102058(struct Task *task)
+static bool8 SlotAction_AwaitReelStop(struct Task *task)
{
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_JYUNI);
- sub_8102E1C(sSlotMachine->unk18);
- sub_8103C14(sSlotMachine->unk18);
+ sub_8102E1C(sSlotMachine->currReel);
+ sub_8103C14(sSlotMachine->currReel);
sSlotMachine->state = 13;
}
return FALSE;
}
-/*static */bool8 sub_8102090(struct Task *task)
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task)
{
- if (!sub_8102E40(sSlotMachine->unk18))
+ if (!IsSlotReelMoving(sSlotMachine->currReel))
{
- sSlotMachine->unk18++;
+ sSlotMachine->currReel++;
sSlotMachine->state = 12;
- if (sSlotMachine->unk18 > 2)
+ if (sSlotMachine->currReel > 2)
{
sSlotMachine->state = 14;
}
@@ -1112,24 +1127,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81020C8(struct Task *task)
+// once all reels have stopped
+static bool8 SlotAction_CheckMatches(struct Task *task)
{
- sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
CheckMatch();
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
- sSlotMachine->unk0A--;
- sSlotMachine->unk0B++;
+ sSlotMachine->fairRollsLeft--;
+ sSlotMachine->fairRollsUsed++;
}
if (sSlotMachine->matchedSymbols)
{
sSlotMachine->state = 15;
- sub_8102A24();
+ AwardPayout();
sub_8103F70();
- if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0)
+ if ((sSlotMachine->netCoinLoss -= sSlotMachine->payout) < 0)
{
- sSlotMachine->unk10 = 0;
+ sSlotMachine->netCoinLoss = 0;
}
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
@@ -1146,42 +1162,44 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
PlayFanfare(MUS_ME_B_SMALL);
sub_8104CAC(2);
}
+ // if you matched 777...
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk04 &= 0x3f;
+ sSlotMachine->luckyFlags &= ~(LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk03 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->luckyGame = FALSE;
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
- sSlotMachine->unk03 = 1;
+ // this may be an error, but if you get blue 777, the game becomes lucky
+ sSlotMachine->luckyGame = TRUE;
}
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
{
sSlotMachine->pikaPower++;
- sub_8104064(sSlotMachine->pikaPower);
+ DisplayPikaPower(sSlotMachine->pikaPower);
}
}
else
{
sub_8104CAC(3);
sSlotMachine->state = 20;
- if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999)
- sSlotMachine->unk10 = 9999;
+ if ((sSlotMachine->netCoinLoss += sSlotMachine->bet) > 9999)
+ sSlotMachine->netCoinLoss = 9999;
}
return FALSE;
}
-/*static */bool8 sub_81021E0(struct Task *task)
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task)
{
- if (sub_8102A44())
+ if (IsFinalTask_RunAwardPayoutActions())
sSlotMachine->state = 16;
return FALSE;
}
-/*static */bool8 sub_81021FC(struct Task *task)
+static bool8 SlotAction_EndOfRoll(struct Task *task)
{
if (sub_8103FA0())
{
@@ -1190,12 +1208,12 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- sSlotMachine->unk18 = 0;
+ sSlotMachine->currReel = 0;
sSlotMachine->state = 9;
}
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
sSlotMachine->state = 17;
- if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ if (sSlotMachine->fairRollsLeft && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1204,7 +1222,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102264(struct Task *task)
+static bool8 SlotAction_MatchedPower(struct Task *task)
{
if (!sub_81040C8())
{
@@ -1212,7 +1230,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sSlotMachine->state = 9;
- if (sSlotMachine->unk0A)
+ if (sSlotMachine->fairRollsLeft)
{
sub_8104CAC(4);
sSlotMachine->state = 18;
@@ -1222,7 +1240,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022A0(struct Task *task)
+static bool8 SlotAction18(struct Task *task)
{
if (sub_8104E18())
{
@@ -1235,7 +1253,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022CC(struct Task *task)
+static bool8 SlotAction_Loop(struct Task *task)
{
sub_8103D8C(0);
sub_8103D8C(1);
@@ -1244,7 +1262,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_81022F0(struct Task *task)
+static bool8 SlotAction_NoMatches(struct Task *task)
{
if (++task->data[1] > 64)
{
@@ -1254,9 +1272,9 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102318(struct Task *task)
+static bool8 SlotAction_PrintQuitTheGame(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF);
@@ -1264,272 +1282,277 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102344(struct Task *task)
+static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task)
{
s8 input = Menu_ProcessInputNoWrapClearOnChoose();
- if (input == 0)
+ if (input == 0) // player chooses to quit
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sub_8103D8C(0);
sub_8103D8C(1);
sub_8103D8C(2);
sSlotMachine->coins += sSlotMachine->bet;
sSlotMachine->state = 27;
}
- else if (input == 1 || input == -1)
+ else if (input == 1 || input == -1) // player chooses not to quit
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_810239C(struct Task *task)
+static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 24;
return FALSE;
}
-/*static */bool8 sub_81023B8(struct Task *task)
+static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 5;
}
return FALSE;
}
-/*static */bool8 sub_81023E0_(struct Task *task)
+static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task)
{
- NewMenuHelpers_DrawDialogueFrame(0, 0);
+ DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
sSlotMachine->state = 26;
return FALSE;
}
-/*static */bool8 sub_81023FC(struct Task *task)
+static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
sSlotMachine->state = 27;
}
return FALSE;
}
-/*static */bool8 sub_8102424(struct Task *task)
+static bool8 SlotAction_EndGame(struct Task *task)
{
SetCoins(sSlotMachine->coins);
- sub_80EDD78(GetCoins());
+ AlertTVOfNewCoinTotal(GetCoins());
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
sSlotMachine->state++;
return FALSE;
}
-/*static */bool8 sub_8102460(struct Task *task)
+static bool8 SlotAction_FreeDataStructures(struct Task *task)
{
if (!gPaletteFade.active)
{
SetMainCallback2(sSlotMachine->prevMainCb);
- FREE_AND_SET_NULL(gUnknown_0203AAF4);
- FREE_AND_SET_NULL(gUnknown_0203AAF8);
- FREE_AND_SET_NULL(gUnknown_0203AAFC);
- FREE_AND_SET_NULL(gUnknown_0203AB00);
- FREE_AND_SET_NULL(gUnknown_0203AB04);
- FREE_AND_SET_NULL(gUnknown_0203AB08);
- FREE_AND_SET_NULL(gUnknown_0203AB0C);
- FREE_AND_SET_NULL(gUnknown_0203AB10);
- FREE_AND_SET_NULL(gUnknown_0203AB14);
- FREE_AND_SET_NULL(gUnknown_0203AB18);
- FREE_AND_SET_NULL(gUnknown_0203AB1C);
- FREE_AND_SET_NULL(gUnknown_0203AB20);
- FREE_AND_SET_NULL(gUnknown_0203AB24);
- FREE_AND_SET_NULL(gUnknown_0203AB28);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
- FREE_AND_SET_NULL(gUnknown_0203AAC8);
- FREE_AND_SET_NULL(gUnknown_0203AACC);
- FREE_AND_SET_NULL(gUnknown_0203AAD0);
- FREE_AND_SET_NULL(gUnknown_0203AAD4);
- FREE_AND_SET_NULL(gUnknown_0203AAD8);
- FREE_AND_SET_NULL(gUnknown_0203AADC);
- FREE_AND_SET_NULL(gUnknown_0203AAE0);
- FREE_AND_SET_NULL(gUnknown_0203AB2C);
- FREE_AND_SET_NULL(gUnknown_0203AB30);
+ FREE_AND_SET_NULL(sUnknown_0203AAF4);
+ FREE_AND_SET_NULL(sUnknown_0203AAF8);
+ FREE_AND_SET_NULL(sUnknown_0203AAFC);
+ FREE_AND_SET_NULL(sUnknown_0203AB00);
+ FREE_AND_SET_NULL(sUnknown_0203AB04);
+ FREE_AND_SET_NULL(sUnknown_0203AB08);
+ FREE_AND_SET_NULL(sUnknown_0203AB0C);
+ FREE_AND_SET_NULL(sUnknown_0203AB10);
+ FREE_AND_SET_NULL(sUnknown_0203AB14);
+ FREE_AND_SET_NULL(sUnknown_0203AB18);
+ FREE_AND_SET_NULL(sUnknown_0203AB1C);
+ FREE_AND_SET_NULL(sUnknown_0203AB20);
+ FREE_AND_SET_NULL(sUnknown_0203AB24);
+ FREE_AND_SET_NULL(sUnknown_0203AB28);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
+ FREE_AND_SET_NULL(sUnknown_0203AAC8);
+ FREE_AND_SET_NULL(sSelectedPikaPowerTile);
+ FREE_AND_SET_NULL(sUnknown_0203AAD0);
+ FREE_AND_SET_NULL(sUnknown_0203AAD4);
+ FREE_AND_SET_NULL(sUnknown_0203AAD8);
+ FREE_AND_SET_NULL(sUnknown_0203AADC);
+ FREE_AND_SET_NULL(sUnknown_0203AAE0);
+ FREE_AND_SET_NULL(sUnknown_0203AB2C);
+ FREE_AND_SET_NULL(sUnknown_0203AB30);
FREE_AND_SET_NULL(sSlotMachine);
}
return FALSE;
}
-/*static */void sub_8102484(void)
+static void DrawLuckyFlags(void)
{
- u8 r3;
+ u8 attempts;
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- if (!(sSlotMachine->unk04 & 0xc0))
+ if (!(sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777)))
{
- if (sub_8102540_())
+ if (IsThisRoundLucky())
{
- r3 = sub_8102578();
- if (r3 != 3)
+ attempts = AttemptsAtLuckyFlags_Top3();
+ if (attempts != 3) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
- if (r3 != 1)
+ // attempts == 1: reelTime flag set
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_Top3[attempts];
+ if (attempts != 1)
{
return;
}
}
}
- r3 = sub_81025BC();
- if (r3 != 5)
+ // if it's not a lucky round or you got reel time, roll for the lower lucky flags
+ attempts = AttemptsAtLuckyFlags_NotTop3();
+ if (attempts != 5) // if you found a lucky number
{
- sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ sSlotMachine->luckyFlags |= gLuckyFlagSettings_NotTop3[attempts];
}
}
}
}
-/*static */void sub_81024F0(void)
+static void SetLuckySpins(void)
{
- sSlotMachine->unk06 = 0;
- if (sSlotMachine->unk04)
- sSlotMachine->unk06 = 1;
+ sSlotMachine->luckySpinsLeft = 0;
+ if (sSlotMachine->luckyFlags)
+ sSlotMachine->luckySpinsLeft = 1;
}
-/*static */u8 sub_810250C(u8 a0)
+static u8 GetBiasTag(u8 luckyFlags)
{
u8 i;
for (i = 0; i < 8; i++)
{
- if (a0 & 1)
- return gUnknown_083ECE3A[i];
- a0 >>= 1;
+ if (luckyFlags & 1)
+ return gBiasTags[i];
+ luckyFlags >>= 1;
}
return 0;
}
-/*static */bool8 sub_8102540_(void)
+// you have way more luck betting 3 coins than anything lower
+static bool8 IsThisRoundLucky(void)
{
u8 rval = Random();
- if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
+ if (gLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval)
return TRUE;
return FALSE;
}
-/*static */u8 sub_8102578(void)
+static u8 AttemptsAtLuckyFlags_Top3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 3; i++)
+ for (count = 0; count < 3; count++)
{
s16 rval = Random() & 0xff;
- s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01];
+ s16 value = gLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId];
if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_81025BC(void)
+static u8 AttemptsAtLuckyFlags_NotTop3(void)
{
- s16 i;
+ s16 count;
- for (i = 0; i < 5; i++)
+ for (count = 0; count < 5; count++)
{
- s16 rval = Random() & 0xff;
- s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01];
- if (i == 0 && sSlotMachine->unk03 == 1)
+ s16 rval = Random() & 0xff; // random byte
+ s16 value = gLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId];
+ // make first attempt easier if it's a lucky game
+ if (count == 0 && sSlotMachine->luckyGame == TRUE)
{
- r3 += 10;
- if (r3 > 0x100)
- r3 = 0x100;
+ value += 10;
+ if (value > 0x100)
+ value = 0x100;
}
- else if (i == 4 && sSlotMachine->unk03 == 1)
+ // make last attempt harder if it's a lucky game
+ else if (count == 4 && sSlotMachine->luckyGame == TRUE)
{
- r3 -= 10;
- if (r3 < 0)
- r3 = 0;
+ value -= 10;
+ if (value < 0)
+ value = 0;
}
- if (r3 > rval)
+ if (value > rval)
break;
}
- return i;
+ return count;
}
-/*static */u8 sub_810264C(u8 a0)
+static u8 GetReelTimeProbability(u8 reelTimeDraw)
{
- if (sSlotMachine->unk03 == 0)
- return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
+ if (sSlotMachine->luckyGame == FALSE)
+ return gReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower];
else
- return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
+ return gReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower];
}
-/*static */void sub_8102680(void)
+static void GetReeltimeDraw(void)
{
u8 rval;
- s16 i;
+ s16 reelTimeDraw;
- sSlotMachine->unk05 = 0;
+ sSlotMachine->reelTimeDraw = 0;
rval = Random();
- if (rval < sub_810264C(0))
+ if (rval < GetReelTimeProbability(0))
return;
- for (i = 5; i > 0; i--)
+ for (reelTimeDraw = 5; reelTimeDraw > 0; reelTimeDraw--)
{
rval = Random();
- if (rval < sub_810264C(i))
+ if (rval < GetReelTimeProbability(reelTimeDraw))
break;
}
- sSlotMachine->unk05 = i;
+ sSlotMachine->reelTimeDraw = reelTimeDraw;
}
-/*static */bool8 sub_81026DC(u16 a0)
+static bool8 SkipToReeltimeAction14(u16 i)
{
u16 rval = Random() & 0xff;
- if (rval < gUnknown_083ECE12[a0])
+ if (rval < gProbabilityTable_SkipToReeltimeAction14[i])
return TRUE;
else
return FALSE;
}
-/*static */u16 dp15_jump_random_unknown(void)
+static u16 SlowReelSpeed(void)
{
- u8 r4 = 0;
+ u8 i = 0;
u8 rval;
u8 value;
- if (sSlotMachine->unk10 >= 300)
- r4 = 4;
- else if (sSlotMachine->unk10 >= 250)
- r4 = 3;
- else if (sSlotMachine->unk10 >= 200)
- r4 = 2;
- else if (sSlotMachine->unk10 >= 150)
- r4 = 1;
+ if (sSlotMachine->netCoinLoss >= 300)
+ i = 4;
+ else if (sSlotMachine->netCoinLoss >= 250)
+ i = 3;
+ else if (sSlotMachine->netCoinLoss >= 200)
+ i = 2;
+ else if (sSlotMachine->netCoinLoss >= 150)
+ i = 1;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][0];
+ value = gReelIncrementTable[i][0];
if (rval < value)
return 4;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B];
+ value = gReelIncrementTable[i][1] + gReelTimeBonusIncrementTable[sSlotMachine->fairRollsUsed];
if (rval < value)
return 2;
return 8;
}
-/*static */void CheckMatch(void)
+static void CheckMatch(void)
{
sSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
@@ -1539,88 +1562,88 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
CheckMatch_Diagonals();
}
-/*static */void CheckMatch_CenterRow(void)
+static void CheckMatch_CenterRow(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ c1 = GetNearbyTag_Quantized(0, 2);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 2);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(0);
}
}
-/*static */void CheckMatch_TopAndBottom(void)
+static void CheckMatch_TopAndBottom(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 1);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(1);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 3);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
sub_8103E04(2);
}
}
-/*static */void CheckMatch_Diagonals(void)
+static void CheckMatch_Diagonals(void)
{
u8 c1, c2, c3, match;
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ c1 = GetNearbyTag_Quantized(0, 1);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 3);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(3);
}
- c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
- c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
- c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ c1 = GetNearbyTag_Quantized(0, 3);
+ c2 = GetNearbyTag_Quantized(1, 2);
+ c3 = GetNearbyTag_Quantized(2, 1);
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- sSlotMachine->payout += sSlotPayouts[match];
- sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += gSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
}
sub_8103E04(4);
}
}
-/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
- return sSym2Match[c1];
+ return gSym2Match[c1];
if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
return SLOT_MACHINE_MATCHED_777_MIXED;
if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
@@ -1630,26 +1653,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return SLOT_MACHINE_MATCHED_NONE;
}
-/*static */void sub_8102A24(void)
+static void AwardPayout(void)
{
- sub_8102A64(CreateTask(sub_8102A64, 4));
+ RunAwardPayoutActions(CreateTask(RunAwardPayoutActions, 4));
}
-/*static */bool8 sub_8102A44(void)
+static bool8 IsFinalTask_RunAwardPayoutActions(void)
{
- if (FindTaskIdByFunc(sub_8102A64) == 0xFF)
+ if (FindTaskIdByFunc(RunAwardPayoutActions) == TAIL_SENTINEL)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8102A64(u8 taskId)
+static void RunAwardPayoutActions(u8 taskId)
{
- while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ while (AwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102A9C(struct Task *task)
+static bool8 AwardPayoutAction0(struct Task *task)
{
if (sub_8103E38())
{
@@ -1662,8 +1685,8 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
}
return FALSE;
}
-
-/*static */bool8 sub_8102AD0(struct Task *task)
+// task->data[1]: timer
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
{
if (!task->data[1]--)
{
@@ -1689,165 +1712,175 @@ void PlaySlotMachine(u8 arg0, MainCallback cb)
return FALSE;
}
-/*static */bool8 sub_8102B80(struct Task *task)
+static bool8 AwardPayoutAction_FreeTask(struct Task *task)
{
if (sub_8103E7C())
- DestroyTask(FindTaskIdByFunc(sub_8102A64));
+ DestroyTask(FindTaskIdByFunc(RunAwardPayoutActions));
return FALSE;
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
+
+// Returns the tag that is posOffset below the tag at the top of reelIndex's tape
+static u8 GetNearbyTag_Quantized(u8 reelIndex, s16 posOffset)
{
- s16 offset = (sSlotMachine->reelPositions[x] + y) % 21;
- if (offset < 0)
- offset += 21;
- return sReelSymbols[x][offset];
+ s16 tagIndex = (sSlotMachine->reelTagOffsets[reelIndex] + posOffset) % REEL_NUM_TAGS;
+ if (tagIndex < 0)
+ tagIndex += REEL_NUM_TAGS;
+ return gReelSymbols[reelIndex][tagIndex];
}
-/*static */u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
+
+// Calculates GetNearbyTag_Quantized as if the reel was snapped downwards into place
+static u8 GetNearbyTag(u8 reelIndex, s16 posOffset)
{
- s16 r6 = 0;
- s16 result = sSlotMachine->unk1C[x] % 24;
+ s16 tagOffset = 0;
+ s16 result = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
if (result != 0)
- r6 = -1;
- return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
+ tagOffset = -1;
+ return GetNearbyTag_Quantized(reelIndex, posOffset + tagOffset);
}
-/*static */u8 sub_8102C48(s16 a0)
+static u8 GetNearbyReelTimeTag(s16 n)
{
- s16 r1 = (sSlotMachine->unk16 + a0) % 6;
- if (r1 < 0)
- r1 += 6;
- return gUnknown_083ECCF1[r1];
+ s16 newPosition = (sSlotMachine->reeltimePosition + n) % 6;
+ if (newPosition < 0)
+ newPosition += 6;
+ return gReelTimeTags[newPosition];
}
-/*static */void sub_8102C84(u8 a0, s16 a1)
+static void AdvanceSlotReel(u8 reelIndex, s16 value)
{
- sSlotMachine->unk1C[a0] += a1;
- sSlotMachine->unk1C[a0] %= 504;
- sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24;
+ sSlotMachine->reelPixelOffsets[reelIndex] += value;
+ sSlotMachine->reelPixelOffsets[reelIndex] %= 504;
+ sSlotMachine->reelTagOffsets[reelIndex] = REEL_NUM_TAGS - sSlotMachine->reelPixelOffsets[reelIndex] / 24;
}
-s16 sub_8102CCC(u8 a0, s16 a1)
+s16 AdvanceSlotReelToNextTag(u8 reelIndex, s16 value)
{
- s16 r1 = sSlotMachine->unk1C[a0] % 24;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
+ if (offset != 0)
{
- if (r1 < a1)
- a1 = r1;
- sub_8102C84(a0, a1);
- r1 = sSlotMachine->unk1C[a0] % 24;
+ if (offset < value)
+ value = offset;
+ AdvanceSlotReel(reelIndex, value);
+ offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102D28(s16 a0)
+static void AdvanceReeltimeReel(s16 value)
{
- sSlotMachine->unk14 += a0;
- sSlotMachine->unk14 %= 120;
- sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20;
+ sSlotMachine->reeltimePixelOffset += value;
+ sSlotMachine->reeltimePixelOffset %= 120;
+ sSlotMachine->reeltimePosition = 6 - sSlotMachine->reeltimePixelOffset / 20;
}
-s16 sub_8102D5C(s16 a0)
+s16 AdvanceReeltimeReelToNextTag(s16 value)
{
- s16 r1 = sSlotMachine->unk14 % 20;
- if (r1 != 0)
+ s16 offset = sSlotMachine->reeltimePixelOffset % 20;
+ if (offset != 0)
{
- if (r1 < a0)
- a0 = r1;
- sub_8102D28(a0);
- r1 = sSlotMachine->unk14 % 20;
+ if (offset < value)
+ value = offset;
+ AdvanceReeltimeReel(value);
+ offset = sSlotMachine->reeltimePixelOffset % 20;
}
- return r1;
+ return offset;
}
-/*static */void sub_8102DA8(void)
+static void GameplayTask_StopSlotReel(void)
{
u8 i;
for (i = 0; i < 3; i++)
{
- u8 taskId = CreateTask(sub_8102E68, 2);
+ u8 taskId = CreateTask(RunSlotReelActions, 2);
gTasks[taskId].data[15] = i;
- sSlotMachine->reelTasks[i] = taskId;
- sub_8102E68(taskId);
+ sSlotMachine->slotReelTasks[i] = taskId;
+ RunSlotReelActions(taskId);
}
}
-/*static */void sub_8102DEC(u8 a0)
+static void ReelTasks_SetUnkTaskData(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1;
- gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14] = 1;
}
-/*static */void sub_8102E1C(u8 a0)
+static void sub_8102E1C(u8 reelIndex)
{
- gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 2;
}
-/*static */bool8 sub_8102E40(u8 a0)
+static bool8 IsSlotReelMoving(u8 reelIndex)
{
- return gTasks[sSlotMachine->reelTasks[a0]].data[14];
+ return gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14];
}
-/*static */void sub_8102E68(u8 taskId)
+static void RunSlotReelActions(u8 taskId)
{
- while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ while (SlotReelActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
-/*static */bool8 sub_8102EA0(struct Task *task)
+// task->data[1] reel turns
+// task->data[15] reelIndex
+static bool8 SlotReelAction_StayStill(struct Task *task)
{
return FALSE;
}
-/*static */bool8 sub_8102EA4(struct Task *task)
+static bool8 SlotReelAction_Spin(struct Task *task)
{
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
return FALSE;
}
-
-/*static */bool8 sub_8102EC0(struct Task *task)
+// As in previous generations, the slot machine often doesn't stop exactly when you press stop
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *task)
{
task->data[0]++;
- sSlotMachine->unk34[task->data[15]] = 0;
- sSlotMachine->unk2E[task->data[15]] = 0;
- if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ // initialize data for that reel --> these will be changed if gBiasTags can be lined up
+ sSlotMachine->winnerRows[task->data[15]] = 0;
+ sSlotMachine->reelExtraTurns[task->data[15]] = 0;
+
+ if (sSlotMachine->fairRollsLeft == 0 && (sSlotMachine->luckyFlags == 0 || sSlotMachine->luckySpinsLeft == 0 || !DecideReelTurns_BiasTag[task->data[15]]()))
{
- sSlotMachine->unk06 = 0;
- gUnknown_083ECB4C[task->data[15]]();
+ sSlotMachine->luckySpinsLeft = 0;
+ DecideReelTurns_NoBiasTag[task->data[15]]();
}
- task->data[1] = sSlotMachine->unk2E[task->data[15]];
+ task->data[1] = sSlotMachine->reelExtraTurns[task->data[15]];
return TRUE;
}
-/*static */bool8 sub_8102F4C(struct Task *task)
+// go to next tag and then do any additional turns
+static bool8 SlotReelAction_MoveToStop(struct Task *task)
{
- u16 sp[ARRAY_COUNT(gUnknown_085A74FC)];
- s16 r2;
+ u16 reelStopShocks[ARRAY_COUNT(ReelStopShocks)];
+ s16 reelPixelPos;
- memcpy(sp, gUnknown_085A74FC, sizeof(gUnknown_085A74FC));
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
- if (r2 != 0)
- r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A);
- else if (sSlotMachine->unk2E[task->data[15]])
+ memcpy(reelStopShocks, ReelStopShocks, sizeof(ReelStopShocks));
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
+ if (reelPixelPos != 0)
+ reelPixelPos = AdvanceSlotReelToNextTag(task->data[15], sSlotMachine->reelIncrement);
+ else if (sSlotMachine->reelExtraTurns[task->data[15]])
{
- sSlotMachine->unk2E[task->data[15]]--;
- sub_8102C84(task->data[15], sSlotMachine->unk1A);
- r2 = sSlotMachine->unk1C[task->data[15]] % 24;
+ sSlotMachine->reelExtraTurns[task->data[15]]--;
+ AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
}
- if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0)
+ if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->data[15]] == 0)
{
task->data[0]++;
- task->data[1] = sp[task->data[1]];
+ task->data[1] = reelStopShocks[task->data[1]];
task->data[2] = 0;
}
return FALSE;
}
-/*static */bool8 sub_8103008(struct Task *task)
+// make selected tag oscillate before it becomes still
+static bool8 SlotReelAction_OscillatingStop(struct Task *task)
{
- sSlotMachine->unk22[task->data[15]] = task->data[1];
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = task->data[1];
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
@@ -1856,103 +1889,111 @@ s16 sub_8102D5C(s16 a0)
{
task->data[0] = 0;
task->data[14] = 0;
- sSlotMachine->unk22[task->data[15]] = 0;
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = 0;
}
return FALSE;
}
-/*static */bool8 sub_810305C(void)
+static bool8 DecideReelTurns_BiasTag_Reel1(void)
{
- u8 r3 = sub_810250C(sSlotMachine->unk04);
- u8 r5 = r3;
- if (sSlotMachine->unk04 & 0xc0)
+ u8 tag2 = GetBiasTag(sSlotMachine->luckyFlags);
+ u8 tag1 = tag2;
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777))
{
- r5 = 0;
- r3 = 1;
+ tag1 = SLOT_MACHINE_TAG_7_RED;
+ tag2 = SLOT_MACHINE_TAG_7_BLUE;
}
- return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3);
+ return DecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2);
}
-/*static */bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
+static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2)
{
- u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
+ u8 tag = GetNearbyTag(0, pos);
if (tag == tag1 || tag == tag2)
{
- sSlotMachine->unk07 = tag;
+ sSlotMachine->biasTag = tag;
return TRUE;
}
return FALSE;
}
-/*static */bool8 sub_81030E0(s16 y)
+static bool8 AreCherriesOnScreen_Reel1(s16 offsetFromCenter)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
+ if (GetNearbyTag(0, 1 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 2 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 3 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY)
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103134(void)
+static bool8 IsBiasTowardsCherryOr7s(void)
{
- if (sSlotMachine->unk04 & 0xc2)
+ if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777 | LUCKY_BIAS_CHERRY))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_8103154(u8 a0, u8 a1)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 tag1, u8 tag2)
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sub_81030A4(2 - i, a0, a1))
+ // if a lucky tag appears in the center row within 4 turns
+ if (AreTagsAtPosition_Reel1(2 - i, tag1, tag2))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_81031B4(u8 tag1, u8 tag2)
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 tag1, u8 tag2)
{
s16 i;
- bool8 r6 = sub_8103134();
- if (r6 || !sub_81030E0(0))
+ bool8 biased = IsBiasTowardsCherryOr7s();
+ // if lucky numbers or no cherries are currently on screen in reel 1...
+ if (biased || !AreCherriesOnScreen_Reel1(0))
{
for (i = 1; i < 4; i++)
{
- if (sub_81030A4(i, tag1, tag2))
+ // if a bias tag is currently on the screen
+ if (AreTagsAtPosition_Reel1(i, tag1, tag2))
{
- sSlotMachine->unk34[0] = i;
- sSlotMachine->unk2E[0] = 0;
+ sSlotMachine->winnerRows[0] = i;
+ sSlotMachine->reelExtraTurns[0] = 0;
return TRUE;
}
}
}
for (i = 1; i < 5; i++)
{
- bool8 r7 = r6;
- if (r7 || !sub_81030E0(i))
+ bool8 biasedCopy = biased; // redundant
+ // if biased or if in the next 4 turns there is a screen with no cherries...
+ if (biasedCopy || !AreCherriesOnScreen_Reel1(i))
{
- if (sub_81030A4(1 - i, tag1, tag2))
+ //...and if a bias tag is in top row of that screen
+ if (AreTagsAtPosition_Reel1(1 - i, tag1, tag2))
{
- if (i == 1 && (r7 || !sub_81030E0(3)))
+ //...and if it only took 1 turn and the lucky tag could also be the bottom row of a screen with no cherries...
+ if (i == 1 && (biasedCopy || !AreCherriesOnScreen_Reel1(3)))
{
- sSlotMachine->unk34[0] = 3;
- sSlotMachine->unk2E[0] = 3;
+ sSlotMachine->winnerRows[0] = 3;
+ sSlotMachine->reelExtraTurns[0] = 3;
return TRUE;
}
- if (i < 4 && (r7 || !sub_81030E0(i + 1)))
+ //...or if it isn't the last turn and the lucky tag could be in the center row of a screen with no cherries...
+ if (i < 4 && (biasedCopy || !AreCherriesOnScreen_Reel1(i + 1)))
{
- sSlotMachine->unk34[0] = 2;
- sSlotMachine->unk2E[0] = i + 1;
+ sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->reelExtraTurns[0] = i + 1;
return TRUE;
}
- sSlotMachine->unk34[0] = 1;
- sSlotMachine->unk2E[0] = i;
+ //...else
+ sSlotMachine->winnerRows[0] = 1;
+ sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
}
@@ -1960,55 +2001,61 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81032C0(void)
+static bool8 DecideReelTurns_BiasTag_Reel2(void)
{
- return gUnknown_083ECB70[sSlotMachine->bet - 1]();
+ return DecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */bool8 sub_81032E8(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void)
{
s16 i;
- s16 unk34_0 = sSlotMachine->unk34[0];
+ s16 biasTagLocation_Reel1 = sSlotMachine->winnerRows[0];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07)
+ // if biasTag appears in the same row within 4 turns
+ if (GetNearbyTag(1, biasTagLocation_Reel1 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = unk34_0;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = biasTagLocation_Reel1;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810333C(void)
+static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void)
{
s16 i;
- if (sub_81032E8())
+ // if biasTag appears in the same row within 4 turns...
+ if (DecideReelTurns_BiasTag_Reel2_Bet1or2())
{
- if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4)
+ //...and if the biasTag is not in middle row of reel 1 and if biasTag appears in middle row of reel 2 in 2 or 3 turns...
+ if (sSlotMachine->winnerRows[0] != 2 && sSlotMachine->reelExtraTurns[1] > 1 && sSlotMachine->reelExtraTurns[1] != 4)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the bias tag will appear in the middle row within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
}
return TRUE;
}
- if (sSlotMachine->unk34[0] != 2)
+ // else if the biasTag is not in middle row of reel 1...
+ if (sSlotMachine->winnerRows[0] != 2)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
+ //...and if the biasTag will appear in the center row of reel 2 within 4 turns
+ if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
return TRUE;
}
}
@@ -2016,102 +2063,113 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */bool8 sub_81033DC(void)
+static bool8 DecideReelTurns_BiasTag_Reel3(void)
{
- u8 r3 = sSlotMachine->unk07;
- if (sSlotMachine->unk04 & 0x40)
+ u8 biasTag = sSlotMachine->biasTag;
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_MIXED_777)
{
- r3 = 0;
- if (sSlotMachine->unk07 == 0)
+ biasTag = SLOT_MACHINE_TAG_7_RED;
+ if (sSlotMachine->biasTag == SLOT_MACHINE_TAG_7_RED)
{
- r3 = 1;
+ biasTag = SLOT_MACHINE_TAG_7_BLUE;
}
}
- return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3);
+ return DecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag);
}
-/*static */bool8 sub_810341C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 biasTag)
{
s16 i;
- s16 unk34_1 = sSlotMachine->unk34[1];
+ s16 biasTagLocation_Reel2 = sSlotMachine->winnerRows[1];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
+ // if the biasTag appears in the same row as in reel 2 within 4 turns
+ if (GetNearbyTag(2, biasTagLocation_Reel2 - i) == biasTag)
{
- sSlotMachine->unk34[2] = unk34_1;
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagLocation_Reel2;
+ sSlotMachine->reelExtraTurns[2] = i;
return TRUE;
}
}
return FALSE;
}
-/*static */bool8 sub_810347C(u8 a0)
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 biasTag)
{
s16 i;
- s16 r8;
- if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1])
- return sub_810341C(a0);
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ s16 biasTagFinalPos;
+ // if the final position of the biasTag matches in reel 1 and reel 2...
+ if (sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1])
+ //...then try to line it up in reel 3
+ return DecideReelTurns_BiasTag_Reel3_Bet1or2(biasTag);
+ // else place it in the row opposite reel 1's
+ if (sSlotMachine->winnerRows[0] == 1)
+ biasTagFinalPos = 3;
else
- r8 = 1;
+ biasTagFinalPos = 1;
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
+ // if the biasTag lands in that position within 4 turns
+ if (GetNearbyTag(2, biasTagFinalPos - i) == biasTag)
{
- sSlotMachine->unk2E[2] = i;
- sSlotMachine->unk34[2] = r8;
+ sSlotMachine->reelExtraTurns[2] = i;
+ sSlotMachine->winnerRows[2] = biasTagFinalPos;
return TRUE;
}
}
return FALSE;
}
-/*static */void sub_81034F4(void)
+// Advance until there are no cherries on screen in reel 1
+
+static void DecideReelTurns_NoBiasTag_Reel1(void)
{
s16 i = 0;
- while (sub_81030E0(i) != 0)
+ while (AreCherriesOnScreen_Reel1(i) != 0)
i++;
- sSlotMachine->unk2E[0] = i;
+ sSlotMachine->reelExtraTurns[0] = i;
}
-/*static */bool8 sub_8103520(u8 *a0)
+static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr)
{
- if (*a0 == 0)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_RED)
{
- *a0 = 1;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_BLUE;
return TRUE;
}
- if (*a0 == 1)
+ if (*biasTagPtr == SLOT_MACHINE_TAG_7_BLUE)
{
- *a0 = 0;
+ *biasTagPtr = SLOT_MACHINE_TAG_7_RED;
return TRUE;
}
return FALSE;
}
-/*static */void sub_8103540(void)
+static void DecideReelTurns_NoBiasTag_Reel2(void)
{
- gUnknown_083ECB88[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103564(void)
+// only does stuff if the biasTag is one of the 7's, plus other conditions
+static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
+ //...and if the biasTag appears within 4 turns
+ if (biasTag == GetNearbyTag(1, 2 - i))
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2119,20 +2177,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void j5_08111E84(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void)
{
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap color of biasTag...
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i))
+ //...and if the biasTag appears in same row in reel 2 within 4 turns
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - i))
{
- sSlotMachine->unk34[1] = sSlotMachine->unk34[0];
- sSlotMachine->unk2E[1] = i;
+ sSlotMachine->winnerRows[1] = sSlotMachine->winnerRows[0];
+ sSlotMachine->reelExtraTurns[1] = i;
break;
}
}
@@ -2140,61 +2201,65 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103668(void)
+static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void)
{
s16 i;
s16 j;
- if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
+ // if reel 1 has a biasTag and bit 7 is set in luckyFlags...
+ if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- if (sSlotMachine->unk34[0] == 2)
+ //...and if biasTag appeared in the center row of reel 1
+ if (sSlotMachine->winnerRows[0] == 2)
{
- j5_08111E84();
+ DecideReelTurns_NoBiasTag_Reel2_Bet2();
}
else
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- if (sub_8103520(&sp0))
+ u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ //...and if biasTag is one of the 7's...
+ if (IsBiasTag777_SwitchColor(&biasTag))
+ //...swap the color of the 7...
{
j = 2;
- if (sSlotMachine->unk34[0] == 3)
+ if (sSlotMachine->winnerRows[0] == 3)
j = 3;
for (i = 0; i < 2; i++, j--)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
+ if (biasTag == GetNearbyTag(1, j))
{
- sSlotMachine->unk34[1] = j;
- sSlotMachine->unk2E[1] = 0;
+ sSlotMachine->winnerRows[1] = j;
+ sSlotMachine->reelExtraTurns[1] = 0;
return;
}
}
for (j = 1; j < 5; j++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j))
+ if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - j))
{
- if (sSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->winnerRows[0] == 1)
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j + 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j + 1;
}
else
{
- sSlotMachine->unk34[1] = 1;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 1;
+ sSlotMachine->reelExtraTurns[1] = j;
}
}
else
{
if (j < 3)
{
- sSlotMachine->unk34[1] = 3;
- sSlotMachine->unk2E[1] = j;
+ sSlotMachine->winnerRows[1] = 3;
+ sSlotMachine->reelExtraTurns[1] = j;
}
else
{
- sSlotMachine->unk34[1] = 2;
- sSlotMachine->unk2E[1] = j - 1;
+ sSlotMachine->winnerRows[1] = 2;
+ sSlotMachine->reelExtraTurns[1] = j - 1;
}
}
return;
@@ -2205,149 +2270,159 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */bool8 sub_8103764(u8 a0, u8 a1)
+static bool8 AreTagsMixed77(u8 tag1, u8 tag2)
{
- if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
+static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE))
return TRUE;
else
return FALSE;
}
-/*static */bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
+static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3)
{
- if ((a0 == 0 && a1 == 1 && a2 == 0) ||
- (a0 == 1 && a1 == 0 && a2 == 1) ||
- (a0 == 0 && a1 == 0 && a2 == 1) ||
- (a0 == 1 && a1 == 1 && a2 == 0) ||
- (a0 == a1 && a0 == a2))
+ if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
+ (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ (tag1 == tag2 && tag1 == tag3))
{
return FALSE;
}
return TRUE;
}
-/*static */void sub_810380C(void)
+static void DecideReelTurns_NoBiasTag_Reel3(void)
{
- gUnknown_083ECB94[sSlotMachine->bet - 1]();
+ DecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1]();
}
-/*static */void sub_8103830(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void)
{
s16 i = 0;
- u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
- u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- if (r5 == r1)
+ u8 tag1 = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]);
+ u8 tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ // if tags match in first 2 reels...
+ if (tag1 == tag2)
{
+ //...spin until you get non-matching tag
while (1)
{
- u8 r0;
- if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
+ u8 tag3;
+ if (!(tag1 == (tag3 = GetNearbyTag(2, 2 - i)) || (tag1 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED)))
break;
i++;
}
}
- else if (sub_8103764(r5, r1))
+ else if (AreTagsMixed77(tag1, tag2))
{
- if (sSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
+ //...see if you can match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 == GetNearbyTag(2, 2 - i))
{
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
return;
}
}
}
+ // turn until you aren't matching with reel 1
i = 0;
while (1)
{
- if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
+ if (tag1 != GetNearbyTag(2, 2 - i))
break;
i++;
}
}
- sSlotMachine->unk2E[2] = i;
+ sSlotMachine->reelExtraTurns[2] = i;
}
-/*static */void sub_8103910(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void)
{
- s16 sp0 = 0;
+ s16 extraTurns = 0;
s16 i;
- u8 r7;
- u8 r6;
- u8 r4;
-
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
- {
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r7, r6))
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
+ {
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //...and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
+ //...try to match with reel 1 within 4 turns
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i);
- if (r7 == r4)
+ tag3 = GetNearbyTag(2, sSlotMachine->winnerRows[1] - i);
+ if (tag1 == tag3)
{
- sp0 = i;
+ extraTurns = i;
break;
}
}
}
}
+ // GUESS: spin until there's no possible match within 4 turns of you stopping
while (1)
{
- s16 r8;
- for (i = 1, r8 = 0; i < 4; i++)
+ s16 loopExit;
+ for (i = 1, loopExit = 0; i < 4; i++)
{
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
- if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80)))
+ tag1 = GetNearbyTag(0, i - sSlotMachine->reelExtraTurns[0]); // why does this update with i
+ tag2 = GetNearbyTag(1, i - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, i - extraTurns);
+ // if bit 7 of luckyFlags is unset...
+ //...and if all 3 tags match and they're not mixed 7s
+ if (!TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) && (!AreTagsMixed777(tag1, tag2, tag3) || !(sSlotMachine->luckyFlags & LUCKY_BIAS_777)))
{
- r8++;
+ loopExit++;
break;
}
}
- if (r8 == 0)
+ if (loopExit == 0)
break;
- sp0++;
+ extraTurns++;
}
- sSlotMachine->unk2E[2] = sp0;
+ sSlotMachine->reelExtraTurns[2] = extraTurns;
}
-/*static */void sub_8103A78(void)
+static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void)
{
- u8 r6;
- u8 r5;
- u8 r4;
- s16 r8;
+ u8 tag1;
+ u8 tag2;
+ u8 tag3;
+ s16 j;
s16 i;
- sub_8103910();
- if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
+ DecideReelTurns_NoBiasTag_Reel3_Bet2();
+ if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] != sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
- if (sub_8103764(r6, r5))
+ tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]);
+ //..and if tags are mixed 7s...
+ if (AreTagsMixed77(tag1, tag2))
{
- r8 = 1;
- if (sSlotMachine->unk34[0] == 1)
- r8 = 3;
+ j = 1;
+ if (sSlotMachine->winnerRows[0] == 1)
+ j = 3;
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i));
- if (r6 == r4)
+ tag3 = GetNearbyTag(2, j - (sSlotMachine->reelExtraTurns[2] + i));
+ if (tag1 == tag3)
{
- sSlotMachine->unk2E[2] += i;
+ sSlotMachine->reelExtraTurns[2] += i;
break;
}
}
@@ -2355,79 +2430,80 @@ s16 sub_8102D5C(s16 a0)
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 1 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 3 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
+ tag1 = GetNearbyTag(0, 3 - sSlotMachine->reelExtraTurns[0]);
+ tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]);
+ tag3 = GetNearbyTag(2, 1 - sSlotMachine->reelExtraTurns[2]);
+ if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777))
break;
- sSlotMachine->unk2E[2]++;
+ sSlotMachine->reelExtraTurns[2]++;
}
}
-/*static */void sub_8103C14(u8 a0)
+static void sub_8103C14(u8 a0)
{
u8 taskId = CreateTask(sub_8103C48, 5);
gTasks[taskId].data[15] = a0;
sub_8103C48(taskId);
}
-/*static */void sub_8103C48(u8 taskId)
+static void sub_8103C48(u8 taskId)
{
- gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId);
+ gUnknown_083ECBA0[gTasks[taskId].data[0]](&gTasks[taskId], taskId);
}
-/*static */void sub_8103C78(struct Task *task, u8 taskId)
+static void sub_8103C78(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
task->data[0]++;
}
-/*static */void sub_8103CAC(struct Task *task, u8 taskId)
+static void sub_8103CAC(struct Task *task, u8 taskId)
{
if (++task->data[1] > 11)
task->data[0]++;
}
-/*static */void sub_8103CC8(struct Task *task, u8 taskId)
+static void sub_8103CC8(struct Task *task, u8 taskId)
{
sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
DestroyTask(taskId);
}
-/*static */void sub_8103D00(u8 a0)
+static void LoadLitTile(u8 tileId)
{
- LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2);
+ LoadPalette(gUnknown_083EDD08[tileId], gUnknown_083EDD30[tileId], 2);
}
-/*static */void sub_8103D28(u8 a0)
+static void sub_8103D28(u8 a0)
{
LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
}
-/*static */void sub_8103D50(u8 a0)
+// light up the value bet by the player
+static void LoadBetTiles(u8 betVal)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D00(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[betVal]; i++)
+ LoadLitTile(gBettingTilesId[betVal][i]);
}
-/*static */void sub_8103D8C(u8 a0)
+static void sub_8103D8C(u8 a0)
{
u8 i;
- for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- sub_8103D28(gUnknown_083EDD35[a0][i]);
+ for (i = 0; i < gNumberBettingTiles[a0]; i++)
+ sub_8103D28(gBettingTilesId[a0][i]);
}
-/*static */void sub_8103DC8(void)
+static void sub_8103DC8(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2438,7 +2514,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103E04(u8 a0)
+static void sub_8103E04(u8 a0)
{
struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
sprite->data[1] = 1;
@@ -2449,7 +2525,8 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */bool8 sub_8103E38(void)
+// something with payout digits
+static bool8 sub_8103E38(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2461,7 +2538,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103E7C(void)
+static bool8 sub_8103E7C(void)
{
u8 i;
for (i = 0; i < 5; i++)
@@ -2472,7 +2549,7 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */bool8 sub_8103EAC(u8 spriteId)
+static bool8 sub_8103EAC(u8 spriteId)
{
struct Sprite *sprite = gSprites + spriteId;
if (!sprite->data[1])
@@ -2482,7 +2559,7 @@ s16 sub_8102D5C(s16 a0)
return sprite->data[7];
}
-/*static */void sub_8103EE4(struct Sprite *sprite)
+static void sub_8103EE4(struct Sprite *sprite)
{
s16 r4;
if (sprite->data[1])
@@ -2511,14 +2588,14 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8103F70(void)
+static void sub_8103F70(void)
{
u8 taskId = CreateTask(sub_8103FE8_, 6);
gTasks[taskId].data[3] = 1;
sub_8103FE8_(taskId);
}
-/*static */bool8 sub_8103FA0(void)
+static bool8 sub_8103FA0(void)
{
u8 taskId = FindTaskIdByFunc(sub_8103FE8_);
if (!gTasks[taskId].data[2])
@@ -2530,9 +2607,9 @@ s16 sub_8102D5C(s16 a0)
return FALSE;
}
-/*static */void sub_8103FE8_(u8 taskId)
+static void sub_8103FE8_(u8 taskId)
{
- struct Task *task = gTasks + taskId;
+ struct Task *task = &gTasks[taskId];
if (!task->data[1]--)
{
task->data[1] = 4;
@@ -2543,49 +2620,49 @@ s16 sub_8102D5C(s16 a0)
LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
}
-/*static */void sub_8104048(void)
+static void GameplayTask_PikaPower(void)
{
- sSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+ sSlotMachine->unkTaskPointer3E = CreateTask(sub_81040E8, 8);
}
-/*static */void sub_8104064(u8 pikaPower)
+static void DisplayPikaPower(u8 pikaPower)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 1;
task->data[1]++;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */void sub_8104098(void)
+static void sub_8104098(void)
{
- struct Task *task = gTasks + sSlotMachine->unk3E;
- sub_812D394(task);
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
+ ClearTaskDataFields_2orHigher(task);
task->data[0] = 3;
- task->data[15] = 1;
+ task->data[15] = 1; // points to a reelIndex
}
-/*static */bool8 sub_81040C8(void)
+static bool8 sub_81040C8(void)
{
- return gTasks[sSlotMachine->unk3E].data[15];
+ return gTasks[sSlotMachine->unkTaskPointer3E].data[15];
}
-/*static */void sub_81040E8(u8 taskId)
+static void sub_81040E8(u8 taskId)
{
- gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECBB4[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_68(struct Task *task)
+static void nullsub_68(struct Task *task)
{
}
-/*static */void sub_810411C(struct Task *task)
+static void sub_810411C(struct Task *task)
{
task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
task->data[0]++;
}
-/*static */void sub_8104144(struct Task *task)
+static void sub_8104144(struct Task *task)
{
if (gSprites[task->data[2]].data[7])
{
@@ -2596,15 +2673,15 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r2 = 1;
else if (task->data[1] == 16)
r3 = 2, r2 = 2;
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
sub_8105B88(task->data[2]);
task->data[0] = 0;
- task->data[15] = 0;
+ task->data[15] = 0; // points to a reelIndex
}
}
-/*static */void sub_81041AC(struct Task *task)
+static void sub_81041AC(struct Task *task)
{
s16 r5 = task->data[1] + 2;
s16 r3 = 0;
@@ -2615,8 +2692,8 @@ s16 sub_8102D5C(s16 a0)
r3 = 2, r2 = 2;
if (task->data[2] == 0)
{
- gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40);
+ sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
task->data[1]--;
}
if (++task->data[2] >= 20)
@@ -2628,7 +2705,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812D394(struct Task *task)
+static void ClearTaskDataFields_2orHigher(struct Task *task)
{
u8 i;
@@ -2636,7 +2713,8 @@ s16 sub_8102D5C(s16 a0)
task->data[i] = 0;
}
-/*static */void sub_810423C(u8 pikaPower)
+// possibly load tiles for pika power meter
+static void sub_810423C(u8 pikaPower)
{
s16 i;
s16 r3 = 0, r1 = 0;
@@ -2646,10 +2724,10 @@ s16 sub_8102D5C(s16 a0)
r3 = 0, r1 = 0;
if (i == 0)
r3 = 1, r1 = 1;
- else if (i == 15)
+ else if (i == 15) // pikaPower meter is full
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][0];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][0];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
for (; i < 16; i++, r4++)
{
@@ -2658,39 +2736,43 @@ s16 sub_8102D5C(s16 a0)
r3 = 1, r1 = 1;
else if (i == 15)
r3 = 2, r1 = 2;
- gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][1];
- LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40);
+ sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][1];
+ LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
- gTasks[sSlotMachine->unk3E].data[1] = pikaPower;
+ gTasks[sSlotMachine->unkTaskPointer3E].data[1] = pikaPower;
}
-/*static */void sub_810430C(void)
+static void BeginReeltime(void)
{
- u8 taskId = CreateTask(sub_810434C, 7);
- sub_810434C(taskId);
+ u8 taskId = CreateTask(RunReeltimeActions, 7);
+ RunReeltimeActions(taskId);
}
-/*static */bool8 sub_810432C(void)
+static bool8 IsFinalTask_RunReelTimeActions(void)
{
- if (FindTaskIdByFunc(sub_810434C) == 0xFF)
+ if (FindTaskIdByFunc(RunReeltimeActions) == TAIL_SENTINEL)
return TRUE;
return FALSE;
}
-/*static */void sub_810434C(u8 taskId)
+static void RunReeltimeActions(u8 taskId)
{
- gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId);
+ // task.data[0] points to which ReelTimeAction to do, and starts at 0
+ // task.data[1] has something to do with the threshold
+ // task.data[4] says how many pixels to advance the reel
+ // task.data[5] is a timer
+ ReeltimeActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_810437C(struct Task *task)
+static void ReeltimeAction0(struct Task *task)
{
- sSlotMachine->unk0A = 0;
- sSlotMachine->unk14 = 0;
- sSlotMachine->unk16 = 0;
+ sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->reeltimePixelOffset = 0;
+ sSlotMachine->reeltimePosition = 0;
task->data[0]++;
task->data[1] = 0;
task->data[2] = 30;
- task->data[4] = 1280;
+ task->data[4] = 1280; // reel speed
gSpriteCoordOffsetX = 0;
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2701,12 +2783,12 @@ s16 sub_8102D5C(s16 a0)
sub_81052EC();
sub_81053A0();
sub_810545C();
- sub_8102680();
+ GetReeltimeDraw();
StopMapMusic();
PlayNewMapMusic(MUS_BD_TIME);
}
-/*static */void sub_81043EC(struct Task *task)
+static void ReeltimeAction1(struct Task *task)
{
s16 r3;
gSpriteCoordOffsetX -= 8;
@@ -2724,21 +2806,21 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
task->data[3] = 0;
}
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
}
-/*static */void sub_8104468(struct Task *task)
+static void ReeltimeAction2(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 60)
{
task->data[0]++;
- sub_8105578();
- sub_81056F0();
+ CreateReelTimeSprites1();
+ CreateReelTimeSprite2();
}
}
-/*static */void sub_8104498(struct Task *task)
+static void ReeltimeAction3(struct Task *task)
{
int r5;
u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)];
@@ -2749,12 +2831,14 @@ s16 sub_8102D5C(s16 a0)
memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4));
memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC));
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ // gradually slow down the reel
task->data[4] -= 4;
r5 = 4 - (task->data[4] >> 8);
sub_8105688(sp4[r5]);
sub_81057E8(spC[r5]);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, sp0[r5]);
+ // once speed goes below 256, go to next ReelTimeAction and keep the speed level
if (task->data[4] <= 0x100)
{
task->data[0]++;
@@ -2763,21 +2847,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104548(struct Task *task)
+static void ReeltimeAction4(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 80)
{
task->data[0]++;
task->data[5] = 0;
sub_81057E8(2);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 3);
}
}
-/*static */void sub_8104598(struct Task *task)
+static void ReeltimeAction5(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x80;
if (++task->data[5] >= 80)
{
@@ -2786,23 +2870,23 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81045CC(struct Task *task)
+static void ReeltimeAction6(struct Task *task)
{
- sub_8102D28(task->data[4] >> 8);
+ AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
if (++task->data[5] >= 40)
{
task->data[5] = 0;
- if (sSlotMachine->unk05)
+ if (sSlotMachine->reelTimeDraw)
{
- if (sSlotMachine->unk0A <= task->data[6])
+ if (sSlotMachine->fairRollsLeft <= task->data[6])
task->data[0]++;
}
else if (task->data[6] > 3)
{
task->data[0]++;
}
- else if (sub_81026DC(task->data[6]))
+ else if (SkipToReeltimeAction14(task->data[6]))
{
task->data[0] = 14;
}
@@ -2810,28 +2894,28 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_810463C(struct Task *task)
+static void ReelTimeAction_LandOnOutcome(struct Task *task)
{
- s16 r5 = sSlotMachine->unk14 % 20;
- if (r5)
+ s16 reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
+ if (reeltimePixelOffset)
{
- r5 = sub_8102D5C(task->data[4] >> 8);
+ reeltimePixelOffset = AdvanceReeltimeReelToNextTag(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
}
- else if (sub_8102C48(1) != sSlotMachine->unk05)
+ else if (GetNearbyReelTimeTag(1) != sSlotMachine->reelTimeDraw)
{
- sub_8102D28(task->data[4] >> 8);
- r5 = sSlotMachine->unk14 % 20;
+ AdvanceReeltimeReel(task->data[4] >> 8);
+ reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
task->data[4] = (u8)task->data[4] + 0x40;
}
- if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05)
+ if (reeltimePixelOffset == 0 && GetNearbyReelTimeTag(1) == sSlotMachine->reelTimeDraw)
{
- task->data[4] = 0;
+ task->data[4] = 0; // stop moving
task->data[0]++;
}
}
-/*static */void sub_81046C0(struct Task *task)
+static void ReeltimeAction8(struct Task *task)
{
if (++task->data[4] >= 60)
{
@@ -2839,17 +2923,17 @@ s16 sub_8102D5C(s16 a0)
sub_81056C0();
sub_8105804();
task->data[0]++;
- if(sSlotMachine->unk05 == 0)
+ if(sSlotMachine->reelTimeDraw == 0)
{
task->data[4] = 0xa0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
PlayFanfare(MUS_ME_ZANNEN);
}
else
{
task->data[4] = 0xc0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4);
- gSprites[sSlotMachine->unk3F].animCmdIndex = 0;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 4);
+ gSprites[sSlotMachine->reelTimeSprite3F].animCmdIndex = 0;
if (sSlotMachine->pikaPower)
{
sub_8104098();
@@ -2860,13 +2944,13 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104764(struct Task *task)
+static void ReeltimeAction9(struct Task *task)
{
if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
task->data[0]++;
}
-/*static */void sub_8104794(struct Task *task)
+static void ReeltimeAction10(struct Task *task)
{
s16 r4;
gSpriteCoordOffsetX -= 8;
@@ -2880,53 +2964,53 @@ s16 sub_8102D5C(s16 a0)
task->data[0]++;
}
-/*static */void sub_81047EC(struct Task *task)
+static void ReeltimeAction11(struct Task *task)
{
- sSlotMachine->unk0B = 0;
- sSlotMachine->unk0A = sSlotMachine->unk05;
+ sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->fairRollsLeft = sSlotMachine->reelTimeDraw;
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
- sSlotMachine->unk1A = 8;
+ sSlotMachine->reelIncrement = 8;
sub_810514C();
sub_81054B8();
sub_8105524();
PlayNewMapMusic(sSlotMachine->backupMapMusic);
- if (sSlotMachine->unk0A == 0)
+ if (sSlotMachine->fairRollsLeft == 0)
{
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
else
{
sub_8104CAC(4);
- task->data[1] = dp15_jump_random_unknown();
+ task->data[1] = SlowReelSpeed();
task->data[2] = 0;
task->data[3] = 0;
task->data[0]++;
}
}
-/*static */void sub_8104860(struct Task *task)
+static void ReeltimeAction12(struct Task *task)
{
- if (sSlotMachine->unk1A == task->data[1])
+ if (sSlotMachine->reelIncrement == task->data[1])
task->data[0]++;
- else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
- sSlotMachine->unk1A >>= 1;
+ else if (sSlotMachine->reelPixelOffsets[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ sSlotMachine->reelIncrement >>= 1;
}
-/*static */void sub_81048A8(struct Task *task)
+static void ReeltimeAction13(struct Task *task)
{
if (sub_8104E18())
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_81048CC(struct Task *task)
+static void ReeltimeAction14(struct Task *task)
{
sub_81054B8();
sub_81056C0();
sub_8105804();
sub_8105854();
gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
task->data[0]++;
task->data[4] = 4;
task->data[5] = 0;
@@ -2935,7 +3019,7 @@ s16 sub_8102D5C(s16 a0)
PlaySE(SE_W153);
}
-/*static */void sub_8104940(struct Task *task)
+static void ReeltimeAction15(struct Task *task)
{
gSpriteCoordOffsetY = task->data[4];
SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]);
@@ -2955,7 +3039,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049C8(struct Task *task)
+static void ReeltimeAction16(struct Task *task)
{
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
@@ -2966,7 +3050,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81049F8(struct Task *task)
+static void ReeltimeAction17(struct Task *task)
{
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
@@ -2975,20 +3059,20 @@ s16 sub_8102D5C(s16 a0)
sub_8105554();
sub_8105524();
sub_81059B8();
- DestroyTask(FindTaskIdByFunc(sub_810434C));
+ DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
}
-/*static */void sub_8104A40(s16 a0, s16 a1)
+static void sub_8104A40(s16 a0, s16 a1)
{
s16 i;
for (i = 4; i < 15; i++)
{
- LoadBgTilemap(1, &sReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
+ LoadBgTilemap(1, &gReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
}
}
-/*static */void sub_8104A88(s16 a0)
+static void sub_8104A88(s16 a0)
{
u8 i;
@@ -2998,61 +3082,61 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104AB8(u8 a0)
+static void OpenInfoBox(u8 seemsUnused)
{
- u8 taskId = CreateTask(sub_8104B0C, 1);
- gTasks[taskId].data[1] = a0;
- sub_8104B0C(taskId);
+ u8 taskId = CreateTask(RunInfoBoxActions, 1);
+ gTasks[taskId].data[1] = seemsUnused;
+ RunInfoBoxActions(taskId);
}
-/*static */bool8 sub_8104AEC(void)
+static bool8 IsInfoBoxClosed(void)
{
- if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
+ if (FindTaskIdByFunc(RunInfoBoxActions) == 0xFF)
return TRUE;
else
return FALSE;
}
-/*static */void sub_8104B0C(u8 taskId)
+static void RunInfoBoxActions(u8 taskId)
{
- gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId);
+ InfoBoxActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void sub_8104B3C(struct Task *task)
+static void InfoBox_FadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104B60(struct Task *task)
+static void InfoBox_WaitForFade(struct Task *task)
{
if (!gPaletteFade.active)
task->data[0]++;
}
-/*static */void sub_8104B80(struct Task *task)
+static void InfoBox_8104B80(struct Task *task)
{
sub_8104DA4();
sub_81065DC();
AddWindow(&gUnknown_085A7444);
PutWindowTilemap(1);
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
task->data[0]++;
}
-/*static */void sub_812DD78(struct Task *task)
+static void InfoBox_AddText(struct Task *task)
{
- AddTextPrinterParameterized3(1, 1, 2, 5, gUnknown_085A744C, 0, gText_ReelTimeHelp);
+ AddTextPrinterParameterized3(1, 1, 2, 5, gColors_ReeltimeHelp, 0, gText_ReelTimeHelp);
CopyWindowToVram(1, 3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104BC8(struct Task *task)
+static void InfoBox_AwaitPlayerInput(struct Task *task)
{
if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
ClearWindowTilemap(1);
CopyWindowToVram(1, 1);
RemoveWindow(1);
@@ -3061,51 +3145,52 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_812DE14(struct Task *task)
+static void InfoBox_812DE14(struct Task *task)
{
sub_812F968();
ShowBg(3);
task->data[0]++;
}
-/*static */void sub_812DE30(struct Task *task)
+static void InfoBox_812DE30(struct Task *task)
{
sub_8104CAC(task->data[1]);
task->data[0]++;
}
-/*static */void sub_8104BFC(struct Task *task)
+static void InfoBox_8104BFC(struct Task *task)
{
sub_810423C(sSlotMachine->pikaPower);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
-/*static */void sub_8104C44(struct Task *task)
+static void InfoBox_FreeTask(struct Task *task)
{
- DestroyTask(FindTaskIdByFunc(sub_8104B0C));
+ DestroyTask(FindTaskIdByFunc(RunInfoBoxActions));
}
-/*static */void sub_8104C5C(void)
+static void sub_8104C5C(void)
{
u8 i;
struct Task *task;
i = CreateTask(sub_8104E74_, 3);
- sSlotMachine->unk3D = i;
- task = gTasks + i;
+ sSlotMachine->unkTaskPointer3D = i;
+ task = &gTasks[i];
task->data[1] = -1;
for (i = 4; i < 16; i++)
task->data[i] = MAX_SPRITES;
}
-/*static */void sub_8104CAC(u8 arg0)
+// possibly initialize each wheel
+static void sub_8104CAC(u8 arg0)
{
u8 i;
struct Task *task;
sub_8104DA4();
- task = gTasks + sSlotMachine->unk3D;
+ task = &gTasks[sSlotMachine->unkTaskPointer3D];
task->data[1] = arg0;
for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
@@ -3120,10 +3205,10 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] == MAX_SPRITES)
@@ -3134,26 +3219,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8104DA4(void)
+static void sub_8104DA4(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
if ((u16)task->data[1] != 0xFFFF)
gUnknown_083ED064[task->data[1]]();
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
{
- DestroySprite(gSprites + task->data[i]);
+ DestroySprite(&gSprites[task->data[i]]);
task->data[i] = MAX_SPRITES;
}
}
}
-/*static */bool8 sub_8104E18(void)
+static bool8 sub_8104E18(void)
{
u8 i;
- struct Task *task = gTasks + sSlotMachine->unk3D;
+ struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
@@ -3165,16 +3250,16 @@ s16 sub_8102D5C(s16 a0)
return TRUE;
}
-/*static */void sub_8104E74_(u8 taskId)
+static void sub_8104E74_(u8 taskId)
{
- gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId);
+ gUnknown_083ECC54[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-/*static */void nullsub_69(struct Task *task)
+static void nullsub_69(struct Task *task)
{
}
-/*static */void sub_8104EA8(void)
+static void sub_8104EA8(void)
{
s16 i;
s16 j;
@@ -3194,14 +3279,14 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_8104F18(struct Sprite *sprite)
{
- sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
- sprite->pos1.y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
- sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
+ sprite->pos1.y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->sheetTileStart = GetSpriteTileStartByTag(GetNearbyTag_Quantized(sprite->data[0], sprite->data[2] / 24));
SetSpriteSheetFrameTileNum(sprite);
}
-/*static */void sub_8104F8C(void)
+static void sub_8104F8C(void)
{
s16 i;
s16 x;
@@ -3212,7 +3297,7 @@ s16 sub_8102D5C(s16 a0)
sub_8104FF4(x, 23, 1, i);
}
-/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
{
struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
sprite->oam.priority = 2;
@@ -3238,44 +3323,44 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81050C4(void)
+static void sub_81050C4(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
gSprites[spriteId].oam.priority = 3;
SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
}
-/*static */void sub_8105100(void)
+static void sub_8105100(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
- if (gUnknown_0203AAE4 == NULL)
- gUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
-
- gUnknown_0203AAE4[0].data = gUnknown_0203AAD8 + (0 * 0x800);
- gUnknown_0203AAE4[0].size = 0x800;
- gUnknown_0203AAE4[1].data = gUnknown_0203AAD8 + (1 * 0x800);
- gUnknown_0203AAE4[1].size = 0x800;
- gUnknown_0203AAE4[2].data = gUnknown_0203AAD8 + (2 * 0x800);
- gUnknown_0203AAE4[2].size = 0x800;
- gUnknown_0203AAE4[3].data = gUnknown_0203AAD8 + (3 * 0x800);
- gUnknown_0203AAE4[3].size = 0x800;
- gUnknown_0203AAE4[4].data = gUnknown_0203AAD8 + (4 * 0x800);
- gUnknown_0203AAE4[4].size = 0x800;
+ if (sUnknown_0203AAE4 == NULL)
+ sUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+
+ sUnknown_0203AAE4[0].data = sUnknown_0203AAD8 + (0 * 0x800);
+ sUnknown_0203AAE4[0].size = 0x800;
+ sUnknown_0203AAE4[1].data = sUnknown_0203AAD8 + (1 * 0x800);
+ sUnknown_0203AAE4[1].size = 0x800;
+ sUnknown_0203AAE4[2].data = sUnknown_0203AAD8 + (2 * 0x800);
+ sUnknown_0203AAE4[2].size = 0x800;
+ sUnknown_0203AAE4[3].data = sUnknown_0203AAD8 + (3 * 0x800);
+ sUnknown_0203AAE4[3].size = 0x800;
+ sUnknown_0203AAE4[4].data = sUnknown_0203AAD8 + (4 * 0x800);
+ sUnknown_0203AAE4[4].size = 0x800;
spriteTemplate = gSpriteTemplate_83ED45C;
- spriteTemplate.images = gUnknown_0203AAE4;
+ spriteTemplate.images = sUnknown_0203AAE4;
spriteId = CreateSprite(&spriteTemplate, 280, 80, 1);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].coordOffsetEnabled = TRUE;
- sSlotMachine->unk3F = spriteId;
+ sSlotMachine->reelTimeSprite3F = spriteId;
}
-/*static */void sub_810514C(void)
+static void sub_810514C(void)
{
- DestroySprite(gSprites + sSlotMachine->unk3F);
- if (gUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE4);
+ DestroySprite(gSprites + sSlotMachine->reelTimeSprite3F);
+ if (sUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE4);
}
/*static */void sub_8105170(struct Sprite *sprite)
@@ -3289,19 +3374,19 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81051C0(void)
+static void sub_81051C0(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAE8 == NULL)
- gUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAE8 == NULL)
+ sUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAE8[0].data = gUnknown_0203AAD8 + 0x2800;
- gUnknown_0203AAE8[0].size = 0x300;
+ sUnknown_0203AAE8[0].data = sUnknown_0203AAD8 + 0x2800;
+ sUnknown_0203AAE8[0].size = 0x300;
spriteTemplate = gSpriteTemplate_83ED474;
- spriteTemplate.images = gUnknown_0203AAE8;
+ spriteTemplate.images = sUnknown_0203AAE8;
spriteId = CreateSprite(&spriteTemplate, 368, 52, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3309,13 +3394,13 @@ s16 sub_8102D5C(s16 a0)
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
sSlotMachine->unk49[0] = spriteId;
- if (gUnknown_0203AAEC == NULL)
- gUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAEC == NULL)
+ sUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAEC[0].data = gUnknown_0203AAD8 + 0x2800 + 0x300;
- gUnknown_0203AAEC[0].size = 0x500;
+ sUnknown_0203AAEC[0].data = sUnknown_0203AAD8 + 0x2800 + 0x300;
+ sUnknown_0203AAEC[0].size = 0x500;
spriteTemplate = gSpriteTemplate_83ED48C;
- spriteTemplate.images = gUnknown_0203AAEC;
+ spriteTemplate.images = sUnknown_0203AAEC;
spriteId = CreateSprite(&spriteTemplate, 368, 84, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3324,19 +3409,19 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk49[1] = spriteId;
}
-/*static */void sub_8105284_(void)
+static void sub_8105284_(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (gUnknown_0203AAF0 == NULL)
- gUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sUnknown_0203AAF0 == NULL)
+ sUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF0[0].data = gUnknown_0203AAD8 + 0x3000;
- gUnknown_0203AAF0[0].size = 0x600;
+ sUnknown_0203AAF0[0].data = sUnknown_0203AAD8 + 0x3000;
+ sUnknown_0203AAF0[0].size = 0x600;
spriteTemplate = gSpriteTemplate_83ED4A4;
- spriteTemplate.images = gUnknown_0203AAF0;
+ spriteTemplate.images = sUnknown_0203AAF0;
spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -3345,7 +3430,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk42 = spriteId;
}
-/*static */void sub_81052EC(void)
+static void sub_81052EC(void)
{
u8 i;
s16 r5;
@@ -3362,13 +3447,13 @@ s16 sub_8102D5C(s16 a0)
/*static */void sub_810535C(struct Sprite *sprite)
{
- s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]);
+ s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]);
r0 %= 40;
sprite->pos1.y = r0 + 59;
- StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
+ StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20));
}
-/*static */void sub_81053A0(void)
+static void sub_81053A0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3385,7 +3470,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk4E[1] = spriteId;
}
-/*static */void sub_810545C(void)
+static void sub_810545C(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3395,7 +3480,7 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->unk40 = spriteId;
}
-/*static */void sub_81054B8(void)
+static void sub_81054B8(void)
{
u8 i;
@@ -3403,16 +3488,16 @@ s16 sub_8102D5C(s16 a0)
for (i = 0; i < 2; i++)
DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
- if (gUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAE8);
- if (gUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAEC);
+ if (sUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAE8);
+ if (sUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAEC);
for (i = 0; i < 3; i++)
DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
}
-/*static */void sub_8105524(void)
+static void sub_8105524(void)
{
u8 i;
@@ -3420,20 +3505,21 @@ s16 sub_8102D5C(s16 a0)
DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
}
-/*static */void sub_8105554(void)
+static void sub_8105554(void)
{
DestroySprite(&gSprites[sSlotMachine->unk42]);
- if (gUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(gUnknown_0203AAF0);
+ if (sUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(sUnknown_0203AAF0);
}
-/*static */void sub_8105578(void)
+// TODO: check if this is true
+static void CreateReelTimeSprites1(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
- sSlotMachine->unk50[0] = spriteId;
+ sSlotMachine->reelTimeSprites1[0] = spriteId;
sprite->data[0] = 8;
sprite->data[1] = -1;
sprite->data[2] = -1;
@@ -3442,7 +3528,7 @@ s16 sub_8102D5C(s16 a0)
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
- sSlotMachine->unk50[1] = spriteId;
+ sSlotMachine->reelTimeSprites1[1] = spriteId;
sprite->data[1] = 1;
sprite->data[2] = -1;
sprite->data[7] = 0x20;
@@ -3470,21 +3556,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105688(s16 a0)
+static void sub_8105688(s16 a0)
{
- gSprites[sSlotMachine->unk50[0]].data[7] = a0;
- gSprites[sSlotMachine->unk50[1]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites1[1]].data[7] = a0;
}
-/*static */void sub_81056C0(void)
+static void sub_81056C0(void)
{
u8 i;
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk50[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites1[i]]);
}
-/*static */void sub_81056F0(void)
+static void CreateReelTimeSprite2(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
@@ -3492,12 +3578,12 @@ s16 sub_8102D5C(s16 a0)
gSprites[spriteId].data[5] = 0;
gSprites[spriteId].data[6] = 16;
gSprites[spriteId].data[7] = 8;
- sSlotMachine->unk52[0] = spriteId;
+ sSlotMachine->reelTimeSprites2[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].hFlip = TRUE;
- sSlotMachine->unk52[1] = spriteId;
+ sSlotMachine->reelTimeSprites2[1] = spriteId;
}
/*static */void sub_8105784(struct Sprite *sprite)
@@ -3512,20 +3598,20 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81057E8(s16 a0)
+static void sub_81057E8(s16 a0)
{
- gSprites[sSlotMachine->unk52[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeSprites2[0]].data[7] = a0;
}
-/*static */void sub_8105804(void)
+static void sub_8105804(void)
{
u8 i;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk52[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeSprites2[i]]);
}
-/*static */void sub_8105854(void)
+static void sub_8105854(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
gSprites[spriteId].oam.priority = 1;
@@ -3537,12 +3623,12 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y = gSpriteCoordOffsetY;
}
-/*static */void sub_81058A0(void)
+static void sub_81058A0(void)
{
DestroySprite(&gSprites[sSlotMachine->unk41]);
}
-/*static */void sub_81058C4(void)
+static void sub_81058C4(void)
{
u8 i;
u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
@@ -3575,7 +3661,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059B8(void)
+static void sub_81059B8(void)
{
u8 i;
for (i = 0; i < 4; i++)
@@ -3584,7 +3670,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81059E8(void)
+static void sub_81059E8(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3621,19 +3707,19 @@ s16 sub_8102D5C(s16 a0)
sprite->pos2.y -= (sprite->data[1] >> 8);
}
-/*static */u8 sub_8105ACC(void)
+static u8 sub_8105ACC(void)
{
return gSprites[sSlotMachine->unk43].data[7];
}
-/*static */void sub_8105AEC(void)
+static void sub_8105AEC(void)
{
struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105B1C(s16 x, s16 y)
+static u8 sub_8105B1C(s16 x, s16 y)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
struct Sprite *sprite = &gSprites[spriteId];
@@ -3649,19 +3735,19 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 1;
}
-/*static */void sub_8105B88(u8 spriteId)
+static void sub_8105B88(u8 spriteId)
{
struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
{
return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
}
-/*static */u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
@@ -3680,12 +3766,12 @@ s16 sub_8102D5C(s16 a0)
return spriteId;
}
-/*static */void sub_8105C64(struct Sprite *sprite)
+static void sub_8105C64(struct Sprite *sprite)
{
sprite->data[7] = 0;
}
-/*static */void sub_8105C6C(struct Sprite *sprite)
+static void sub_8105C6C(struct Sprite *sprite)
{
s16 sp0[] = {4, -4, 4, -4};
s16 sp8[] = {4, 4, -4, -4};
@@ -3704,26 +3790,26 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105CF0(struct Sprite *sprite)
+static void sub_8105CF0(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D08(struct Sprite *sprite)
+static void sub_8105D08(struct Sprite *sprite)
{
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D20(struct Sprite *sprite)
+static void sub_8105D20(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sprite->vFlip = TRUE;
sub_8105C6C(sprite);
}
-/*static */void sub_8105D3C(struct Sprite *sprite)
+static void sub_8105D3C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3750,7 +3836,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105DA4(struct Sprite *sprite)
+static void sub_8105DA4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3777,12 +3863,12 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105E08(struct Sprite *sprite)
+static void sub_8105E08(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
- StartSpriteAnim(sprite, sSlotMachine->unk0A - 1);
+ StartSpriteAnim(sprite, sSlotMachine->fairRollsLeft - 1);
sprite->data[0]++;
// fallthrough
case 1:
@@ -3815,7 +3901,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105EB4(struct Sprite *sprite)
+static void sub_8105EB4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3855,7 +3941,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F54(struct Sprite *sprite)
+static void sub_8105F54(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3875,7 +3961,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8105F9C(struct Sprite *sprite)
+static void sub_8105F9C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -3909,7 +3995,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_8106058(struct Sprite *sprite)
+static void sub_8106058(struct Sprite *sprite)
{
if (sprite->data[1] < 3)
{
@@ -3933,7 +4019,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[7] = 0;
}
-/*static */void sub_81060FC(struct Sprite *sprite)
+static void sub_81060FC(struct Sprite *sprite)
{
s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
@@ -3968,7 +4054,7 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void sub_81061C8(struct Sprite *sprite)
+static void sub_81061C8(struct Sprite *sprite)
{
s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
@@ -3983,7 +4069,7 @@ s16 sub_8102D5C(s16 a0)
sprite->data[1]--;
}
-/*static */void sub_8106230(struct Sprite *sprite)
+static void sub_8106230(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -4037,21 +4123,21 @@ s16 sub_8102D5C(s16 a0)
}
}
-/*static */void nullsub_70(void)
+static void nullsub_70(void)
{
}
-/*static */void sub_8106364(void)
+static void sub_8106364(void)
{
SetGpuReg(REG_OFFSET_MOSAIC, 0);
}
-/*static */void sub_8106370(void)
+static void sub_8106370(void)
{
LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
}
-/*static */void sub_810639C(void)
+static void sub_810639C(void)
{
sSlotMachine->win0h = 0xf0;
sSlotMachine->win0v = 0xa0;
@@ -4059,47 +4145,47 @@ s16 sub_8102D5C(s16 a0)
sSlotMachine->winOut = 0x3f;
}
-/*static */void sub_81063C0(void)
+static void sub_81063C0(void)
{
u8 i;
sub_8106404();
- gUnknown_0203AAD4 = Alloc(0x3200);
- LZDecompressWram(gSlotMachineReelTime_Gfx, gUnknown_0203AAD4);
- gUnknown_0203AAD8 = Alloc(0x3600);
- LZDecompressWram(sReelTimeGfx, gUnknown_0203AAD8);
- gUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
+ sUnknown_0203AAD4 = Alloc(0x3200);
+ LZDecompressWram(gSlotMachineReelTime_Gfx, sUnknown_0203AAD4);
+ sUnknown_0203AAD8 = Alloc(0x3600);
+ LZDecompressWram(gReelTimeGfx, sUnknown_0203AAD8);
+ sUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22);
for (i = 0; i < 22; i++)
{
- gUnknown_0203AB30[i].data = sSlotMachineSpriteSheets[i].data;
- gUnknown_0203AB30[i].size = sSlotMachineSpriteSheets[i].size;
- gUnknown_0203AB30[i].tag = sSlotMachineSpriteSheets[i].tag;
+ sUnknown_0203AB30[i].data = gSlotMachineSpriteSheets[i].data;
+ sUnknown_0203AB30[i].size = gSlotMachineSpriteSheets[i].size;
+ sUnknown_0203AB30[i].tag = gSlotMachineSpriteSheets[i].tag;
}
- gUnknown_0203AB30[17].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB30[18].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB30[19].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB30[20].data = gUnknown_0203AAD4 + 0x1900;
- LoadSpriteSheets(gUnknown_0203AB30);
+ sUnknown_0203AB30[17].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB30[18].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB30[19].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB30[20].data = sUnknown_0203AAD4 + 0x1900;
+ LoadSpriteSheets(sUnknown_0203AB30);
LoadSpritePalettes(gSlotMachineSpritePalettes);
}
-/*static */void sub_8106404(void)
+static void sub_8106404(void)
{
u8 *dest;
u8 i, j;
- gUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
- gUnknown_0203AAE0 = AllocZeroed(0x2000);
- dest = gUnknown_0203AAE0;
+ sUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
+ sUnknown_0203AAE0 = AllocZeroed(0x2000);
+ dest = sUnknown_0203AAE0;
for (i = 0; i < 0x40; i++)
{
for (j = 0; j < 0x20; j++, dest++)
*dest = gUnknown_083EDCDC[j];
}
- gUnknown_0203AB2C->data = gUnknown_0203AAE0;
- gUnknown_0203AB2C->size = 0x800;
- gUnknown_0203AB2C->tag = 0x11;
- LoadSpriteSheet(gUnknown_0203AB2C);
+ sUnknown_0203AB2C->data = sUnknown_0203AAE0;
+ sUnknown_0203AB2C->size = 0x800;
+ sUnknown_0203AB2C->tag = 0x11;
+ LoadSpriteSheet(sUnknown_0203AB2C);
}
extern const u32 gSlotMachineMenu_Gfx[];
@@ -4107,27 +4193,27 @@ extern const u16 gSlotMachineMenu_Tilemap[];
extern const u16 gUnknown_08DCEC70[];
extern const u16 gSlotMachineMenu_Pal[];
-/*static */void sub_8106448(void)
+static void sub_8106448(void)
{
- gUnknown_0203AAC8 = Alloc(0x2200);
- LZDecompressWram(gSlotMachineMenu_Gfx, gUnknown_0203AAC8);
- LoadBgTiles(2, gUnknown_0203AAC8, 0x2200, 0);
+ sUnknown_0203AAC8 = Alloc(0x2200);
+ LZDecompressWram(gSlotMachineMenu_Gfx, sUnknown_0203AAC8);
+ LoadBgTiles(2, sUnknown_0203AAC8, 0x2200, 0);
LoadPalette(gSlotMachineMenu_Pal, 0, 160);
LoadPalette(gPalette_83EDE24, 208, 32);
}
-/*static */void sub_81064B8(void)
+static void sub_81064B8(void)
{
sub_812F968();
LoadSlotMachineWheelOverlay();
}
-/*static */void sub_812F968(void)
+static void sub_812F968(void)
{
LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0);
}
-/*static */void LoadSlotMachineWheelOverlay(void)
+static void LoadSlotMachineWheelOverlay(void)
{
s16 x, y, dx;
@@ -4135,143 +4221,143 @@ extern const u16 gSlotMachineMenu_Pal[];
{
for (dx = 0; dx < 4; dx++)
{
- LoadBgTilemap(3, gUnknown_0203AAD0, 2, x + dx + 5 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0, 2, x + dx + 5 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
}
- LoadBgTilemap(3, gUnknown_0203AAD0 + 4, 2, x + 6 * 32);
- LoadBgTilemap(3, gUnknown_0203AAD0 + 5, 2, x + 12 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 4, 2, x + 6 * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 5, 2, x + 12 * 32);
for (y = 7; y <= 11; y++)
- LoadBgTilemap(3, gUnknown_0203AAD0 + 6, 2, x + y * 32);
+ LoadBgTilemap(3, sUnknown_0203AAD0 + 6, 2, x + y * 32);
}
}
-/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
{
- gUnknown_0203AADC[0] = arg1;
- gUnknown_0203AADC[1] = arg2;
- gUnknown_0203AADC[2] = arg3;
- gUnknown_0203AADC[3] = arg4;
+ sUnknown_0203AADC[0] = arg1;
+ sUnknown_0203AADC[1] = arg2;
+ sUnknown_0203AADC[2] = arg3;
+ sUnknown_0203AADC[3] = arg4;
- LoadBgTilemap(2, gUnknown_0203AADC, 2, 15 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
- LoadBgTilemap(2, gUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC, 2, 15 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
+ LoadBgTilemap(2, sUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
}
-/*static */void sub_81065DC(void)
+static void sub_81065DC(void)
{
LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0);
HideBg(3);
}
-/*static */void SlotMachineSetup_9_0(void)
-{
- gUnknown_03001188[0] = gUnknown_0203AAF4;
- gUnknown_03001188[1] = gUnknown_0203AAF8;
- gUnknown_03001188[2] = gUnknown_0203AAFC;
- gUnknown_03001188[3] = gUnknown_0203AB04;
- gUnknown_03001188[4] = gUnknown_0203AB08;
- gUnknown_03001188[5] = gUnknown_0203AB18;
- gUnknown_03001188[6] = gUnknown_0203AB1C;
- gUnknown_03001188[7] = gUnknown_0203AB20;
- gUnknown_03001188[8] = gUnknown_0203AB24;
- gUnknown_03001188[9] = gUnknown_0203AB28;
- gUnknown_03001188[10] = gUnknown_0203AB00;
- gUnknown_03001188[11] = gUnknown_0203AB00;
- gUnknown_03001188[12] = gUnknown_0203AB00;
- gUnknown_03001188[13] = gUnknown_0203AB00;
- gUnknown_03001188[14] = gUnknown_0203AB0C;
- gUnknown_03001188[15] = gUnknown_0203AB0C;
- gUnknown_03001188[16] = gUnknown_0203AB0C;
- gUnknown_03001188[17] = gUnknown_0203AB0C;
- gUnknown_03001188[18] = gUnknown_0203AB0C;
- gUnknown_03001188[19] = gUnknown_0203AB10;
- gUnknown_03001188[20] = gUnknown_0203AB10;
- gUnknown_03001188[21] = gUnknown_0203AB10;
- gUnknown_03001188[22] = gUnknown_0203AB14;
- gUnknown_03001188[23] = gUnknown_0203AB14;
- gUnknown_03001188[24] = gUnknown_0203AB14;
+static void SlotMachineSetup_9_0(void)
+{
+ gUnknown_03001188[0] = sUnknown_0203AAF4;
+ gUnknown_03001188[1] = sUnknown_0203AAF8;
+ gUnknown_03001188[2] = sUnknown_0203AAFC;
+ gUnknown_03001188[3] = sUnknown_0203AB04;
+ gUnknown_03001188[4] = sUnknown_0203AB08;
+ gUnknown_03001188[5] = sUnknown_0203AB18;
+ gUnknown_03001188[6] = sUnknown_0203AB1C;
+ gUnknown_03001188[7] = sUnknown_0203AB20;
+ gUnknown_03001188[8] = sUnknown_0203AB24;
+ gUnknown_03001188[9] = sUnknown_0203AB28;
+ gUnknown_03001188[10] = sUnknown_0203AB00;
+ gUnknown_03001188[11] = sUnknown_0203AB00;
+ gUnknown_03001188[12] = sUnknown_0203AB00;
+ gUnknown_03001188[13] = sUnknown_0203AB00;
+ gUnknown_03001188[14] = sUnknown_0203AB0C;
+ gUnknown_03001188[15] = sUnknown_0203AB0C;
+ gUnknown_03001188[16] = sUnknown_0203AB0C;
+ gUnknown_03001188[17] = sUnknown_0203AB0C;
+ gUnknown_03001188[18] = sUnknown_0203AB0C;
+ gUnknown_03001188[19] = sUnknown_0203AB10;
+ gUnknown_03001188[20] = sUnknown_0203AB10;
+ gUnknown_03001188[21] = sUnknown_0203AB10;
+ gUnknown_03001188[22] = sUnknown_0203AB14;
+ gUnknown_03001188[23] = sUnknown_0203AB14;
+ gUnknown_03001188[24] = sUnknown_0203AB14;
gUnknown_03001188[25] = NULL;
}
-/*static */void SlotMachineSetup_8_0(void)
+static void SlotMachineSetup_8_0(void)
{
- gUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF4[0].data = gUnknown_0203AAD4;
- gUnknown_0203AAF4[0].size = 0x600;
+ sUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF4[0].data = sUnknown_0203AAD4;
+ sUnknown_0203AAF4[0].size = 0x600;
- gUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAF8[0].data = gUnknown_0203AAD4 + 0x600;
- gUnknown_0203AAF8[0].size = 0x200;
+ sUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAF8[0].data = sUnknown_0203AAD4 + 0x600;
+ sUnknown_0203AAF8[0].size = 0x200;
- gUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AAFC[0].data = gUnknown_0203AAD4 + 0x800;
- gUnknown_0203AAFC[0].size = 0x200;
+ sUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AAFC[0].data = sUnknown_0203AAD4 + 0x800;
+ sUnknown_0203AAFC[0].size = 0x200;
- gUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB00[0].data = gUnknown_0203AAD4 + 0xA00;
- gUnknown_0203AB00[0].size = 0x200;
+ sUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB00[0].data = sUnknown_0203AAD4 + 0xA00;
+ sUnknown_0203AB00[0].size = 0x200;
- gUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB04[0].data = gUnknown_0203AAD4 + 0xC00;
- gUnknown_0203AB04[0].size = 0x300;
+ sUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB04[0].data = sUnknown_0203AAD4 + 0xC00;
+ sUnknown_0203AB04[0].size = 0x300;
- gUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB08[0].data = gUnknown_0203AAD4 + 0x1000;
- gUnknown_0203AB08[0].size = 0x400;
+ sUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB08[0].data = sUnknown_0203AAD4 + 0x1000;
+ sUnknown_0203AB08[0].size = 0x400;
- gUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB0C[0].data = gUnknown_0203AAD4 + 0x1400;
- gUnknown_0203AB0C[0].size = 0x200;
+ sUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB0C[0].data = sUnknown_0203AAD4 + 0x1400;
+ sUnknown_0203AB0C[0].size = 0x200;
- gUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB10[0].data = gUnknown_0203AAD4 + 0x1600;
- gUnknown_0203AB10[0].size = 0x300;
+ sUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB10[0].data = sUnknown_0203AAD4 + 0x1600;
+ sUnknown_0203AB10[0].size = 0x300;
- gUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB14[0].data = gUnknown_0203AAD4 + 0x1900;
- gUnknown_0203AB14[0].size = 0x300;
+ sUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB14[0].data = sUnknown_0203AAD4 + 0x1900;
+ sUnknown_0203AB14[0].size = 0x300;
- gUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB18[0].data = gUnknown_0203AAD4 + 0x1C00;
- gUnknown_0203AB18[0].size = 0x200;
- gUnknown_0203AB18[1].data = gUnknown_0203AAD4 + 0x1E00;
- gUnknown_0203AB18[1].size = 0x200;
+ sUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB18[0].data = sUnknown_0203AAD4 + 0x1C00;
+ sUnknown_0203AB18[0].size = 0x200;
+ sUnknown_0203AB18[1].data = sUnknown_0203AAD4 + 0x1E00;
+ sUnknown_0203AB18[1].size = 0x200;
- gUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- gUnknown_0203AB1C[0].data = gUnknown_0203AAD4 + 0x2000;
- gUnknown_0203AB1C[0].size = 640;
+ sUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sUnknown_0203AB1C[0].data = sUnknown_0203AAD4 + 0x2000;
+ sUnknown_0203AB1C[0].size = 640;
- gUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
- gUnknown_0203AB20[0].data = gUnknown_0203AAD4 + 0x2280;
- gUnknown_0203AB20[0].size = 0x80;
- gUnknown_0203AB20[1].data = gUnknown_0203AAD4 + 0x2300;
- gUnknown_0203AB20[1].size = 0x80;
- gUnknown_0203AB20[2].data = gUnknown_0203AAD4 + 0x2380;
- gUnknown_0203AB20[2].size = 0x80;
- gUnknown_0203AB20[3].data = gUnknown_0203AAD4 + 0x2400;
- gUnknown_0203AB20[3].size = 0x80;
- gUnknown_0203AB20[4].data = gUnknown_0203AAD4 + 0x2480;
- gUnknown_0203AB20[4].size = 0x80;
+ sUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+ sUnknown_0203AB20[0].data = sUnknown_0203AAD4 + 0x2280;
+ sUnknown_0203AB20[0].size = 0x80;
+ sUnknown_0203AB20[1].data = sUnknown_0203AAD4 + 0x2300;
+ sUnknown_0203AB20[1].size = 0x80;
+ sUnknown_0203AB20[2].data = sUnknown_0203AAD4 + 0x2380;
+ sUnknown_0203AB20[2].size = 0x80;
+ sUnknown_0203AB20[3].data = sUnknown_0203AAD4 + 0x2400;
+ sUnknown_0203AB20[3].size = 0x80;
+ sUnknown_0203AB20[4].data = sUnknown_0203AAD4 + 0x2480;
+ sUnknown_0203AB20[4].size = 0x80;
- gUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB24[0].data = gUnknown_0203AAD4 + 0x2600;
- gUnknown_0203AB24[0].size = 0x480;
- gUnknown_0203AB24[1].data = gUnknown_0203AAD4 + 10880;
- gUnknown_0203AB24[1].size = 0x480;
+ sUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB24[0].data = sUnknown_0203AAD4 + 0x2600;
+ sUnknown_0203AB24[0].size = 0x480;
+ sUnknown_0203AB24[1].data = sUnknown_0203AAD4 + 10880;
+ sUnknown_0203AB24[1].size = 0x480;
- gUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- gUnknown_0203AB28[0].data = gUnknown_0203AAD4 + 0x2F00;
- gUnknown_0203AB28[0].size = 0x180;
- gUnknown_0203AB28[1].data = gUnknown_0203AAD4 + 0x3080;
- gUnknown_0203AB28[1].size = 0x180;
+ sUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sUnknown_0203AB28[0].data = sUnknown_0203AAD4 + 0x2F00;
+ sUnknown_0203AB28[0].size = 0x180;
+ sUnknown_0203AB28[1].data = sUnknown_0203AAD4 + 0x3080;
+ sUnknown_0203AB28[1].size = 0x180;
}
-const u8 sReelSymbols[][21] =
+const u8 gReelSymbols[][REEL_NUM_TAGS] =
{
{
SLOT_MACHINE_TAG_7_RED,
@@ -4344,17 +4430,17 @@ const u8 sReelSymbols[][21] =
},
};
-const u8 gUnknown_083ECCF1[] = {
+const u8 gReelTimeTags[] = {
1, 0, 5, 4, 3, 2
};
-const s16 gUnknown_083ECCF8[][2] = {
+const s16 gInitialReelPositions[][2] = {
{0, 6},
{0, 10},
{0, 2}
};
-const u8 gUnknown_083ECD04[][3] = {
+const u8 gLuckyRoundProbabilities[][3] = {
{1, 1, 12},
{1, 1, 14},
{2, 2, 14},
@@ -4363,13 +4449,13 @@ const u8 gUnknown_083ECD04[][3] = {
{3, 3, 16}
};
-const u8 gUnknown_083ECD16[][6] = {
+const u8 gLuckyFlagProbabilities_Top3[][6] = {
{25, 25, 30, 40, 40, 50},
{25, 25, 30, 30, 35, 35},
{25, 25, 30, 25, 25, 30}
};
-const u8 gUnknown_083ECD28[][6] = {
+const u8 gLuckyFlagProbabilities_NotTop3[][6] = {
{20, 25, 25, 20, 25, 25},
{12, 15, 15, 18, 19, 22},
{25, 25, 25, 30, 30, 40},
@@ -4377,7 +4463,7 @@ const u8 gUnknown_083ECD28[][6] = {
{40, 40, 35, 35, 40, 40}
};
-const u8 gUnknown_083ECD46[][17] = {
+const u8 gReeltimeProbabilities_UnluckyGame[][17] = {
{243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
{ 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
{ 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
@@ -4386,7 +4472,7 @@ const u8 gUnknown_083ECD46[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
};
-const u8 gUnknown_083ECDAC[][17] = {
+const u8 gReelTimeProbabilities_LuckyGame[][17] = {
{ 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
{ 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
{ 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
@@ -4395,11 +4481,11 @@ const u8 gUnknown_083ECDAC[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
};
-const u16 gUnknown_083ECE12[] = {
- 0x80, 0xaf, 0xc8, 0xe1, 0x100
+const u16 gProbabilityTable_SkipToReeltimeAction14[] = {
+ 128, 175, 200, 225, 256
};
-const u16 gUnknown_083ECE1C[][2] = {
+const u16 gReelIncrementTable[][2] = {
{10, 5},
{10, 10},
{10, 15},
@@ -4407,23 +4493,24 @@ const u16 gUnknown_083ECE1C[][2] = {
{10, 35}
};
-const u16 gUnknown_083ECE30[] = {
+const u16 gReelTimeBonusIncrementTable[] = {
0, 5, 10, 15, 20
};
-const u8 gUnknown_083ECE3A[] = {
- 6, 4, 3, 2, 5, 0, 0, 0
+// tentative name
+const u8 gBiasTags[] = {
+ SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_AZURILL, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED
};
-const u16 gUnknown_083ECE42[] = {
- 0x80, 0x20, 0x40
+const u16 gLuckyFlagSettings_Top3[] = {
+ LUCKY_BIAS_777, LUCKY_BIAS_REELTIME, LUCKY_BIAS_MIXED_777
};
-const u16 gUnknown_083ECE48[] = {
- 0x10, 0x08, 0x04, 0x02, 0x01
+const u16 gLuckyFlagSettings_NotTop3[] = {
+ LUCKY_BIAS_POWER, LUCKY_BIAS_AZURILL, LUCKY_BIAS_LOTAD, LUCKY_BIAS_CHERRY, LUCKY_BIAS_REPLAY
};
-const u8 sSym2Match[] = {
+const u8 gSym2Match[] = {
SLOT_MACHINE_MATCHED_777_RED,
SLOT_MACHINE_MATCHED_777_BLUE,
SLOT_MACHINE_MATCHED_AZURILL,
@@ -4433,7 +4520,7 @@ const u8 sSym2Match[] = {
SLOT_MACHINE_MATCHED_REPLAY
};
-const u16 sSlotMatchFlags[] = {
+const u16 gSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_1CHERRY,
1 << SLOT_MACHINE_MATCHED_2CHERRY,
1 << SLOT_MACHINE_MATCHED_REPLAY,
@@ -4445,7 +4532,7 @@ const u16 sSlotMatchFlags[] = {
1 << SLOT_MACHINE_MATCHED_777_BLUE
};
-const u16 sSlotPayouts[] = {
+const u16 gSlotPayouts[] = {
2, 4, 0, 6, 12, 3, 90, 300, 300
};
diff --git a/src/start_menu.c b/src/start_menu.c
index d5eec76d2..4822c12e6 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1,44 +1,49 @@
#include "global.h"
-#include "start_menu.h"
-#include "menu.h"
-#include "safari_zone.h"
-#include "event_data.h"
-#include "window.h"
-#include "string_util.h"
-#include "text.h"
-#include "strings.h"
+#include "battle_pike.h"
+#include "battle_pyramid.h"
+#include "battle_pyramid_bag.h"
#include "bg.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_obj_lock.h"
+#include "event_scripts.h"
+#include "fieldmap.h"
#include "field_effect.h"
-#include "party_menu.h"
-#include "frontier_pass.h"
-#include "task.h"
-#include "overworld.h"
-#include "link.h"
-#include "frontier_util.h"
+#include "field_player_avatar.h"
#include "field_specials.h"
-#include "event_object_movement.h"
-#include "script.h"
-#include "main.h"
-#include "sound.h"
-#include "pokedex.h"
#include "field_weather.h"
-#include "palette.h"
+#include "field_screen_effect.h"
+#include "frontier_pass.h"
+#include "frontier_util.h"
+#include "gpu_regs.h"
+#include "international_string_util.h"
#include "item_menu.h"
+#include "link.h"
+#include "load_save.h"
+#include "main.h"
+#include "menu.h"
+#include "new_game.h"
#include "option_menu.h"
-#include "event_scripts.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokedex.h"
+#include "pokenav.h"
+#include "safari_zone.h"
#include "save.h"
-#include "gpu_regs.h"
#include "scanline_effect.h"
+#include "script.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "strings.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
#include "text_window.h"
-#include "load_save.h"
#include "trainer_card.h"
-#include "international_string_util.h"
+#include "window.h"
#include "constants/songs.h"
-#include "field_player_avatar.h"
-#include "battle_pyramid.h"
-#include "battle_pyramid_bag.h"
-#include "battle_pike.h"
-#include "new_game.h"
+#include "rom_8011DC0.h"
// Menu actions
enum
@@ -83,19 +88,6 @@ EWRAM_DATA static u8 sSaveDialogTimer = 0;
EWRAM_DATA static bool8 sSavingComplete = FALSE;
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
-// Extern variables.
-extern u8 gUnknown_03005DB4;
-
-// Extern functions in not decompiled files.
-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 CB2_PokeNav(void);
-extern void ScriptUnfreezeEventObjects(void);
-extern void save_serialize_map(void);
-
// Menu action callbacks
static bool8 StartMenuPokedexCallback(void);
static bool8 StartMenuPokemonCallback(void);
@@ -123,7 +115,7 @@ static u8 SaveConfirmSaveCallback(void);
static u8 SaveYesNoCallback(void);
static u8 SaveConfirmInputCallback(void);
static u8 SaveFileExistsCallback(void);
-static u8 SaveConfirmOverwriteNoCallback(void);
+static u8 SaveConfirmOverwriteDefaultNoCallback(void);
static u8 SaveConfirmOverwriteCallback(void);
static u8 SaveOverwriteInputCallback(void);
static u8 SaveSavingMessageCallback(void);
@@ -244,7 +236,7 @@ static void BuildStartMenuActions(void)
{
sNumStartMenuActions = 0;
- if (is_c1_link_related_active() == TRUE)
+ if (IsUpdateLinkStateCBActive() == TRUE)
{
BuildLinkModeStartMenu();
}
@@ -376,7 +368,7 @@ static void ShowSafariBallsWindow(void)
{
sSafariBallsWindowId = AddWindow(&sSafariBallsWindowTemplate);
PutWindowTilemap(sSafariBallsWindowId);
- NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, FALSE);
+ DrawStdWindowFrame(sSafariBallsWindowId, FALSE);
ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_SafariBallStock);
AddTextPrinterParameterized(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
@@ -391,7 +383,7 @@ static void ShowPyramidFloorWindow(void)
sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
- NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
+ DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
AddTextPrinterParameterized(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
@@ -402,13 +394,13 @@ static void RemoveExtraStartMenuWindows(void)
{
if (GetSafariZoneFlag())
{
- sub_8198070(sSafariBallsWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sSafariBallsWindowId, FALSE);
CopyWindowToVram(sSafariBallsWindowId, 2);
RemoveWindow(sSafariBallsWindowId);
}
if (InBattlePyramid())
{
- sub_8198070(sBattlePyramidFloorWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sBattlePyramidFloorWindowId, FALSE);
RemoveWindow(sBattlePyramidFloorWindowId);
}
}
@@ -459,7 +451,7 @@ static bool32 InitStartMenuStep(void)
break;
case 2:
sub_81973A4();
- NewMenuHelpers_DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);
+ DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE);
sUnknown_02037619[1] = 0;
sUnknown_02037619[0]++;
break;
@@ -547,7 +539,7 @@ void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s
void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s
{
- if (!is_c1_link_related_active())
+ if (!IsUpdateLinkStateCBActive())
{
FreezeEventObjects();
sub_808B864();
@@ -608,7 +600,7 @@ static bool8 StartMenuPokedexCallback(void)
if (!gPaletteFade.active)
{
IncrementGameStat(GAME_STAT_CHECKED_POKEDEX);
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_Pokedex);
@@ -623,7 +615,7 @@ static bool8 StartMenuPokemonCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu
@@ -638,7 +630,7 @@ static bool8 StartMenuBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu
@@ -653,10 +645,10 @@ static bool8 StartMenuPokeNavCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
- SetMainCallback2(CB2_PokeNav); // Display PokeNav
+ SetMainCallback2(CB2_InitPokeNav); // Display PokeNav
return TRUE;
}
@@ -668,11 +660,11 @@ static bool8 StartMenuPlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
- if (is_c1_link_related_active() || InUnionRoom())
+ if (IsUpdateLinkStateCBActive() || InUnionRoom())
ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu); // Display trainer card
else if (FlagGet(FLAG_SYS_FRONTIER_PASS))
ShowFrontierPass(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass
@@ -699,7 +691,7 @@ static bool8 StartMenuOptionCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_InitOptionMenu); // Display option menu
@@ -732,9 +724,9 @@ static bool8 StartMenuLinkModePlayerNameCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
- ShowTrainerCardInLink(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu);
+ ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
@@ -751,7 +743,7 @@ static bool8 StartMenuBattlePyramidRetireCallback(void)
void sub_809FDD4(void)
{
- sub_8197DF8(0, FALSE);
+ ClearDialogWindowAndFrameToTransparent(0, FALSE);
ScriptUnfreezeEventObjects();
CreateStartMenuTask(sub_809FA34);
ScriptContext2_Enable();
@@ -761,7 +753,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void)
{
if (!gPaletteFade.active)
{
- PlayRainSoundEffect();
+ PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_PyramidBagMenuFromStartMenu);
@@ -787,13 +779,13 @@ static bool8 SaveCallback(void)
case SAVE_IN_PROGRESS:
return FALSE;
case SAVE_CANCELED: // Back to start menu
- sub_8197DF8(0, FALSE);
+ ClearDialogWindowAndFrameToTransparent(0, FALSE);
InitStartMenu();
gMenuCallback = HandleStartMenuInput;
return FALSE;
case SAVE_SUCCESS:
case SAVE_ERROR: // Close start menu
- sub_8197DF8(0, TRUE);
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
SoftResetInBattlePyramid();
@@ -830,7 +822,7 @@ static bool8 BattlePyramidRetireCallback(void)
case SAVE_IN_PROGRESS:
return FALSE;
case SAVE_CANCELED: // Yes (Retire from battle pyramid)
- sub_8197DF8(0, TRUE);
+ ClearDialogWindowAndFrameToTransparent(0, TRUE);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88);
@@ -897,7 +889,7 @@ static void SaveGameTask(u8 taskId)
static void sub_80A0014(void)
{
- sub_8197434(0, TRUE);
+ ClearDialogWindowAndFrame(0, TRUE);
}
static void HideSaveInfoWindow(void)
@@ -943,7 +935,7 @@ static bool8 SaveErrorTimer(void)
static u8 SaveConfirmSaveCallback(void)
{
- sub_819746C(GetStartMenuWindowId(), FALSE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
RemoveStartMenuWindow();
ShowSaveInfoWindow();
@@ -961,7 +953,7 @@ static u8 SaveConfirmSaveCallback(void)
static u8 SaveYesNoCallback(void)
{
- DisplayYesNoMenu(); // Show Yes/No menu
+ DisplayYesNoMenuDefaultYes(); // Show Yes/No menu
sSaveDialogCallback = SaveConfirmInputCallback;
return SAVE_IN_PROGRESS;
}
@@ -1002,7 +994,7 @@ static u8 SaveFileExistsCallback(void)
{
if (gDifferentSaveFile == TRUE)
{
- ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteNoCallback);
+ ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteDefaultNoCallback);
}
else
{
@@ -1012,16 +1004,16 @@ static u8 SaveFileExistsCallback(void)
return SAVE_IN_PROGRESS;
}
-static u8 SaveConfirmOverwriteNoCallback(void)
+static u8 SaveConfirmOverwriteDefaultNoCallback(void)
{
- sub_8197948(1); // Show Yes/No menu (No selected as default)
+ DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default)
sSaveDialogCallback = SaveOverwriteInputCallback;
return SAVE_IN_PROGRESS;
}
static u8 SaveConfirmOverwriteCallback(void)
{
- DisplayYesNoMenu(); // Show Yes/No menu
+ DisplayYesNoMenuDefaultYes(); // Show Yes/No menu
sSaveDialogCallback = SaveOverwriteInputCallback;
return SAVE_IN_PROGRESS;
}
@@ -1135,7 +1127,7 @@ static void InitBattlePyramidRetire(void)
static u8 BattlePyramidConfirmRetireCallback(void)
{
- sub_819746C(GetStartMenuWindowId(), FALSE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE);
RemoveStartMenuWindow();
ShowSaveMessage(gText_BattlePyramidConfirmRetire, BattlePyramidRetireYesNoCallback);
@@ -1144,7 +1136,7 @@ static u8 BattlePyramidConfirmRetireCallback(void)
static u8 BattlePyramidRetireYesNoCallback(void)
{
- sub_8197948(1); // Show Yes/No menu (No selected as default)
+ DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default)
sSaveDialogCallback = BattlePyramidRetireInputCallback;
return SAVE_IN_PROGRESS;
@@ -1232,7 +1224,7 @@ static void sub_80A0550(u8 taskId)
switch (*step)
{
case 0:
- FillWindowPixelBuffer(0, 17);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0,
1,
gText_SavingDontTurnOffPower,
@@ -1265,11 +1257,11 @@ static void sub_80A0550(u8 taskId)
break;
case 1:
SetContinueGameWarpStatusToDynamicWarp();
- sub_8153430();
+ FullSaveGame();
*step = 2;
break;
case 2:
- if (sub_8153474())
+ if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
*step = 3;
@@ -1313,7 +1305,7 @@ static void ShowSaveInfoWindow(void)
}
sSaveInfoWindowId = AddWindow(&saveInfoWindow);
- NewMenuHelpers_DrawStdWindowFrame(sSaveInfoWindowId, FALSE);
+ DrawStdWindowFrame(sSaveInfoWindowId, FALSE);
gender = gSaveBlock2Ptr->playerGender;
color = TEXT_COLOR_RED; // Red when female, blue when male.
@@ -1364,7 +1356,7 @@ static void ShowSaveInfoWindow(void)
static void RemoveSaveInfoWindow(void)
{
- sub_819746C(sSaveInfoWindowId, FALSE);
+ ClearStdWindowAndFrame(sSaveInfoWindowId, FALSE);
RemoveWindow(sSaveInfoWindowId);
}
@@ -1386,7 +1378,7 @@ void sub_80A08CC(void) // Referenced in data/specials.inc and data/scripts/maps/
static void HideStartMenuWindow(void)
{
- sub_819746C(GetStartMenuWindowId(), TRUE);
+ ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE);
RemoveStartMenuWindow();
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 5a8de3b4a..4ed53539f 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -469,7 +469,7 @@ static void MainCallback2_StarterChoose(void)
static void Task_StarterChoose1(u8 taskId)
{
CreateStarterPokemonLabel(gTasks[taskId].tStarterSelection);
- SetWindowBorderStyle(0, FALSE, 0x2A8, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x2A8, 0xD);
AddTextPrinterParameterized(0, 1, gText_BirchInTrouble, 0, 1, 0, NULL);
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -523,7 +523,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gText_ConfirmStarterChoice, 0, 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
CreateYesNoMenu(&gUnknown_085B1DDC, 0x2A8, 0xD, 0);
@@ -579,7 +579,7 @@ static void CreateStarterPokemonLabel(u8 selection)
winTemplate.tilemapTop = gStarterChoose_LabelCoords[selection][1];
sStarterChooseWindowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(sStarterChooseWindowId, 0);
+ FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0));
width = GetStringCenterAlignXOffset(7, text, 0x68);
AddTextPrinterParameterized3(sStarterChooseWindowId, 7, width, 1, gUnknown_085B1E0C, 0, text);
@@ -600,7 +600,7 @@ static void CreateStarterPokemonLabel(u8 selection)
static void sub_8134604(void)
{
- FillWindowPixelBuffer(sStarterChooseWindowId, 0);
+ FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0));
ClearWindowTilemap(sStarterChooseWindowId);
RemoveWindow(sStarterChooseWindowId);
sStarterChooseWindowId = 0xFF;
diff --git a/src/task.c b/src/task.c
index 14b97a361..a2df66de8 100644
--- a/src/task.c
+++ b/src/task.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "task.h"
-#define HEAD_SENTINEL 0xFE
-#define TAIL_SENTINEL 0xFF
-
struct Task gTasks[NUM_TASKS];
static void InsertTask(u8 newTaskId);
diff --git a/src/text.c b/src/text.c
index a439d3ced..be4bf2697 100644
--- a/src/text.c
+++ b/src/text.c
@@ -12,10 +12,6 @@
#include "menu.h"
#include "dynamic_placeholder_text_util.h"
-extern u8 GetKeypadIconWidth(u8 keypadIconId);
-extern u16 Font6Func(struct TextPrinter *textPrinter);
-extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
-
EWRAM_DATA struct TextPrinter gTempTextPrinter = {0};
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0};
@@ -1581,7 +1577,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | textPrinter->printerTemplate.bgColor << 4);
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
return 2;
@@ -1702,7 +1698,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, (textPrinter->printerTemplate.bgColor << 4) | textPrinter->printerTemplate.bgColor);
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
@@ -1724,12 +1720,12 @@ u16 RenderText(struct TextPrinter *textPrinter)
int speed = gWindowVerticalScrollSpeeds[scrollSpeed];
if (textPrinter->scrollDistance < speed)
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor);
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance -= speed;
}
CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
diff --git a/src/time_events.c b/src/time_events.c
index 9702d321f..bd51f0c2d 100644
--- a/src/time_events.c
+++ b/src/time_events.c
@@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void)
1, // 23
};
- if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()))
+ if (IsMapTypeOutdoors(GetLastUsedWarpMapType()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
diff --git a/src/trade.c b/src/trade.c
index 70b57fbc7..9a9828f34 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1418,7 +1418,7 @@ static void sub_80772A4(void)
for (i = 0; i < 18; i++)
{
ClearWindowTilemap(i);
- FillWindowPixelBuffer(i, 0);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
}
FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 15);
@@ -1507,13 +1507,13 @@ static void sub_80773D0(void)
}
break;
case 3:
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (IsLinkMaster())
{
if (++gUnknown_0203229C->unk_A8 > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
@@ -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;
@@ -2461,7 +2461,7 @@ static void sub_8078DBC(void)
if (gUnknown_0203229C->tradeMenuCursorPosition < 6)
{
sub_8098858(1, 1, 14);
- FillWindowPixelBuffer(1, 0x11);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
PrintMenuTable(1, 2, gUnknown_0832DEAC);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
PutWindowTilemap(1);
@@ -2724,7 +2724,7 @@ static void sub_8079408(void)
for (i = 0; i < 4; i++)
{
- FillWindowPixelBuffer(i + 14, 0);
+ FillWindowPixelBuffer(i + 14, PIXEL_FILL(0));
rbox_fill_rectangle(i + 14);
}
@@ -2762,7 +2762,7 @@ static void sub_80794CC(void)
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
sub_800E084();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
else
@@ -2772,7 +2772,7 @@ static void sub_80794CC(void)
Free(gUnknown_02032184);
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
- SetMainCallback2(c2_8056854);
+ SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
}
@@ -3256,7 +3256,7 @@ static void sub_807A0C4(void)
static void sub_807A19C(u8 a0)
{
- FillWindowPixelBuffer(0, 0x11);
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gUnknown_0832DEBC[a0], 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(0, 20, 12);
PutWindowTilemap(0);
@@ -4099,11 +4099,11 @@ void sub_807AE50(void)
case 3:
if (IsLinkMaster())
{
- if (GetLinkPlayerCount_2() >= sub_800AA48())
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
if (++gUnknown_020322A0->timer > 30)
{
- sub_800A620();
+ CheckShouldAdvanceLinkState();
gMain.state++;
}
}
@@ -4185,7 +4185,7 @@ void sub_807B140(void)
void sub_807B154(void)
{
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
@@ -4263,7 +4263,7 @@ static void sub_807B270(void)
break;
case 8:
sub_807ACFC(1, 1);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
gMain.state++;
@@ -4654,7 +4654,7 @@ static bool8 sub_807BBEC(void)
if (!gPaletteFade.active)
{
sub_807B62C(4);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
CopyWindowToVram(0, 3);
gUnknown_020322A0->state++;
}
@@ -5146,7 +5146,7 @@ static bool8 sub_807CFC8(void)
if (!gPaletteFade.active)
{
sub_807B62C(4);
- FillWindowPixelBuffer(0, 0xFF);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
CopyWindowToVram(0, 3);
gUnknown_020322A0->state++;
}
@@ -6085,7 +6085,7 @@ void sub_807F19C(void)
void sub_807F1A8(u8 windowId, const u8 *str, u8 speed)
{
- FillWindowPixelBuffer(windowId, 0xFF);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
gUnknown_020322A0->unk_F6[0] = 15;
gUnknown_020322A0->unk_F6[1] = 1;
gUnknown_020322A0->unk_F6[2] = 6;
diff --git a/src/trader.c b/src/trader.c
index b5c159fb9..97bc4626f 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -73,7 +73,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
}
windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth);
data[3] = AddWindow(&windowTemplate);
- SetWindowBorderStyle(data[3], FALSE, 0x214, 14);
+ DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14);
for (i = 0; i < 4; i++)
{
if (trader->decorIds[i] > NUM_DECORATIONS)
@@ -98,7 +98,7 @@ void sub_8133BE4(u8 taskId, u8 decorationId)
gSpecialVar_0x8004 = decorationId;
}
- sub_8198070(data[3], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[3], FALSE);
ClearWindowTilemap(data[3]);
RemoveWindow(data[3]);
schedule_bg_copy_tilemap_to_vram(0);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 49a62284f..01839d598 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -21,6 +21,7 @@
#include "gpu_regs.h"
#include "international_string_util.h"
#include "pokedex.h"
+#include "pokemon_icon.h"
#include "graphics.h"
#include "pokemon_icon.h"
#include "trainer_pokemon_sprites.h"
@@ -89,9 +90,6 @@ struct TrainerCardData
u8 language;
};
-//external functions
-extern u8 sub_80D30A0(u16);
-
// EWRAM
EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
EWRAM_DATA static struct TrainerCardData *sData = NULL;
@@ -350,7 +348,7 @@ static void sub_80C2760(u8 taskId)
case 0:
if (!IsDma3ManagerBusyWithBgCopy())
{
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
sData->var_0++;
}
break;
@@ -363,7 +361,7 @@ static void sub_80C2760(u8 taskId)
sData->var_0++;
break;
case 3:
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
sub_80C4FF0();
sub_80C438C(2);
sData->var_0++;
@@ -469,7 +467,7 @@ static void sub_80C2760(u8 taskId)
break;
case 15:
sub_800AC34();
- NewMenuHelpers_DrawDialogueFrame(0, 1);
+ DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 1, gText_WaitingTrainerFinishReading, 0, 1, 255, 0);
CopyWindowToVram(0, 3);
sData->var_0 = 16;
@@ -695,7 +693,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
trainerCard->money = GetMoney(&gSaveBlock1Ptr->money);
for (i = 0; i < 4; i++)
- trainerCard->var_28[i] = gSaveBlock1Ptr->unk2BB0[i];
+ trainerCard->var_28[i] = gSaveBlock1Ptr->easyChatProfile[i];
StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName);
@@ -1103,7 +1101,7 @@ static void PrintTimeOnCard(void)
r10 = width + 30;
r7 -= r10;
- FillWindowPixelRect(1, 0, r7, r4, r10, 15);
+ FillWindowPixelRect(1, PIXEL_FILL(0), r7, r4, r10, 15);
ConvertIntToDecimalStringN(gStringVar4, hours, 1, 3);
AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4);
r7 += 18;
@@ -1536,7 +1534,7 @@ static void sub_80C48C8(void)
}
}
-u8 sub_80C4904(u8 cardId)
+u8 GetTrainerCardStars(u8 cardId)
{
struct TrainerCard* trainerCards = gTrainerCards;
return trainerCards[cardId].stars;
@@ -1634,7 +1632,7 @@ static bool8 sub_80C4B08(struct Task* task)
switch (sData->var_4)
{
case 0:
- FillWindowPixelBuffer(1, 0);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20);
break;
case 1:
@@ -1659,7 +1657,7 @@ static bool8 sub_80C4B08(struct Task* task)
if (!sData->var_8)
sub_80C474C();
else
- FillWindowPixelBuffer(2, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
break;
case 4:
if (sData->var_8)
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index efe11b0c7..43b29e26e 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -30,6 +30,7 @@
#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/easy_chat.h"
+#include "constants/trainer_hill.h"
extern bool32 sub_81D3B34(void);
@@ -92,16 +93,16 @@ struct TrHillStruct2
// EWRAM
static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL;
static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
-EWRAM_DATA u32 *gUnknown_0203CF5C = NULL;
+EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL;
// This file's functions.
-static void sub_81D581C(void);
+static void TrainerHillStartChallenge(void);
static void sub_81D58D8(void);
static void sub_81D5924(void);
static void sub_81D59D0(void);
-static void sub_81D5A70(void);
-static void sub_81D5AB4(void);
-static void sub_81D5AD0(void);
+static void TrainerHillResumeTimer(void);
+static void TrainerHillSetPlayerLost(void);
+static void TrainerHillGetChallengeStatus(void);
static void sub_81D5B2C(void);
static void sub_81D5BBC(void);
static void sub_81D5C00(void);
@@ -112,7 +113,7 @@ static void sub_81D64DC(void);
static void sub_81D64FC(void);
static void sub_81D6518(void);
static void sub_81D6568(void);
-static void sub_81D65A0(void);
+static void TrainerHillSetTag(void);
static void SetUpDataStruct(void);
static void FreeDataStruct(void);
static void nullsub_2(void);
@@ -263,13 +264,13 @@ static const u8 *const sFloorStrings[] =
static void (* const sHillFunctions[])(void) =
{
- sub_81D581C,
+ TrainerHillStartChallenge,
sub_81D58D8,
sub_81D5924,
sub_81D59D0,
- sub_81D5A70,
- sub_81D5AB4,
- sub_81D5AD0,
+ TrainerHillResumeTimer,
+ TrainerHillSetPlayerLost,
+ TrainerHillGetChallengeStatus,
sub_81D5B2C,
sub_81D5BBC,
sub_81D5C00,
@@ -280,7 +281,7 @@ static void (* const sHillFunctions[])(void) =
sub_81D64FC,
sub_81D6518,
sub_81D6568,
- sub_81D65A0,
+ TrainerHillSetTag,
};
static const u8 *const sTagMatchStrings[] =
@@ -318,7 +319,7 @@ void ResetTrainerHillResults(void)
gSaveBlock2Ptr->frontier.field_EF9_1 = 0;
gSaveBlock2Ptr->frontier.field_EF9_0 = 0;
- gSaveBlock1Ptr->trainerHill.field_3D68 = 0;
+ gSaveBlock1Ptr->trainerHill.bestTime = 0;
for (i = 0; i < 4; i++)
SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME);
}
@@ -371,7 +372,7 @@ void InitTrainerHillBattleStruct(void)
}
sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass;
}
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
FreeDataStruct();
}
@@ -425,7 +426,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
FreeDataStruct();
}
-static void sub_81D581C(void)
+static void TrainerHillStartChallenge(void)
{
nullsub_2();
if (!sub_81D3B34())
@@ -434,11 +435,11 @@ static void sub_81D581C(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0f = 0;
gSaveBlock1Ptr->trainerHill.field_3D6C = 0;
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHill.field_3D64 = 0;
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHill.timer = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0c = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 0;
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
gSaveBlock2Ptr->frontier.field_EE0 = 0;
gBattleOutcome = 0;
gSaveBlock1Ptr->trainerHill.field_3D6E_0a = 0;
@@ -446,7 +447,7 @@ static void sub_81D581C(void)
static void sub_81D58D8(void)
{
- sub_80008E8();
+ ClearTrainerHillVBlankCounter();
gSpecialVar_Result = 0;
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
gSpecialVar_Result++;
@@ -483,10 +484,10 @@ static void sub_81D59D0(void)
{
gSpecialVar_Result = 2;
}
- else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68) > gSaveBlock1Ptr->trainerHill.field_3D64)
+ else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer)
{
- SetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68, gSaveBlock1Ptr->trainerHill.field_3D64);
- gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.field_3D68;
+ SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer);
+ gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime;
gSpecialVar_Result = 0;
}
else
@@ -497,37 +498,40 @@ static void sub_81D59D0(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 1;
}
-static void sub_81D5A70(void)
+static void TrainerHillResumeTimer(void)
{
if (!gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D64 >= HILL_MAX_TIME)
- gSaveBlock1Ptr->trainerHill.field_3D64 = HILL_MAX_TIME;
+ if (gSaveBlock1Ptr->trainerHill.timer >= HILL_MAX_TIME)
+ gSaveBlock1Ptr->trainerHill.timer = HILL_MAX_TIME;
else
- sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64);
+ SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer);
}
}
-static void sub_81D5AB4(void)
+static void TrainerHillSetPlayerLost(void)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 1;
+ gSaveBlock1Ptr->trainerHill.hasLost = 1;
}
-static void sub_81D5AD0(void)
+static void TrainerHillGetChallengeStatus(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 0;
- gSpecialVar_Result = 0;
+ // The player lost their last match.
+ gSaveBlock1Ptr->trainerHill.hasLost = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_LOST;
}
- else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0e)
+ else if (gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge)
{
- gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0;
- gSpecialVar_Result = 1;
+ // Unreachable code. Something relating to eCards?
+ gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0;
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED;
}
else
{
- gSpecialVar_Result = 2;
+ // Continue playing.
+ gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_NORMAL;
}
}
@@ -535,7 +539,7 @@ static void sub_81D5B2C(void)
{
s32 total, minutes, secondsWhole, secondsFraction;
- total = gSaveBlock1Ptr->trainerHill.field_3D64;
+ total = gSaveBlock1Ptr->trainerHill.timer;
if (total >= HILL_MAX_TIME)
total = HILL_MAX_TIME;
@@ -575,7 +579,7 @@ static void sub_81D5C00(void)
bool8 sub_81D5C18(void)
{
- if (VarGet(VAR_0x40D6) == 0)
+ if (VarGet(VAR_TRAINER_HILL_IS_ACTIVE) == 0)
return FALSE;
else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
return FALSE;
@@ -609,7 +613,7 @@ void PrintOnTrainerHillRecordsWindow(void)
u32 total, minutes, secondsWhole, secondsFraction;
SetUpDataStruct();
- FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
x = GetStringCenterAlignXOffset(1, gText_TimeBoard, 0xD0);
AddTextPrinterParameterized3(0, 1, x, 2, sRecordWinColors, TEXT_SPEED_FF, gText_TimeBoard);
@@ -796,7 +800,7 @@ void sub_81D5FB4(u16 *mapArg)
dst += 31;
}
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
FreeDataStruct();
}
@@ -1048,16 +1052,16 @@ bool32 sub_81D6534(void)
static void sub_81D6568(void)
{
- if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
+ if (gSaveBlock1Ptr->trainerHill.hasLost)
gSpecialVar_Result = 0;
else
gSpecialVar_Result = 1;
}
-static void sub_81D65A0(void)
+static void TrainerHillSetTag(void)
{
gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005;
- gSaveBlock1Ptr->trainerHill.field_3D68 = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
+ gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
}
static u8 sub_81D65E8(u8 arg0)
@@ -1103,7 +1107,7 @@ static u16 sub_81D6640(void)
i = (i + 1) % 10;
ptr = gUnknown_0862A5CC[var2][i];
- minutes = (signed)(gSaveBlock1Ptr->trainerHill.field_3D64) / (60 * 60);
+ minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60);
if (minutes < 12)
id = 0;
else if (minutes < 13)
diff --git a/src/trainer_see.c b/src/trainer_see.c
index bc5d9cbc3..16ea88a45 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -17,8 +17,6 @@
#include "constants/event_object_movement_constants.h"
#include "constants/field_effects.h"
-extern void sub_809BE48(u16 npcId);
-
// this file's functions
static u8 CheckTrainer(u8 eventObjectId);
static u8 GetTrainerApproachDistance(struct EventObject *trainerObj);
diff --git a/src/tv.c b/src/tv.c
index 5904efeb8..17243a456 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -39,6 +39,7 @@
#include "tv.h"
#include "data2.h"
#include "constants/layouts.h"
+#include "constants/metatile_behaviors.h"
// Static type declarations
@@ -62,7 +63,7 @@ IWRAM_DATA s8 sTVShowMixingCurSlot;
EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
-EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE;
+EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
@@ -853,9 +854,9 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId)
{
for (x = 0; x < width; x ++)
{
- if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV?
+ if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION)
{
- MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
+ MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
}
}
}
@@ -2019,7 +2020,7 @@ void sub_80EDCE8(void)
}
}
-void sub_80EDD78(u16 nCoinsPaidOut)
+void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut)
{
TVShow *show;
bool8 flag;
@@ -2031,7 +2032,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
flag = FALSE;
switch (sFindThatGamerWhichGame)
{
- case FALSE:
+ case SLOT_MACHINE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
{
flag = TRUE;
@@ -2044,7 +2045,7 @@ void sub_80EDD78(u16 nCoinsPaidOut)
break;
}
return;
- case TRUE:
+ case ROULETTE:
if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
{
flag = TRUE;
@@ -2072,15 +2073,15 @@ void sub_80EDD78(u16 nCoinsPaidOut)
}
}
-void sub_80EDE70(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = FALSE;
+ sFindThatGamerWhichGame = SLOT_MACHINE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
-void sub_80EDE84(u16 nCoinsSpent)
+void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent)
{
- sFindThatGamerWhichGame = TRUE;
+ sFindThatGamerWhichGame = ROULETTE;
sFindThatGamerCoinsSpent = nCoinsSpent;
}
@@ -2448,8 +2449,8 @@ void sub_80EE72C(void)
show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
show->trainerFanClub.active = FALSE;
StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
- show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0];
- show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1];
+ show->trainerFanClub.words[0] = gSaveBlock1Ptr->easyChatProfile[0];
+ show->trainerFanClub.words[1] = gSaveBlock1Ptr->easyChatProfile[1];
tv_store_id_3x(show);
show->trainerFanClub.language = gGameLanguage;
}
@@ -2565,13 +2566,13 @@ void sub_80EEA70(void)
show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
show->secretBaseSecrets.active = FALSE;
StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
- show->secretBaseSecrets.stepsInBase = VarGet(VAR_0x40EC);
+ show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER);
sub_80E980C();
StringCopy(strbuf, gStringVar1);
StripExtCtrlCodes(strbuf);
StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
- show->secretBaseSecrets.item = VarGet(VAR_0x40ED);
- show->secretBaseSecrets.flags = VarGet(VAR_0x40EE) + (VarGet(VAR_0x40EF) << 16);
+ show->secretBaseSecrets.item = VarGet(VAR_SECRET_BASE_LAST_ITEM_USED);
+ show->secretBaseSecrets.flags = VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) + (VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) << 16);
tv_store_id_3x(show);
show->secretBaseSecrets.language = gGameLanguage;
if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
@@ -3603,7 +3604,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);
}
@@ -7350,7 +7351,7 @@ static void DoTVShowWhatsNo1InHoennToday(void)
ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
}
-u8 sub_80F5180(TVShow *show)
+u8 TVShowGetFlagCount(TVShow *show)
{
u8 i;
u8 tot;
@@ -7365,7 +7366,7 @@ u8 sub_80F5180(TVShow *show)
return tot;
}
-u8 sub_80F51AC(TVShow *show, u8 a1)
+u8 TVShowGetStateForFlagNumber(TVShow *show, u8 a1)
{
u8 i;
u8 tot;
@@ -7399,7 +7400,7 @@ static void DoTVShowSecretBaseSecrets(void)
case 0:
TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 0)
{
sTVShowState = 8;
@@ -7408,12 +7409,12 @@ static void DoTVShowSecretBaseSecrets(void)
{
show->secretBaseSecrets.savedState = 1;
sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
}
break;
case 1:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
switch (bitCount)
{
case 1:
@@ -7423,11 +7424,11 @@ static void DoTVShowSecretBaseSecrets(void)
show->secretBaseSecrets.savedState = 2;
if (sTVSecretBaseSecretsRandomValues[0] == 0)
{
- sTVShowState = sub_80F51AC(show, 1);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 1);
}
else
{
- sTVShowState = sub_80F51AC(show, 0);
+ sTVShowState = TVShowGetStateForFlagNumber(show, 0);
}
break;
default:
@@ -7440,13 +7441,13 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 2;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
break;
}
break;
case 2:
TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- bitCount = sub_80F5180(show);
+ bitCount = TVShowGetFlagCount(show);
if (bitCount == 2)
{
sTVShowState = 9;
@@ -7462,7 +7463,7 @@ static void DoTVShowSecretBaseSecrets(void)
}
}
show->secretBaseSecrets.savedState = 3;
- sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]);
+ sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
}
break;
case 3:
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index bbc256915..02648bf93 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -114,7 +114,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++;
return 2;
case 15:
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
return 2;
}
break;
@@ -146,7 +146,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
case 2:
if (TextPrinterWaitWithDownArrow(textPrinter))
{
- FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x;
textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y;
textPrinter->state = 0;
@@ -166,12 +166,12 @@ u16 Font6Func(struct TextPrinter *textPrinter)
{
if (textPrinter->scrollDistance < sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed])
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance = 0;
}
else
{
- ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4));
+ ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor));
textPrinter->scrollDistance -= sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed];
}
CopyWindowToVram(textPrinter->printerTemplate.windowId, 2);
@@ -214,7 +214,7 @@ static void DecompressGlyphFont6(u16 glyph)
gUnknown_03002F90.unk81 = 0x10;
}
-u8 GetGlyphWidthFont6(void)
+u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese)
{
return 0x10;
}
diff --git a/src/wallclock.c b/src/wallclock.c
index 546750ba6..d3bbcf7a2 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -793,7 +793,7 @@ static void Task_SetClock2(u8 taskId)
static void Task_SetClock3(u8 taskId)
{
- SetWindowBorderStyle(0, FALSE, 0x250, 0x0d);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x250, 0x0d);
AddTextPrinterParameterized(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL);
PutWindowTilemap(0);
schedule_bg_copy_tilemap_to_vram(0);
@@ -812,7 +812,7 @@ static void Task_SetClock4(u8 taskId)
case 1: //B button
case -1: //NO
PlaySE(SE_SELECT);
- sub_8198070(0, FALSE);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
ClearWindowTilemap(0);
gTasks[taskId].func = Task_SetClock2;
break;
diff --git a/src/water.c b/src/water.c
index d13b1378e..20bf2542d 100644
--- a/src/water.c
+++ b/src/water.c
@@ -13,35 +13,33 @@
#include "constants/battle.h"
#include "constants/rgb.h"
-extern void sub_810721C(struct Sprite *);
-extern void sub_8107228(struct Sprite *);
-extern void sub_8107260(struct Sprite *);
-extern void sub_8107380(struct Sprite *);
-extern void sub_8107408(struct Sprite *);
-extern void sub_8107430(struct Sprite *);
-extern void sub_810744C(struct Sprite *);
-extern void sub_81074E4(struct Sprite *);
-extern void sub_81075EC(struct Sprite *);
-extern void sub_8107674(struct Sprite *);
-extern void sub_8107730(struct Sprite *);
-extern void sub_81077A4(struct Sprite *);
-extern void sub_81077C0(struct Sprite *);
-extern void sub_80A78AC(struct Sprite *);
-extern void sub_8107894(struct Sprite *);
-extern void sub_81078D0(struct Sprite *);
-extern void sub_810790C(struct Sprite *);
-extern void sub_8108034(struct Sprite *);
-extern void sub_8108098(struct Sprite *);
-extern void sub_810851C(struct Sprite *);
-extern void sub_81087C0(struct Sprite *);
-extern void sub_810886C(struct Sprite *);
-extern void sub_8108B2C(struct Sprite *);
-extern void sub_8108B94(struct Sprite *);
-extern void sub_8108BE0(struct Sprite *);
-extern void sub_8108C08(struct Sprite *);
-extern void sub_8108C54(struct Sprite *);
-extern void sub_8108CDC(struct Sprite *);
-extern void sub_80A8EE4(struct Sprite *);
+void sub_810721C(struct Sprite *);
+void sub_8107228(struct Sprite *);
+void sub_8107260(struct Sprite *);
+void sub_8107380(struct Sprite *);
+void sub_8107408(struct Sprite *);
+void sub_8107430(struct Sprite *);
+void sub_810744C(struct Sprite *);
+void sub_81074E4(struct Sprite *);
+void sub_81075EC(struct Sprite *);
+void sub_8107674(struct Sprite *);
+void sub_8107730(struct Sprite *);
+void sub_81077A4(struct Sprite *);
+void sub_81077C0(struct Sprite *);
+void sub_8107894(struct Sprite *);
+void sub_81078D0(struct Sprite *);
+void sub_810790C(struct Sprite *);
+void sub_8108034(struct Sprite *);
+void sub_8108098(struct Sprite *);
+void sub_810851C(struct Sprite *);
+void sub_81087C0(struct Sprite *);
+void sub_810886C(struct Sprite *);
+void sub_8108B2C(struct Sprite *);
+void sub_8108B94(struct Sprite *);
+void sub_8108BE0(struct Sprite *);
+void sub_8108C08(struct Sprite *);
+void sub_8108C54(struct Sprite *);
+void sub_8108CDC(struct Sprite *);
void sub_810756C(u8);
void sub_81076F4(u8);
void sub_8107B84(u8);
diff --git a/src/window.c b/src/window.c
index 3da529178..fbce57743 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6,7 +6,8 @@
u32 filler_03002F58;
u32 filler_03002F5C;
-u8 gUnknown_03002F60;
+// This global is set to 0 and never changed.
+u8 gTransparentTileNumber;
u32 filler_03002F64;
void *gUnknown_03002F70[4];
extern u32 gUnneededFireRedVariable;
@@ -106,7 +107,7 @@ bool16 InitWindows(const struct WindowTemplate *templates)
}
}
- gUnknown_03002F60 = 0;
+ gTransparentTileNumber = 0;
return TRUE;
}
@@ -359,13 +360,14 @@ void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 h
}
}
+// Fills a window with transparent tiles.
void ClearWindowTilemap(u8 windowId)
{
struct Window windowLocal = gWindows[windowId];
FillBgTilemapBufferRect(
windowLocal.window.bg,
- gUnknown_03002F60,
+ gTransparentTileNumber,
windowLocal.window.tilemapLeft,
windowLocal.window.tilemapTop,
windowLocal.window.width,
@@ -451,6 +453,7 @@ void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOff
LZ77UnCompWram(src, gWindows[windowId].tileData + (0x20 * tileOffset));
}
+// Sets all pixels within the window to the fillValue color.
void FillWindowPixelBuffer(u8 windowId, u8 fillValue)
{
int fillSize = gWindows[windowId].window.width * gWindows[windowId].window.height;