summaryrefslogtreecommitdiff
path: root/src/party_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/party_menu.c')
-rwxr-xr-xsrc/party_menu.c5804
1 files changed, 3037 insertions, 2767 deletions
diff --git a/src/party_menu.c b/src/party_menu.c
index f9977fb89..00432e6db 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -22,7 +22,8 @@
#include "field_specials.h"
#include "field_weather.h"
#include "fieldmap.h"
-#include "fldeff_softboiled.h"
+#include "fldeff.h"
+#include "fldeff_misc.h"
#include "frontier_util.h"
#include "gpu_regs.h"
#include "graphics.h"
@@ -72,14 +73,16 @@
#include "constants/species.h"
#include "constants/vars.h"
-enum {
+enum
+{
CAN_LEARN_MOVE,
CANNOT_LEARN_MOVE,
ALREADY_KNOWS_MOVE,
CANNOT_LEARN_MOVE_IS_EGG
};
-struct Unk_Rodata1 {
+struct Unk_Rodata1
+{
void (*unk0)(u8, u8, u8, u8, u8, u8);
u8 unk4[24];
u8 unk1C;
@@ -88,7 +91,8 @@ struct Unk_Rodata1 {
u8 unk1F;
};
-struct Struct203CEC4 {
+struct Struct203CEC4
+{
TaskFunc unk0;
MainCallback exitCallback;
u32 unk8_0:1;
@@ -104,9 +108,10 @@ struct Struct203CEC4 {
s16 data[16];
};
-struct Struct203CEDC {
- struct Unk_Rodata1 *unk0;
- u8 *unk4;
+struct Struct203CEDC
+{
+ const struct Unk_Rodata1 *unk0;
+ const u8 *unk4;
u8 windowId;
u8 unk9;
u8 unkA;
@@ -114,351 +119,1421 @@ struct Struct203CEDC {
u8 unkC;
};
-struct Struct8615C08 {
- const u8 *textPtr;
- TaskFunc func;
-};
-
-struct Struct8615D9C {
- bool8 (*fieldMoveFunc)(void);
- u8 msgID;
-};
-
-EWRAM_DATA struct Struct203CEC4 *gUnknown_0203CEC4 = NULL;
+static EWRAM_DATA struct Struct203CEC4 *gUnknown_0203CEC4 = NULL;
EWRAM_DATA struct Struct203CEC8 gUnknown_0203CEC8 = {0};
-EWRAM_DATA struct Struct203CEDC *gUnknown_0203CEDC = NULL;
-EWRAM_DATA u8 *gUnknown_0203CEE0 = NULL;
-EWRAM_DATA u8 *gUnknown_0203CEE4 = NULL;
+static EWRAM_DATA struct Struct203CEDC *gUnknown_0203CEDC = NULL;
+static EWRAM_DATA u8 *gUnknown_0203CEE0 = NULL;
+static EWRAM_DATA u8 *gUnknown_0203CEE4 = NULL;
EWRAM_DATA u8 gUnknown_0203CEE8 = 0;
EWRAM_DATA u8 gUnknown_0203CEE9 = 0;
EWRAM_DATA MainCallback gPostMenuFieldCallback = NULL;
-EWRAM_DATA u16 *gUnknown_0203CEF0 = 0;
-EWRAM_DATA u16 *gUnknown_0203CEF4 = 0;
+static EWRAM_DATA u16 *gUnknown_0203CEF0 = 0;
+static EWRAM_DATA u16 *gUnknown_0203CEF4 = 0;
EWRAM_DATA u8 gSelectedOrderFromParty[4] = {0};
-EWRAM_DATA u16 gUnknown_0203CEFC = 0;
-EWRAM_DATA u16 gUnknown_0203CEFE = 0; // unused
+static EWRAM_DATA u16 gUnknown_0203CEFC = 0;
+static EWRAM_DATA u16 gUnknown_0203CEFE = 0; // unused
EWRAM_DATA u8 gUnknown_0203CF00[3] = {0};
-// BELOW TO BE CONVERTED TO C
-
-extern u32 gUnknown_08615048[]; // tutor compatibility table
-extern struct BgTemplate gUnknown_086156B8[];
-extern struct Unk_Rodata1 gUnknown_086156C4[2];
-// extern struct Unk_Rodata1 gUnknown_086156E4;
-extern u8 gUnknown_08615704[][6][8];
-extern u8 gUnknown_086157C4[];
-extern u8 gUnknown_086157E0[];
-extern const u8 gUnknown_086157FC[][3];
-extern struct WindowTemplate gUnknown_08615810[];
-extern struct WindowTemplate gUnknown_08615850[];
-extern struct WindowTemplate gUnknown_086158D0[];
-extern struct WindowTemplate gUnknown_08615890[];
-extern struct WindowTemplate gUnknown_08615908;
-extern struct WindowTemplate gUnknown_08615910;
-extern struct WindowTemplate gUnknown_08615918;
-extern struct WindowTemplate gUnknown_08615920;
-extern struct WindowTemplate gUnknown_08615928;
-extern struct WindowTemplate gUnknown_08615930;
-extern struct WindowTemplate gUnknown_08615938;
-extern struct WindowTemplate gUnknown_08615940;
-extern struct WindowTemplate gUnknown_08615948;
-extern struct WindowTemplate gUnknown_08615950;
-extern struct WindowTemplate gUnknown_08615958;
-extern struct WindowTemplate gUnknown_08615960;
-extern struct WindowTemplate gUnknown_08615968;
-extern struct WindowTemplate gUnknown_08615970;
-extern u8 gUnknown_08615988[];
-extern u8 gUnknown_086159CE[];
-extern u8 gUnknown_08615A14[];
-extern u8 gUnknown_08615A4A[];
-extern u8 gUnknown_08615A80[];
-extern u8 gUnknown_08615AB6[];
-extern u8 gUnknown_08615AB8[];
-extern u8 gUnknown_08615ABA[];
-extern u8 gUnknown_08615ABD[];
-extern u8 gUnknown_08615AC0[];
-extern u8 gUnknown_08615AC3[];
-extern u8 gUnknown_08615AC5[];
-extern u8 gUnknown_08615AC7[];
-extern u8 gUnknown_08615AC9[];
-extern u8 gUnknown_08615ACB[];
-extern u8 gUnknown_08615ACD[];
-extern u8 gUnknown_08615AD0[];
-extern u8 gUnknown_08615AD3[];
-extern u8 gUnknown_08615AD6[];
-extern u8 gUnknown_08615AD9[];
-extern u8 gUnknown_08615ADC[];
-extern u8 gUnknown_08615ADF[];
-extern u8 gUnknown_08615AE2[];
-extern u8 gUnknown_08615AE5[];
-extern u8 gUnknown_08615AE8[];
-extern u8 gUnknown_08615AEB[];
-extern u8 gUnknown_08615AEE[];
-extern u8 gUnknown_08615AF1[];
-extern const u8 *gUnknown_08615AF4[];
-extern const u8 *gUnknown_08615B60[];
-extern struct Struct8615C08 gUnknown_08615C08[];
-extern u8 *gUnknown_08615D38[];
-extern u8 gUnknown_08615D70[];
-extern const u16 gUnknown_08615D7E[];
-extern const struct Struct8615D9C gUnknown_08615D9C[];
-extern const u8 *gUnknown_08615E0C[];
-extern const struct SpriteSheet gUnknown_08615EB0;
-extern const struct SpritePalette gUnknown_08615EB8;
-extern struct SpriteTemplate gSpriteTemplate_8615EC0;
-extern const struct CompressedSpriteSheet gUnknown_08615EF8;
-extern const struct CompressedSpritePalette gUnknown_08615F00;
-extern struct SpriteTemplate gSpriteTemplate_8615F08;
-extern const struct CompressedSpriteSheet gUnknown_08615F70;
-extern struct SpriteTemplate gSpriteTemplate_8615F78;
-extern const struct CompressedSpriteSheet gUnknown_08615FF8;
-extern const struct CompressedSpritePalette gUnknown_08616000;
-extern struct SpriteTemplate gSpriteTemplate_8616008;
-extern u8 gUnknown_08616020[];
-extern u16 gUnknown_08616040[];
-
-// ABOVE TO BE CONVERTED TO C
-
extern void (*gUnknown_03006328)(u8, TaskFunc);
-void reset_brm(void);
-void PartyMenuInitCallback(void);
-bool8 PartyMenuSetup(void);
-void sub_81B209C(void);
-void PartyMenuExit(void);
-bool8 AllocPartyMenuBg(void);
-bool8 AllocPartyMiscGfx(void);
-void sub_81B239C(u8);
-void PartyMenuInitHelperStructs(u8);
-void LoadHeldItemIcons(void);
-void LoadPartyMenuPokeballGfx(void);
-void LoadPartyMenuAilmentGfx(void);
-bool8 party_menu_add_per_mon_objects(void);
-bool8 RenderPartyMenuBoxes(void);
-void sub_81B0F28(void);
-void sub_81B2428(u8);
-void display_pokemon_menu_message(u32);
-void PartyMenuExitTask(u8);
-void FreePartyPointers(void);
-void PartyPaletteBufferCopy(u8);
-void sub_81B0CEC(u8);
-void UpdateSelectedPartyBox(struct Struct203CEDC *, u8);
-void sub_81B2720(u8);
-void DisplayPartyPokemonSelectForRelearner(u8);
-void DisplayPartyPokemonSelectForContest(u8);
-void DisplayPartyPokemonSelectForBattle(u8);
-void sub_81B0B98(u8);
-void DisplayPartyPokemonSelectHeldItemRelated(u8);
-bool8 sub_81B0BFC(u8);
-void DisplayPartyPokemonData(u8);
-void sub_81B0FCC(u8, u8);
-void DisplayPartyPokemonNickname(struct Pokemon *, struct Struct203CEDC *, u8);
-void DisplayPartyPokemonLevelCheck(struct Pokemon *, struct Struct203CEDC *, u8);
-void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *, struct Struct203CEDC *, u8);
-void DisplayPartyPokemonHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
-void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
-void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct Struct203CEDC *);
-void DisplayPartyPokemonOtherText(u8, struct Struct203CEDC *, u8);
-u8 sub_81B8830(void);
-bool8 GetBattleEntryEligibility(struct Pokemon *);
-bool8 sub_81B218C(u8);
-void DisplayPartyPokemonSelectToTeachMove(u8, u16, u8);
-u8 CanPartyPokemonLearnTMTutor(struct Pokemon *, u16, u8);
-void DisplayPartyPokemonBarDetail(u8, const u8*, u8, u8*);
-void DisplayPartyPokemonLevel(u8, struct Struct203CEDC *);
-void DisplayPartyPokemonGender(u8, u16, u8*, struct Struct203CEDC *);
-void DisplayPartyPokemonHP(u16, struct Struct203CEDC *);
-void DisplayPartyPokemonMaxHP(u16, struct Struct203CEDC *);
-void DisplayPartyPokemonHPBar(u16, u16, struct Struct203CEDC *);
-void party_menu_link_mon_icon_anim(u16, u32, struct Struct203CEDC *, u8, u32);
-void party_menu_link_mon_held_item_object(u16, u16, struct Struct203CEDC *);
-void party_menu_link_mon_pokeball_object(u16, struct Struct203CEDC *);
-void party_menu_link_mon_status_condition_object(u16, u8, struct Struct203CEDC *);
-void party_menu_held_item_object(struct Pokemon *, struct Struct203CEDC *);
-void party_menu_pokeball_object(struct Pokemon *, struct Struct203CEDC *);
-void party_menu_icon_anim(struct Pokemon *, struct Struct203CEDC *, u32);
-void party_menu_status_condition_object(struct Pokemon *, struct Struct203CEDC *);
-u8 sub_81B5F74(u8, u8);
-void sub_81B120C(void);
-u8 sub_81B5F34(u8, u8);
-void AnimateSelectedPartyIcon(u8, u8);
-void sub_81B5F98(u8, u8);
-u8 GetPartyBoxPalBitfield(u8, u8);
-bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8);
-u8 sub_81B8F38(u8);
-void c3_0811FAB4(u8);
-void sub_81B9080(void);
-void sub_81B4F88(void);
-void sub_81B15D0(u8, s8*);
-void sub_81B140C(u8, s8*);
-u16 PartyMenuButtonHandler(s8*);
-s8* sub_81B13EC(void);
-bool8 sub_81B15A4(u8*);
-void sub_81B302C(u8*);
-void sub_81B9140(void);
-void sub_81B6794(u8);
-void sub_81B7E4C(u8);
-void sub_81B8474(u8);
-void sub_81B7FAC(u8);
-void sub_81B3938(u8);
-void sub_81B21AC(u8, u8);
-void sub_81B36FC(u8);
-void sub_81B407C(u8);
-void sub_81B2210(u8);
-bool8 sub_81B1660(u8);
-const u8* sub_81B88BC(void);
-u8 sub_81B1B5C(const u8*, u8);
-void sub_81B16D4(u8);
-void sub_81B334C(void);
-void sub_81B1708(u8);
-bool8 sub_81B1BD4(void);
-void sub_81B1C1C(u8);
-void sub_81B8558(void);
-void UpdateCurrentPartySelection(s8*, s8);
-void SetNewPartySelectTarget1(s8*, s8);
-void SetNewPartySelectTarget2(s8*, s8);
-s8 sub_81B1B00(s8, s8);
-void sub_81B3300(const u8*);
-void sub_81B1B8C(u8);
-void DisplayPartyPokemonHPCheck(struct Pokemon*, struct Struct203CEDC*, u8);
-void DisplayPartyPokemonHPBarCheck(struct Pokemon*, struct Struct203CEDC*);
-bool16 sub_81B2134(struct Pokemon*);
-bool16 sub_81B2164(struct Pokemon*);
-void sub_81B2248(u8);
-void sub_81B227C(u8);
-bool8 sub_81B2370(u16, u8);
-u16 sub_81B2360(u8);
-bool8 sub_81B314C(void);
-void sub_81B3414(struct Pokemon*, u8);
-u8 sub_81B8A2C(struct Pokemon*);
-u8 sub_81B856C(s8);
-void sub_81B469C(u8);
-void sub_81B3730(u8);
-void sub_81B3828(void);
-void pokemon_change_order(void);
-void sub_81B3894(void);
-void sub_81B3CC0(u8);
-void sub_81B3D48(u8);
-void swap_pokemon_and_oams(void);
-void sub_81B3E60(u8);
-void sub_81B41C4(void);
-void c2_8123744(void);
-void sub_81B452C(void);
-void sub_81B4350(u8);
-void sub_81B42D0(u8);
-void sub_81B43A8(u8);
-void sub_81B43DC(u8);
-void sub_81B44FC(u8);
-void sub_81B4578(void);
-void sub_81B4624(u8);
-void sub_81B5C94(struct Pokemon*, struct Struct203CEDC*);
-void sub_81B48A8(u8);
-void sub_81B48DC(u8);
-void sub_81B4988(u8);
-void sub_81B4A98(void);
-void sub_81B4AE0(void);
-void sub_81B4B6C(u8);
-void sub_81B4BA0(u8);
-void sub_81B4C60(u8);
-void sub_81B4C94(u8);
-bool8 sub_81B8A7C(void);
-void sub_81B53FC(u8);
-void sub_81B5430(u8);
-void task_brm_cancel_1_on_keypad_a_or_b(u8);
-void sub_81B5674(u8);
-void sub_81B57DC(void);
-void sub_81B5864(void);
-void sub_81B56A4(u8);
-void sub_81B56D8(u8);
-void task_launch_hm_phase_2(u8);
-u16 brm_get_selected_species(void);
-void sub_81B5B38(u8, struct Pokemon*);
-void UpdatePartyMonIconFrame(struct Sprite*);
-void UpdatePartyMonIconFrameAndBounce(struct Sprite*);
-void sub_81B5CB0(u16, struct Struct203CEDC*);
-void sub_81B5DF0(u8, u8);
-void sub_81B5E74(struct Sprite*);
-void party_menu_get_status_condition_and_update_object(struct Pokemon*, struct Struct203CEDC*);
-void party_menu_update_status_condition_object(u8, struct Struct203CEDC*);
-u8 sub_81B8984(void);
-void sub_81B6280(u8);
-void c2_815ABFC(void);
-u8 GetItemEffectType(u16);
-void sub_81B672C(u8);
-u16 sub_81B691C(struct Pokemon*, u8);
-void option_menu_get_string(u8, u8*);
-void sub_81B6BB4(u8);
-void ether_effect_related_2(u8);
-void ether_effect_related(u8);
-void sub_81B6EB4(u8);
-void sub_81B6FF4(u8);
-void sub_81B6F60(u8);
-void sub_81B6F98(u8);
-void sub_81B77AC(u8);
-void sub_81B7028(u8);
-void sub_81B7088(u8);
-void sub_81B7230(u8);
-void sub_81B70B8(void);
-void sub_81B70F0(void);
-void sub_81B711C(u8);
-void sub_81B7154(u8);
-void sub_81B71D4(u8);
-void sub_81B7294(u8);
-void sub_81B72C8(u8);
-void sub_81B73E4(u8);
-void sub_81B79A0(struct Pokemon*, s16*);
-void sub_81B754C(u8, struct Pokemon*);
-void sub_81B75D4(u8);
-void sub_81B767C(u8);
-void sub_81B7634(u8);
-void sub_81B76C8(u8);
-void sub_81B7704(u8);
-void sub_81B7810(u8);
-void sub_81B787C(u8);
-void sub_81B7910(u8, u16);
-void sub_81B7A28(u8);
-void task_sacred_ash_party_loop(u8);
-void sub_81B7C10(u8);
-void sub_81B8044(u8);
-void sub_81B83B8(u8);
-void sub_81B82A0(u8);
-void sub_81B83F0(u16);
-void sub_81B814C(void);
-void sub_81B8088(u8);
-void sub_81B8104(u8);
-void sub_81B81A8(void);
-bool8 sub_81B841C(u16);
-void sub_81B8230(u8);
-void sub_81B82D4(u8);
-void sub_81B879C(u8);
-void sub_81B8558(void);
-bool8 GetBattleEntryEligibility(struct Pokemon*);
-bool8 sub_81B8770(u8);
-u8 sub_81B8888(void);
-u8 sub_81B885C(void);
-void sub_81B87E8(u8);
-u8 pokemon_order_func(u8);
-void sub_81B8FB0(u8, u8);
-void sub_81B8C88(u8*, bool8);
-void sub_81B8D88(u8*, u8, u8);
-void sub_81B917C(u8);
-void sub_81B91B4(u8);
-void sub_81B9294(u8);
-void sub_81B9240(u8);
-void sub_81B9390(void);
-void task_hm_without_phase_2(u8);
-void sub_81B9424(u8);
-void sub_81B9470(void);
-void sub_81B94D0(u8);
-void sub_81B953C(u8);
-void sub_81B9588(void);
-void sub_81B9640(u8);
-void sub_81B97DC(struct Pokemon*, u8, u8);
-
-void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallback callback)
+static void reset_brm(void);
+static void PartyMenuInitCallback(void);
+static bool8 PartyMenuSetup(void);
+static void sub_81B209C(void);
+static void PartyMenuExit(void);
+static bool8 AllocPartyMenuBg(void);
+static bool8 AllocPartyMiscGfx(void);
+static void sub_81B239C(u8);
+static void PartyMenuInitHelperStructs(u8);
+static void LoadPartyMenuPokeballGfx(void);
+static void LoadPartyMenuAilmentGfx(void);
+static bool8 party_menu_add_per_mon_objects(void);
+static bool8 RenderPartyMenuBoxes(void);
+static void sub_81B0F28(void);
+static void sub_81B2428(u8);
+static void PartyMenuExitTask(u8);
+static void FreePartyPointers(void);
+static void PartyPaletteBufferCopy(u8);
+static void sub_81B0CEC(u8);
+static void UpdateSelectedPartyBox(struct Struct203CEDC *, u8);
+static void sub_81B2720(u8);
+static void DisplayPartyPokemonSelectForRelearner(u8);
+static void DisplayPartyPokemonSelectForContest(u8);
+static void DisplayPartyPokemonSelectForBattle(u8);
+static void sub_81B0B98(u8);
+static void DisplayPartyPokemonSelectHeldItemRelated(u8);
+static bool8 sub_81B0BFC(u8);
+static void DisplayPartyPokemonData(u8);
+static void DisplayPartyPokemonNickname(struct Pokemon *, struct Struct203CEDC *, u8);
+static void DisplayPartyPokemonLevelCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+static void DisplayPartyPokemonHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
+static void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct Struct203CEDC *);
+static void DisplayPartyPokemonOtherText(u8, struct Struct203CEDC *, u8);
+static u8 sub_81B8830(void);
+static bool8 GetBattleEntryEligibility(struct Pokemon *);
+static bool8 sub_81B218C(u8);
+static void DisplayPartyPokemonSelectToTeachMove(u8, u16, u8);
+static u8 CanMonLearnTMTutor(struct Pokemon *, u16, u8);
+static void DisplayPartyPokemonBarDetail(u8, const u8*, u8, const u8*);
+static void DisplayPartyPokemonLevel(u8, struct Struct203CEDC *);
+static void DisplayPartyPokemonGender(u8, u16, u8*, struct Struct203CEDC *);
+static void DisplayPartyPokemonHP(u16, struct Struct203CEDC *);
+static void DisplayPartyPokemonMaxHP(u16, struct Struct203CEDC *);
+static void DisplayPartyPokemonHPBar(u16, u16, struct Struct203CEDC *);
+static void party_menu_link_mon_icon_anim(u16, u32, struct Struct203CEDC *, u8, u32);
+static void party_menu_link_mon_held_item_object(u16, u16, struct Struct203CEDC *);
+static void party_menu_link_mon_pokeball_object(u16, struct Struct203CEDC *);
+static void party_menu_link_mon_status_condition_object(u16, u8, struct Struct203CEDC *);
+static void party_menu_held_item_object(struct Pokemon *, struct Struct203CEDC *);
+static void party_menu_pokeball_object(struct Pokemon *, struct Struct203CEDC *);
+static void party_menu_icon_anim(struct Pokemon *, struct Struct203CEDC *, u32);
+static void party_menu_status_condition_object(struct Pokemon *, struct Struct203CEDC *);
+static u8 sub_81B5F74(u8, u8);
+static void sub_81B120C(void);
+static u8 sub_81B5F34(u8, u8);
+static void AnimateSelectedPartyIcon(u8, u8);
+static void sub_81B5F98(u8, u8);
+static u8 GetPartyBoxPalBitfield(u8, u8);
+static bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8);
+static u8 sub_81B8F38(u8);
+static void c3_0811FAB4(u8);
+static void sub_81B9080(void);
+static void sub_81B4F88(void);
+static void sub_81B15D0(u8, s8*);
+static void sub_81B140C(u8, s8*);
+static u16 PartyMenuButtonHandler(s8*);
+static s8* sub_81B13EC(void);
+static bool8 sub_81B15A4(u8*);
+static void sub_81B302C(u8*);
+static void sub_81B9140(void);
+static void sub_81B6794(u8);
+static void sub_81B7E4C(u8);
+static void sub_81B8474(u8);
+static void sub_81B7FAC(u8);
+static void sub_81B3938(u8);
+static void sub_81B21AC(u8, u8);
+static void sub_81B36FC(u8);
+static void sub_81B407C(u8);
+static void sub_81B2210(u8);
+static bool8 sub_81B1660(u8);
+static const u8* sub_81B88BC(void);
+static void sub_81B16D4(u8);
+static void sub_81B334C(void);
+static void sub_81B1708(u8);
+static void sub_81B1C1C(u8);
+static void UpdateCurrentPartySelection(s8*, s8);
+static void SetNewPartySelectTarget1(s8*, s8);
+static void SetNewPartySelectTarget2(s8*, s8);
+static s8 sub_81B1B00(s8, s8);
+static void sub_81B3300(const u8*);
+static void sub_81B1B8C(u8);
+static void DisplayPartyPokemonHPCheck(struct Pokemon*, struct Struct203CEDC*, u8);
+static void DisplayPartyPokemonHPBarCheck(struct Pokemon*, struct Struct203CEDC*);
+static bool16 sub_81B2134(struct Pokemon*);
+static bool16 sub_81B2164(struct Pokemon*);
+static void sub_81B2248(u8);
+static void sub_81B227C(u8);
+static bool8 CanLearnTutorMove(u16, u8);
+static u16 GetTutorMove(u8);
+static bool8 sub_81B314C(void);
+static void sub_81B3414(struct Pokemon*, u8);
+static u8 sub_81B8A2C(struct Pokemon*);
+static u8 sub_81B856C(s8);
+static void sub_81B469C(u8);
+static void HandleMenuInput(u8);
+static void sub_81B3828(void);
+static void pokemon_change_order(void);
+static void sub_81B3894(void);
+static void sub_81B3CC0(u8);
+static void sub_81B3D48(u8);
+static void swap_pokemon_and_oams(void);
+static void sub_81B3E60(u8);
+static void sub_81B41C4(void);
+static void c2_8123744(void);
+static void sub_81B452C(void);
+static void sub_81B4350(u8);
+static void sub_81B42D0(u8);
+static void sub_81B43A8(u8);
+static void sub_81B43DC(u8);
+static void sub_81B44FC(u8);
+static void sub_81B4578(void);
+static void sub_81B4624(u8);
+static void sub_81B5C94(struct Pokemon*, struct Struct203CEDC*);
+static void sub_81B48A8(u8);
+static void sub_81B48DC(u8);
+static void sub_81B4988(u8);
+static void sub_81B4A98(void);
+static void sub_81B4AE0(void);
+static void sub_81B4B6C(u8);
+static void sub_81B4BA0(u8);
+static void sub_81B4C60(u8);
+static void sub_81B4C94(u8);
+static bool8 sub_81B8A7C(void);
+static void sub_81B53FC(u8);
+static void sub_81B5430(u8);
+static void task_brm_cancel_1_on_keypad_a_or_b(u8);
+static void sub_81B5674(u8);
+static void sub_81B57DC(void);
+static void sub_81B5864(void);
+static void sub_81B56A4(u8);
+static void sub_81B56D8(u8);
+static void task_launch_hm_phase_2(u8);
+static u16 brm_get_selected_species(void);
+static void sub_81B5B38(u8, struct Pokemon*);
+static void UpdatePartyMonIconFrame(struct Sprite*);
+static void UpdatePartyMonIconFrameAndBounce(struct Sprite*);
+static void sub_81B5CB0(u16, struct Struct203CEDC*);
+static void sub_81B5DF0(u8, u8);
+static void sub_81B5E74(struct Sprite*);
+static void party_menu_get_status_condition_and_update_object(struct Pokemon*, struct Struct203CEDC*);
+static void party_menu_update_status_condition_object(u8, struct Struct203CEDC*);
+static u8 sub_81B8984(void);
+static void sub_81B6280(u8);
+static void c2_815ABFC(void);
+static void sub_81B672C(u8);
+static u16 sub_81B691C(struct Pokemon*, u8);
+static void option_menu_get_string(u8, u8*);
+static void sub_81B6BB4(u8);
+static void ether_effect_related_2(u8);
+static void ether_effect_related(u8);
+static void sub_81B6EB4(u8);
+static void sub_81B6FF4(u8);
+static void sub_81B6F60(u8);
+static void sub_81B6F98(u8);
+static void sub_81B77AC(u8);
+static void sub_81B7028(u8);
+static void sub_81B7088(u8);
+static void sub_81B7230(u8);
+static void sub_81B70B8(void);
+static void sub_81B70F0(void);
+static void sub_81B711C(u8);
+static void sub_81B7154(u8);
+static void sub_81B71D4(u8);
+static void sub_81B7294(u8);
+static void sub_81B72C8(u8);
+static void sub_81B73E4(u8);
+static void sub_81B79A0(struct Pokemon*, s16*);
+static void sub_81B754C(u8, struct Pokemon*);
+static void sub_81B75D4(u8);
+static void sub_81B767C(u8);
+static void sub_81B7634(u8);
+static void sub_81B76C8(u8);
+static void sub_81B7704(u8);
+static void sub_81B7810(u8);
+static void sub_81B787C(u8);
+static void sub_81B7910(u8, u16);
+static void sub_81B7A28(u8);
+static void task_sacred_ash_party_loop(u8);
+static void sub_81B7C10(u8);
+static void sub_81B8044(u8);
+static void sub_81B83B8(u8);
+static void sub_81B82A0(u8);
+static void sub_81B83F0(u16);
+static void sub_81B814C(void);
+static void sub_81B8088(u8);
+static void sub_81B8104(u8);
+static void sub_81B81A8(void);
+static bool8 sub_81B841C(u16);
+static void sub_81B8230(u8);
+static void sub_81B82D4(u8);
+static void sub_81B879C(u8);
+static bool8 GetBattleEntryEligibility(struct Pokemon*);
+static bool8 sub_81B8770(u8);
+static u8 sub_81B8888(void);
+static u8 sub_81B885C(void);
+static void sub_81B87E8(u8);
+static void sub_81B8C88(u8*, bool8);
+static void sub_81B8D88(u8*, u8, u8);
+static void sub_81B917C(u8);
+static void sub_81B91B4(u8);
+static void sub_81B9294(u8);
+static void sub_81B9240(u8);
+static void sub_81B9390(void);
+static void task_hm_without_phase_2(u8);
+static void sub_81B9424(u8);
+static void sub_81B9470(void);
+static void sub_81B94D0(u8);
+static void sub_81B953C(u8);
+static void sub_81B9588(void);
+static void sub_81B9640(u8);
+static void sub_81B97DC(struct Pokemon*, u8, u8);
+static void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f);
+static void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f);
+static void CursorCb_Summary(u8 taskId);
+static void CursorCb_Switch(u8 taskId);
+static void CursorCb_Cancel1(u8 taskId);
+static void CursorCb_Item(u8 taskId);
+static void CursorCb_Give(u8 taskId);
+static void CursorCb_TakeItem(u8 taskId);
+static void CursorCb_Mail(u8 taskId);
+static void CursorCb_Read(u8 taskId);
+static void CursorCb_TakeMail(u8 taskId);
+static void CursorCb_Cancel2(u8 taskId);
+static void CursorCb_SendMon(u8 taskId);
+static void CursorCb_Enter(u8 taskId);
+static void CursorCb_NoEntry(u8 taskId);
+static void CursorCb_Store(u8 taskId);
+static void CursorCb_Register(u8 taskId);
+static void CursorCb_Trade1(u8 taskId);
+static void CursorCb_Trade2(u8 taskId);
+static void CursorCb_Toss(u8 taskId);
+static void CursorCb_FieldMove(u8 taskId);
+static bool8 SetUpFieldMove_Surf(void);
+static bool8 SetUpFieldMove_Fly(void);
+static bool8 SetUpFieldMove_Waterfall(void);
+static bool8 SetUpFieldMove_Dive(void);
+
+// static const data
+#include "data/pokemon/tutor_learnsets.h"
+
+static const struct BgTemplate gUnknown_086156B8[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+};
+
+static const struct Unk_Rodata1 gUnknown_086156C4[] =
+{
+ {BlitBitmapToPartyWindow_Default1, {0x18, 0xB, 0x28, 0xD, 0x20, 0x14, 0x20, 8, 0x40, 0x14, 8, 8, 0x26, 0x25, 0x18, 8, 0x35, 0x25, 0x18, 8, 0x18, 0x23, 0x30, 3}, 0xC, 0x22, 0x40, 0x10},
+ {BlitBitmapToPartyWindow_Default2, {0x16, 3, 0x28, 0xD, 0x1E, 0xC, 0x20, 8, 0x3E, 0xC, 8, 8, 0x66, 0xC, 0x18, 8, 0x75, 0xC, 0x18, 8, 0x58, 0xA, 0x30, 3}, 0x4D, 4, 0x40, 0x10},
+};
+
+static const u8 gUnknown_08615704[][6][8] =
+{
+ {
+ {16, 40, 20, 50, 50, 52, 16, 34},
+ {104, 18, 108, 28, 136, 27, 102, 25},
+ {104, 42, 108, 52, 136, 51, 102, 49},
+ {104, 66, 108, 76, 136, 75, 102, 73},
+ {104, 90, 108, 100, 136, 99, 102, 97},
+ {104, 114, 108, 124, 136, 123, 102, 121},
+ },
+ {
+ {16, 24, 20, 34, 50, 36, 16, 18},
+ {16, 80, 20, 90, 50, 92, 16, 74},
+ {104, 18, 108, 28, 136, 27, 102, 25},
+ {104, 50, 108, 60, 136, 59, 102, 57},
+ {104, 82, 108, 92, 136, 91, 102, 89},
+ {104, 114, 108, 124, 136, 123, 102, 121},
+ },
+ {
+ {16, 24, 20, 34, 50, 36, 16, 18},
+ {16, 80, 20, 90, 50, 92, 16, 74},
+ {104, 26, 106, 36, 136, 35, 102, 33},
+ {104, 50, 106, 60, 136, 59, 102, 57},
+ {104, 82, 106, 92, 136, 91, 102, 89},
+ {104, 106, 106, 116, 136, 115, 102, 113},
+ },
+ {
+ {16, 32, 20, 42, 50, 44, 16, 26},
+ {104, 34, 106, 44, 136, 43, 102, 41},
+ {104, 58, 106, 68, 136, 67, 102, 65},
+ {16, 104, 20, 114, 50, 116, 16, 98},
+ {104, 106, 106, 116, 136, 115, 102, 113},
+ {104, 130, 106, 140, 136, 139, 102, 137},
+ },
+};
+
+static const u32 gUnknown_086157C4[] = INCBIN_U32("graphics/interface/unknown_6157C4.bin");
+static const u32 gUnknown_086157E0[] = INCBIN_U32("graphics/interface/unknown_6157E0.bin");
+
+static const u8 gUnknown_086157FC[][3] =
+{
+ {0, 3, 2},
+ {0, 1, 6},
+ {0, 11, 12},
+ {1, 2, 3},
+ {1, 8, 9},
+ {0, 1, 2},
+};
+
+static const struct WindowTemplate gUnknown_08615810[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0x63,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 1,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 4,
+ .baseBlock = 0xA9,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 4,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 5,
+ .baseBlock = 0xDF,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 7,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 6,
+ .baseBlock = 0x115,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 10,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 7,
+ .baseBlock = 0x14B,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 13,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 8,
+ .baseBlock = 0x181,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x1DF,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_08615850[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0x63,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 8,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 4,
+ .baseBlock = 0xA9,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 1,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 5,
+ .baseBlock = 0xEF,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 5,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 6,
+ .baseBlock = 0x125,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 9,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 7,
+ .baseBlock = 0x15B,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 13,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 8,
+ .baseBlock = 0x191,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x1DF,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_08615890[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0x63,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 8,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 4,
+ .baseBlock = 0xA9,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 2,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 5,
+ .baseBlock = 0xEF,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 5,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 6,
+ .baseBlock = 0x125,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 9,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 7,
+ .baseBlock = 0x15B,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 12,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 8,
+ .baseBlock = 0x191,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x1DF,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_086158D0[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 2,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0x63,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 3,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 5,
+ .baseBlock = 0xA9,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 12,
+ .tilemapTop = 6,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 6,
+ .baseBlock = 0xDF,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 11,
+ .width = 10,
+ .height = 7,
+ .paletteNum = 4,
+ .baseBlock = 0x115,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 12,
+ .tilemapTop = 12,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 7,
+ .baseBlock = 0x16B,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 12,
+ .tilemapTop = 15,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 8,
+ .baseBlock = 0x1A1,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_08615908 =
+{
+ .bg = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 17,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 3,
+ .baseBlock = 0x1C7,
+};
+
+static const struct WindowTemplate gUnknown_08615910 =
+{
+ .bg = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 18,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 3,
+ .baseBlock = 0x1C7,
+};
+
+static const struct WindowTemplate gUnknown_08615918 =
+{
+ .bg = 0,
+ .tilemapLeft = 24,
+ .tilemapTop = 16,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 3,
+ .baseBlock = 0x1D3,
+};
+
+static const struct WindowTemplate gUnknown_08615920 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 17,
+ .width = 21,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x24F,
+};
+
+static const struct WindowTemplate gUnknown_08615928 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 17,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x279,
+};
+
+static const struct WindowTemplate gUnknown_08615930 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 17,
+ .width = 20,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x299,
+};
+
+static const struct WindowTemplate gUnknown_08615938 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 17,
+ .width = 18,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x299,
+};
+
+static const struct WindowTemplate gUnknown_08615940 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 17,
+ .width = 16,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x299,
+};
+
+static const struct WindowTemplate gUnknown_08615948 =
+{
+ .bg = 2,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 20,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x299,
+};
+
+static const struct WindowTemplate gUnknown_08615950 =
+{
+ .bg = 2,
+ .tilemapLeft = 23,
+ .tilemapTop = 13,
+ .width = 6,
+ .height = 6,
+ .paletteNum = 14,
+ .baseBlock = 0x39D,
+};
+
+static const struct WindowTemplate gUnknown_08615958 =
+{
+ .bg = 2,
+ .tilemapLeft = 21,
+ .tilemapTop = 13,
+ .width = 8,
+ .height = 6,
+ .paletteNum = 14,
+ .baseBlock = 0x39D,
+};
+
+static const struct WindowTemplate gUnknown_08615960 =
+{
+ .bg = 2,
+ .tilemapLeft = 19,
+ .tilemapTop = 11,
+ .width = 10,
+ .height = 8,
+ .paletteNum = 14,
+ .baseBlock = 0x2E9,
+};
+
+static const struct WindowTemplate gUnknown_08615968 =
+{
+ .bg = 2,
+ .tilemapLeft = 21,
+ .tilemapTop = 9,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x2E9,
+};
+
+static const struct WindowTemplate gUnknown_08615970 =
+{
+ .bg = 2,
+ .tilemapLeft = 19,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 11,
+ .paletteNum = 14,
+ .baseBlock = 0x2E9,
+};
+
+// Unused.
+static const struct WindowTemplate gUnknown_08615978 =
+{
+ .bg = 2,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 27,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x1DF,
+};
+
+// Unused.
+static const struct WindowTemplate gUnknown_08615980 =
+{
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 13,
+ .width = 18,
+ .height = 3,
+ .paletteNum = 12,
+ .baseBlock = 0x39D,
+};
+
+static const u8 gUnknown_08615988[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 40, 59, 60, 58, 58, 58, 58, 58, 58, 61, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
+static const u8 gUnknown_086159CE[] = {24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48};
+static const u8 gUnknown_08615A14[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, 51, 51, 51, 51, 51, 54, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
+static const u8 gUnknown_08615A4A[] = {43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 49, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 50, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57};
+static const u8 gUnknown_08615A80[] = {21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39};
+static const u8 gUnknown_08615AB6[] = {11, 12};
+static const u8 gUnknown_08615AB8[] = {9, 10};
+static const u8 gUnknown_08615ABA[] = {4, 5, 6};
+static const u8 gUnknown_08615ABD[] = {1, 7, 8};
+static const u8 gUnknown_08615AC0[] = {1, 11, 12};
+static const u8 gUnknown_08615AC3[] = {59, 60};
+static const u8 gUnknown_08615AC5[] = {75, 76};
+static const u8 gUnknown_08615AC7[] = {57, 58};
+static const u8 gUnknown_08615AC9[] = {73, 74};
+static const u8 gUnknown_08615ACB[] = {89, 90};
+static const u8 gUnknown_08615ACD[] = {52, 53, 54};
+static const u8 gUnknown_08615AD0[] = {68, 69, 70};
+static const u8 gUnknown_08615AD3[] = {84, 85, 86};
+static const u8 gUnknown_08615AD6[] = {116, 117, 118};
+static const u8 gUnknown_08615AD9[] = {132, 133, 134};
+static const u8 gUnknown_08615ADC[] = {148, 149, 150};
+static const u8 gUnknown_08615ADF[] = {100, 101, 102};
+static const u8 gUnknown_08615AE2[] = {49, 55, 56};
+static const u8 gUnknown_08615AE5[] = {65, 71, 72};
+static const u8 gUnknown_08615AE8[] = {81, 87, 88};
+static const u8 gUnknown_08615AEB[] = {97, 103, 104};
+static const u8 gUnknown_08615AEE[] = {161, 167, 168};
+static const u8 gUnknown_08615AF1[] = {17, 27, 28};
+
+static const u8 *const gUnknown_08615AF4[] =
+{
+ gUnknown_085E9E43,
+ gUnknown_085EA010,
+ gUnknown_085EA02A,
+ gUnknown_085E9E55,
+ gUnknown_085E9E64,
+ gUnknown_085E9E79,
+ gUnknown_085E9E8F,
+ gUnknown_085E9EBC,
+ gUnknown_085E9ED4,
+ gUnknown_085E9EE9,
+ gUnknown_085E9FDB,
+ gUnknown_085EA046,
+ gUnknown_085EA05B,
+ gUnknown_085E9F01,
+ gUnknown_085E9F58,
+ gUnknown_085E9F6F,
+ gUnknown_085E9F81,
+ gUnknown_085E9F90,
+ gUnknown_085E9FA7,
+ gUnknown_085E9FC2,
+ gText_EmptyString2,
+ gUnknown_085E9EA6,
+ gUnknown_085E9F16,
+ gUnknown_085E9F2A,
+ gUnknown_085E9F42,
+ gUnknown_085E9FF9,
+ gUnknown_085EA073,
+};
+
+static const u8 *const gUnknown_08615B60[] =
+{
+ gUnknown_085EA091,
+ gUnknown_085EA099,
+ gUnknown_085EA09E,
+ gUnknown_085EA0A4,
+ gUnknown_085EA0AB,
+ gUnknown_085EA0E7,
+ gUnknown_085EA0B1,
+ gUnknown_085EA0B6,
+ gUnknown_085EA0BF,
+ gUnknown_085EA0C5,
+ gUnknown_085EA0CF,
+ gUnknown_085EA0D7,
+ gUnknown_085EA0DC,
+};
+
+// Unknown unused data. Feel free to remove.
+static const u16 gUnknown_08615B94[] =
+{
+ 0x0108, 0x0151, 0x0160, 0x015b, 0x002e, 0x005c, 0x0102, 0x0153, 0x014b, 0x00ed, 0x00f1, 0x010d, 0x003a, 0x003b, 0x003f, 0x0071,
+ 0x00b6, 0x00f0, 0x00ca, 0x00db, 0x00da, 0x004c, 0x00e7, 0x0055, 0x0057, 0x0059, 0x00d8, 0x005b, 0x005e, 0x00f7, 0x0118, 0x0068,
+ 0x0073, 0x015f, 0x0035, 0x00bc, 0x00c9, 0x007e, 0x013d, 0x014c, 0x0103, 0x0107, 0x0122, 0x009c, 0x00d5, 0x00a8, 0x00d3, 0x011d,
+ 0x0121, 0x013b, 0x000f, 0x0013, 0x0039, 0x0046, 0x0094, 0x00f9, 0x007f, 0x0123,
+};
+
+enum
+{
+ MENU_SUMMARY,
+ MENU_SWITCH,
+ MENU_CANCEL1,
+ MENU_ITEM,
+ MENU_GIVE,
+ MENU_TAKE_ITEM,
+ MENU_MAIL,
+ MENU_TAKE_MAIL,
+ MENU_READ,
+ MENU_CANCEL2,
+ MENU_SHIFT,
+ MENU_SEND_OUT,
+ MENU_ENTER,
+ MENU_NO_ENTRY,
+ MENU_STORE,
+ MENU_REGISTER,
+ MENU_TRADE1,
+ MENU_TRADE2,
+ MENU_TOSS,
+ MENU_FIELD_MOVES,
+};
+
+enum
+{
+ FIELD_MOVE_CUT,
+ FIELD_MOVE_FLASH,
+ FIELD_MOVE_ROCK_SMASH,
+ FIELD_MOVE_STRENGTH,
+ FIELD_MOVE_SURF,
+ FIELD_MOVE_FLY,
+ FIELD_MOVE_DIVE,
+ FIELD_MOVE_WATERFALL,
+ FIELD_MOVE_TELEPORT,
+ FIELD_MOVE_DIG,
+ FIELD_MOVE_SECRET_POWER,
+ FIELD_MOVE_MILK_DRINK,
+ FIELD_MOVE_SOFT_BOILED,
+ FIELD_MOVE_SWEET_SCENT,
+};
+
+// What a weird choice of table termination;
+#define FIELD_MOVE_TERMINATOR MOVE_SWORDS_DANCE
+
+struct
+{
+ const u8 *text;
+ TaskFunc func;
+} static const sCursorOptions[] =
+{
+ [MENU_SUMMARY] = {gText_Summary5, CursorCb_Summary},
+ [MENU_SWITCH] = {gText_Switch2, CursorCb_Switch},
+ [MENU_CANCEL1] = {gText_Cancel2, CursorCb_Cancel1},
+ [MENU_ITEM] = {gText_Item, CursorCb_Item},
+ [MENU_GIVE] = {gMenuText_Give, CursorCb_Give},
+ [MENU_TAKE_ITEM] = {gText_Take, CursorCb_TakeItem},
+ [MENU_MAIL] = {gText_Mail, CursorCb_Mail},
+ [MENU_TAKE_MAIL] = {gText_Take2, CursorCb_TakeMail},
+ [MENU_READ] = {gText_Read2, CursorCb_Read},
+ [MENU_CANCEL2] = {gText_Cancel2, CursorCb_Cancel2},
+ [MENU_SHIFT] = {gText_Shift, CursorCb_SendMon},
+ [MENU_SEND_OUT] = {gText_SendOut, CursorCb_SendMon},
+ [MENU_ENTER] = {gText_Enter, CursorCb_Enter},
+ [MENU_NO_ENTRY] = {gText_NoEntry, CursorCb_NoEntry},
+ [MENU_STORE] = {gText_Store, CursorCb_Store},
+ [MENU_REGISTER] = {gText_Register, CursorCb_Register},
+ [MENU_TRADE1] = {gText_Trade4, CursorCb_Trade1},
+ [MENU_TRADE2] = {gText_Trade4, CursorCb_Trade2},
+ [MENU_TOSS] = {gMenuText_Toss, CursorCb_Toss},
+ [MENU_FIELD_MOVES + FIELD_MOVE_CUT] = {gMoveNames[MOVE_CUT], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_FLASH] = {gMoveNames[MOVE_FLASH], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_ROCK_SMASH] = {gMoveNames[MOVE_ROCK_SMASH], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_STRENGTH] = {gMoveNames[MOVE_STRENGTH], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_SURF] = {gMoveNames[MOVE_SURF], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_FLY] = {gMoveNames[MOVE_FLY], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_DIVE] = {gMoveNames[MOVE_DIVE], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_WATERFALL] = {gMoveNames[MOVE_WATERFALL], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_TELEPORT] = {gMoveNames[MOVE_TELEPORT], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_DIG] = {gMoveNames[MOVE_DIG], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_SECRET_POWER] = {gMoveNames[MOVE_SECRET_POWER], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_MILK_DRINK] = {gMoveNames[MOVE_MILK_DRINK], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_SOFT_BOILED] = {gMoveNames[MOVE_SOFT_BOILED], CursorCb_FieldMove},
+ [MENU_FIELD_MOVES + FIELD_MOVE_SWEET_SCENT] = {gMoveNames[MOVE_SWEET_SCENT], CursorCb_FieldMove},
+};
+
+static const u8 gUnknown_08615D10[] = {0, 1, 2};
+static const u8 gUnknown_08615D13[] = {10, 0, 2};
+static const u8 gUnknown_08615D16[] = {11, 0, 2};
+static const u8 gUnknown_08615D19[] = {0, 2};
+static const u8 gUnknown_08615D1B[] = {12, 0, 2};
+static const u8 gUnknown_08615D1E[] = {13, 0, 2};
+static const u8 gUnknown_08615D21[] = {14, 0, 2};
+static const u8 gUnknown_08615D24[] = {4, 5, 9};
+static const u8 gUnknown_08615D27[] = {8, 7, 9};
+static const u8 gUnknown_08615D2A[] = {15, 0, 2};
+static const u8 gUnknown_08615D2D[] = {16, 0, 2};
+static const u8 gUnknown_08615D30[] = {17, 0, 2};
+static const u8 gUnknown_08615D33[] = {5, 18, 2};
+
+static const u8 *const gUnknown_08615D38[] =
+{
+ NULL,
+ gUnknown_08615D10,
+ gUnknown_08615D13,
+ gUnknown_08615D16,
+ gUnknown_08615D1B,
+ gUnknown_08615D1E,
+ gUnknown_08615D21,
+ gUnknown_08615D19,
+ gUnknown_08615D24,
+ gUnknown_08615D27,
+ gUnknown_08615D2A,
+ gUnknown_08615D2D,
+ gUnknown_08615D30,
+ gUnknown_08615D33,
+};
+
+static const u8 gUnknown_08615D70[] = {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};
+
+static const u16 sFieldMoves[] =
+{
+ MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH, MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL, MOVE_TELEPORT,
+ MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_TERMINATOR
+};
+
+struct
+{
+ bool8 (*fieldMoveFunc)(void);
+ u8 msgId;
+} static const sFieldMoveCursorCallbacks[] =
+{
+ [FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, 0x07},
+ [FIELD_MOVE_FLASH] = {SetUpFieldMove_Flash, 0x0d},
+ [FIELD_MOVE_ROCK_SMASH] = {SetUpFieldMove_RockSmash, 0x0d},
+ [FIELD_MOVE_STRENGTH] = {SetUpFieldMove_Strength, 0x0d},
+ [FIELD_MOVE_SURF] = {SetUpFieldMove_Surf, 0x08},
+ [FIELD_MOVE_FLY] = {SetUpFieldMove_Fly, 0x0d},
+ [FIELD_MOVE_DIVE] = {SetUpFieldMove_Dive, 0x0d},
+ [FIELD_MOVE_WATERFALL] = {SetUpFieldMove_Waterfall, 0x0d},
+ [FIELD_MOVE_TELEPORT] = {SetUpFieldMove_Teleport, 0x0d},
+ [FIELD_MOVE_DIG] = {SetUpFieldMove_Dig, 0x0d},
+ [FIELD_MOVE_SECRET_POWER] = {SetUpFieldMove_SecretPower, 0x0d},
+ [FIELD_MOVE_MILK_DRINK] = {SetUpFieldMove_SoftBoiled, 0x10},
+ [FIELD_MOVE_SOFT_BOILED] = {SetUpFieldMove_SoftBoiled, 0x10},
+ [FIELD_MOVE_SWEET_SCENT] = {SetUpFieldMove_SweetScent, 0x0d},
+};
+
+static const u8 *const gUnknown_08615E0C[] =
+{
+ gText_NotPkmnOtherTrainerWants,
+ gText_ThatIsntAnEgg,
+ gText_PkmnCantBeTradedNow,
+ gText_PkmnCantBeTradedNow,
+ gText_OtherTrainersPkmnCantBeTraded,
+ gText_EggCantBeTradedNow,
+ gText_OtherTrainerCantAcceptPkmn,
+ gText_CantTradeWithTrainer,
+ gText_CantTradeWithTrainer,
+};
+
+static const u32 gUnknown_08615E30[] = INCBIN_U32("graphics/interface/hold_icons.4bpp");
+static const u16 gUnknown_08615E70[] = INCBIN_U16("graphics/interface/hold_icons.gbapal");
+
+static const struct OamData gOamData_83765EC =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gSpriteAnim_83765F4[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_83765FC[] =
+{
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_8376604[] =
+{
+ gSpriteAnim_83765F4,
+ gSpriteAnim_83765FC,
+};
+
+static const struct SpriteSheet gUnknown_08615EB0 =
+{
+ gUnknown_08615E30, sizeof(gUnknown_08615E30), 0xd750
+};
+
+static const struct SpritePalette gUnknown_08615EB8 =
+{
+ gUnknown_08615E70, 0xd750
+};
+
+static const struct SpriteTemplate gSpriteTemplate_8615EC0 =
+{
+ 0xd750,
+ 0xd750,
+ &gOamData_83765EC,
+ gSpriteAnimTable_8376604,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+static const struct OamData sOamData_8615ED8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_8615EE0[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615EE8[] =
+{
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8615EF0[] =
+{
+ sSpriteAnim_8615EE0,
+ sSpriteAnim_8615EE8
+};
+
+static const struct CompressedSpriteSheet gUnknown_08615EF8 =
+{
+ gPartyMenuPokeball_Gfx, 0x400, 0x04b0
+};
+
+static const struct CompressedSpritePalette gUnknown_08615F00 =
+{
+ gPartyMenuPokeball_Pal, 0x04b0
+};
+
+static const struct SpriteTemplate gSpriteTemplate_8615F08 =
+{
+ .tileTag = 0x04b0,
+ .paletteTag = 0x04b0,
+ .oam = &sOamData_8615ED8,
+ .anims = sSpriteAnimTable_8615EF0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sOamData_8615F20 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_8615F28[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615F30[] =
+{
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615F38[] =
+{
+ ANIMCMD_FRAME(8, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615F40[] =
+{
+ ANIMCMD_FRAME(12, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615F48[] =
+{
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615F50[] =
+{
+ ANIMCMD_FRAME(20, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8615F58[] =
+{
+ sSpriteAnim_8615F28,
+ sSpriteAnim_8615F30,
+ sSpriteAnim_8615F38,
+ sSpriteAnim_8615F40,
+ sSpriteAnim_8615F48,
+ sSpriteAnim_8615F50
+};
+
+static const struct CompressedSpriteSheet gUnknown_08615F70 =
+{
+ gPartyMenuPokeballSmall_Gfx, 0x0300, 0x04b1
+};
+
+static const struct SpriteTemplate gSpriteTemplate_8615F78 =
+{
+ .tileTag = 1201,
+ .paletteTag = 1200,
+ .oam = &sOamData_8615F20,
+ .anims = sSpriteAnimTable_8615F58,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sOamData_8615F90 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_8615F98[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FA0[] =
+{
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FA8[] =
+{
+ ANIMCMD_FRAME(8, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FB0[] =
+{
+ ANIMCMD_FRAME(12, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FB8[] =
+{
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FC0[] =
+{
+ ANIMCMD_FRAME(20, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FC8[] =
+{
+ ANIMCMD_FRAME(24, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8615FD0[] =
+{
+ ANIMCMD_FRAME(28, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8615FD8[] =
+{
+ sSpriteAnim_8615F98,
+ sSpriteAnim_8615FA0,
+ sSpriteAnim_8615FA8,
+ sSpriteAnim_8615FB0,
+ sSpriteAnim_8615FB8,
+ sSpriteAnim_8615FC0,
+ sSpriteAnim_8615FC8,
+ sSpriteAnim_8615FD0
+};
+
+static const struct CompressedSpriteSheet gUnknown_08615FF8 =
+{
+ gStatusGfx_Icons, 0x400, 1202
+};
+
+static const struct CompressedSpritePalette gUnknown_08616000 =
+{
+ gStatusPal_Icons, 1202
+};
+
+static const struct SpriteTemplate gSpriteTemplate_8616008 =
+{
+ .tileTag = 1202,
+ .paletteTag = 1202,
+ .oam = &sOamData_8615F90,
+ .anims = sSpriteAnimTable_8615FD8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u8 gUnknown_08616020[] = {0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00};
+
+// Unused table of pointers to strings of statistics.
+static const u8 *const gUnknown_08616028[] =
+{
+ gText_HP4,
+ gText_Attack3,
+ gText_Defense3,
+ gText_SpAtk4,
+ gText_SpDef4,
+ gText_Speed2
+};
+
+static const u16 gTMHMMoves[] =
+{
+ MOVE_FOCUS_PUNCH,
+ MOVE_DRAGON_CLAW,
+ MOVE_WATER_PULSE,
+ MOVE_CALM_MIND,
+ MOVE_ROAR,
+ MOVE_TOXIC,
+ MOVE_HAIL,
+ MOVE_BULK_UP,
+ MOVE_BULLET_SEED,
+ MOVE_HIDDEN_POWER,
+ MOVE_SUNNY_DAY,
+ MOVE_TAUNT,
+ MOVE_ICE_BEAM,
+ MOVE_BLIZZARD,
+ MOVE_HYPER_BEAM,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PROTECT,
+ MOVE_RAIN_DANCE,
+ MOVE_GIGA_DRAIN,
+ MOVE_SAFEGUARD,
+ MOVE_FRUSTRATION,
+ MOVE_SOLAR_BEAM,
+ MOVE_IRON_TAIL,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER,
+ MOVE_EARTHQUAKE,
+ MOVE_RETURN,
+ MOVE_DIG,
+ MOVE_PSYCHIC,
+ MOVE_SHADOW_BALL,
+ MOVE_BRICK_BREAK,
+ MOVE_DOUBLE_TEAM,
+ MOVE_REFLECT,
+ MOVE_SHOCK_WAVE,
+ MOVE_FLAMETHROWER,
+ MOVE_SLUDGE_BOMB,
+ MOVE_SANDSTORM,
+ MOVE_FIRE_BLAST,
+ MOVE_ROCK_TOMB,
+ MOVE_AERIAL_ACE,
+ MOVE_TORMENT,
+ MOVE_FACADE,
+ MOVE_SECRET_POWER,
+ MOVE_REST,
+ MOVE_ATTRACT,
+ MOVE_THIEF,
+ MOVE_STEEL_WING,
+ MOVE_SKILL_SWAP,
+ MOVE_SNATCH,
+ MOVE_OVERHEAT,
+ MOVE_CUT,
+ MOVE_FLY,
+ MOVE_SURF,
+ MOVE_STRENGTH,
+ MOVE_FLASH,
+ MOVE_ROCK_SMASH,
+ MOVE_WATERFALL,
+ MOVE_DIVE,
+};
+
+// code
+static void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallback callback)
{
u16 i;
-
+
reset_brm();
gUnknown_0203CEC4 = Alloc(sizeof(struct Struct203CEC4));
if (gUnknown_0203CEC4 == NULL)
@@ -476,32 +1551,32 @@ void InitPartyMenu(u8 a, u8 b, u8 c, u8 d, u8 e, TaskFunc task, MainCallback cal
gUnknown_0203CEC4->unk8_1 = 0;
gUnknown_0203CEC4->unk8_2 = 0xFF;
gUnknown_0203CEC4->unk9_0 = 0xFF;
-
+
if (a == 4)
gUnknown_0203CEC4->unk8_0 = TRUE;
else
gUnknown_0203CEC4->unk8_0 = FALSE;
-
+
if (b != 0xFF)
gUnknown_0203CEC8.mode = b;
-
+
for (i = 0; i <= 15; i++)
gUnknown_0203CEC4->data[i] = 0;
for (i = 0; i < 3; i++)
gUnknown_0203CEC4->unkC[i] |= 0xFF;
-
+
if (d == 0)
gUnknown_0203CEC8.unk9 = 0;
else if (gUnknown_0203CEC8.unk9 > 5 || GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES) == SPECIES_NONE)
gUnknown_0203CEC8.unk9 = 0; // wut why is this else if?
-
+
gTextFlags.autoScroll = 0;
CalculatePlayerPartyCount();
SetMainCallback2(PartyMenuInitCallback);
}
}
-void PartyMenuCallback(void)
+static void PartyMenuCallback(void)
{
RunTasks();
AnimateSprites();
@@ -510,14 +1585,14 @@ void PartyMenuCallback(void)
UpdatePaletteFade();
}
-void PartyMenuVBlankCallback(void)
+static void PartyMenuVBlankCallback(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-void PartyMenuInitCallback(void)
+static void PartyMenuInitCallback(void)
{
while (TRUE)
{
@@ -526,131 +1601,131 @@ void PartyMenuInitCallback(void)
}
}
-bool8 PartyMenuSetup(void)
+static bool8 PartyMenuSetup(void)
{
switch (gMain.state)
{
- case 0:
- SetVBlankHBlankCallbacksToNull();
- ResetVramOamAndBgCntRegs();
- clear_scheduled_bg_copies_to_vram();
- gMain.state++;
- break;
- case 1:
- ScanlineEffect_Stop();
- gMain.state++;
- break;
- case 2:
- ResetPaletteFade();
- gPaletteFade.bufferTransferDisabled = TRUE;
- gMain.state++;
- break;
- case 3:
- ResetSpriteData();
- gMain.state++;
- break;
- case 4:
- FreeAllSpritePalettes();
- gMain.state++;
- break;
- case 5:
- if (!sub_81221AC())
- ResetTasks();
- gMain.state++;
- break;
- case 6:
- sub_81B209C();
- gMain.state++;
- break;
- case 7:
- if (!AllocPartyMenuBg())
- {
- PartyMenuExit();
- return TRUE;
- }
- else
- {
- gUnknown_0203CEC4->data[0] = 0;
- gMain.state++;
- }
- break;
- case 8:
- if (AllocPartyMiscGfx())
- gMain.state++;
- break;
- case 9:
- sub_81B239C(gUnknown_0203CEC8.mode);
- gMain.state++;
- break;
- case 10:
- PartyMenuInitHelperStructs(gUnknown_0203CEC8.mode);
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ResetVramOamAndBgCntRegs();
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ gMain.state++;
+ break;
+ case 3:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 5:
+ if (!sub_81221AC())
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 6:
+ sub_81B209C();
+ gMain.state++;
+ break;
+ case 7:
+ if (!AllocPartyMenuBg())
+ {
+ PartyMenuExit();
+ return TRUE;
+ }
+ else
+ {
gUnknown_0203CEC4->data[0] = 0;
gMain.state++;
- break;
- case 11:
- LoadHeldItemIcons();
- gMain.state++;
- break;
- case 12:
- LoadPartyMenuPokeballGfx();
- gMain.state++;
- break;
- case 13:
- LoadPartyMenuAilmentGfx();
- gMain.state++;
- break;
- case 14:
- LoadMonIconPalettes();
- gMain.state++;
- break;
- case 15:
- if (party_menu_add_per_mon_objects())
- {
- gUnknown_0203CEC4->data[0] = 0;
- gMain.state++;
- }
- break;
- case 16:
- if (RenderPartyMenuBoxes())
- {
- gUnknown_0203CEC4->data[0] = 0;
- gMain.state++;
- }
- break;
- case 17:
- sub_81B0F28();
- gMain.state++;
- break;
- case 18:
- sub_81B2428(gUnknown_0203CEC4->unk8_0);
- gMain.state++;
- break;
- case 19:
- gMain.state++;
- break;
- case 20:
- CreateTask(gUnknown_0203CEC4->unk0, 0);
- display_pokemon_menu_message(gUnknown_0203CEC4->unkA_0);
+ }
+ break;
+ case 8:
+ if (AllocPartyMiscGfx())
gMain.state++;
- break;
- case 21:
- BlendPalettes(0xFFFFFFFF, 16, 0);
- gPaletteFade.bufferTransferDisabled = FALSE;
+ break;
+ case 9:
+ sub_81B239C(gUnknown_0203CEC8.mode);
+ gMain.state++;
+ break;
+ case 10:
+ PartyMenuInitHelperStructs(gUnknown_0203CEC8.mode);
+ gUnknown_0203CEC4->data[0] = 0;
+ gMain.state++;
+ break;
+ case 11:
+ LoadHeldItemIcons();
+ gMain.state++;
+ break;
+ case 12:
+ LoadPartyMenuPokeballGfx();
+ gMain.state++;
+ break;
+ case 13:
+ LoadPartyMenuAilmentGfx();
+ gMain.state++;
+ break;
+ case 14:
+ LoadMonIconPalettes();
+ gMain.state++;
+ break;
+ case 15:
+ if (party_menu_add_per_mon_objects())
+ {
+ gUnknown_0203CEC4->data[0] = 0;
gMain.state++;
- break;
- case 22:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ }
+ break;
+ case 16:
+ if (RenderPartyMenuBoxes())
+ {
+ gUnknown_0203CEC4->data[0] = 0;
gMain.state++;
- break;
- default:
- SetVBlankCallback(PartyMenuVBlankCallback);
- SetMainCallback2(PartyMenuCallback);
- return TRUE;
+ }
+ break;
+ case 17:
+ sub_81B0F28();
+ gMain.state++;
+ break;
+ case 18:
+ sub_81B2428(gUnknown_0203CEC4->unk8_0);
+ gMain.state++;
+ break;
+ case 19:
+ gMain.state++;
+ break;
+ case 20:
+ CreateTask(gUnknown_0203CEC4->unk0, 0);
+ display_pokemon_menu_message(gUnknown_0203CEC4->unkA_0);
+ gMain.state++;
+ break;
+ case 21:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gMain.state++;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(PartyMenuVBlankCallback);
+ SetMainCallback2(PartyMenuCallback);
+ return TRUE;
}
return FALSE;
}
-void PartyMenuExit(void)
+static void PartyMenuExit(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
CreateTask(PartyMenuExitTask, 0);
@@ -658,7 +1733,7 @@ void PartyMenuExit(void)
SetMainCallback2(PartyMenuCallback);
}
-void PartyMenuExitTask(u8 taskId)
+static void PartyMenuExitTask(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -668,7 +1743,7 @@ void PartyMenuExitTask(u8 taskId)
}
}
-void reset_brm(void)
+static void reset_brm(void)
{
gUnknown_0203CEC4 = NULL;
gUnknown_0203CEE4 = NULL;
@@ -676,14 +1751,15 @@ void reset_brm(void)
gUnknown_0203CEE0 = NULL;
}
-bool8 AllocPartyMenuBg(void)
+static bool8 AllocPartyMenuBg(void)
{
gUnknown_0203CEE4 = Alloc(0x800);
if (gUnknown_0203CEE4 == NULL)
return FALSE;
+
memset(gUnknown_0203CEE4, 0, 0x800);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_086156B8, 3);
+ InitBgsFromTemplates(0, gUnknown_086156B8, ARRAY_COUNT(gUnknown_086156B8));
SetBgTilemapBuffer(1, gUnknown_0203CEE4);
ResetAllBgsCoordinates();
schedule_bg_copy_tilemap_to_vram(1);
@@ -695,63 +1771,63 @@ bool8 AllocPartyMenuBg(void)
return TRUE;
}
-bool8 AllocPartyMiscGfx(void)
+static bool8 AllocPartyMiscGfx(void)
{
int sizeout;
-
+
switch (gUnknown_0203CEC4->data[0])
{
- case 0:
- gUnknown_0203CEE0 = malloc_and_decompress(gPartyMenuMisc_Gfx, &sizeout);
- LoadBgTiles(1, gUnknown_0203CEE0, sizeout, 0);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 1:
- if (!IsDma3ManagerBusyWithBgCopy())
- {
- LZDecompressWram(gPartyMenuMisc_Tilemap, gUnknown_0203CEE4);
- gUnknown_0203CEC4->data[0]++;
- }
- break;
- case 2:
- LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
- CpuCopy16(gPlttBufferUnfaded, gUnknown_0203CEC4->palBuffer, 0x160);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 3:
- PartyPaletteBufferCopy(4);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 4:
- PartyPaletteBufferCopy(5);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 5:
- PartyPaletteBufferCopy(6);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 6:
- PartyPaletteBufferCopy(7);
- gUnknown_0203CEC4->data[0]++;
- break;
- case 7:
- PartyPaletteBufferCopy(8);
+ case 0:
+ gUnknown_0203CEE0 = malloc_and_decompress(gPartyMenuMisc_Gfx, &sizeout);
+ LoadBgTiles(1, gUnknown_0203CEE0, sizeout, 0);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ LZDecompressWram(gPartyMenuMisc_Tilemap, gUnknown_0203CEE4);
gUnknown_0203CEC4->data[0]++;
- break;
- default:
- return TRUE;
+ }
+ break;
+ case 2:
+ LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
+ CpuCopy16(gPlttBufferUnfaded, gUnknown_0203CEC4->palBuffer, 0x160);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 3:
+ PartyPaletteBufferCopy(4);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 4:
+ PartyPaletteBufferCopy(5);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 5:
+ PartyPaletteBufferCopy(6);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 6:
+ PartyPaletteBufferCopy(7);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ case 7:
+ PartyPaletteBufferCopy(8);
+ gUnknown_0203CEC4->data[0]++;
+ break;
+ default:
+ return TRUE;
}
return FALSE;
}
-void PartyPaletteBufferCopy(u8 offset)
+static void PartyPaletteBufferCopy(u8 offset)
{
offset *= 16;
CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferUnfaded[offset], 32);
CpuCopy16(&gPlttBufferUnfaded[0x30], &gPlttBufferFaded[offset], 32);
}
-void FreePartyPointers(void)
+static void FreePartyPointers(void)
{
if (gUnknown_0203CEC4)
Free(gUnknown_0203CEC4);
@@ -764,12 +1840,12 @@ void FreePartyPointers(void)
FreeAllWindowBuffers();
}
-void PartyMenuInitHelperStructs(u8 a)
+static void PartyMenuInitHelperStructs(u8 a)
{
u8 i;
-
+
gUnknown_0203CEDC = Alloc(sizeof(struct Struct203CEDC[PARTY_SIZE]));
-
+
for (i = 0; i < PARTY_SIZE; i++)
{
gUnknown_0203CEDC[i].unk0 = &gUnknown_086156C4[1];
@@ -787,7 +1863,7 @@ void PartyMenuInitHelperStructs(u8 a)
gUnknown_0203CEDC[1].unk0 = &gUnknown_086156C4[0];
}
-void RenderPartyMenuBox(u8 slot)
+static void RenderPartyMenuBox(u8 slot)
{
if (gUnknown_0203CEC8.unk8_0 == 5 && slot > 2)
{
@@ -822,7 +1898,7 @@ void RenderPartyMenuBox(u8 slot)
DisplayPartyPokemonSelectHeldItemRelated(slot);
else if (!sub_81B0BFC(slot))
DisplayPartyPokemonData(slot);
-
+
if (gUnknown_0203CEC8.unk8_0 == 5)
sub_81B0FCC(slot, 0);
else if (gUnknown_0203CEC8.unk9 == slot)
@@ -835,7 +1911,7 @@ void RenderPartyMenuBox(u8 slot)
}
}
-void DisplayPartyPokemonData(u8 slot)
+static void DisplayPartyPokemonData(u8 slot)
{
if (GetMonData(&gPlayerParty[slot], MON_DATA_IS_EGG))
{
@@ -854,10 +1930,10 @@ void DisplayPartyPokemonData(u8 slot)
}
}
-void DisplayPartyPokemonSelectData(u8 slot, u8 stringID)
+static void DisplayPartyPokemonSelectData(u8 slot, u8 stringID)
{
struct Pokemon *mon = &gPlayerParty[slot];
-
+
gUnknown_0203CEDC[slot].unk0->unk0(gUnknown_0203CEDC[slot].windowId, 0, 0, 0, 0, 1);
DisplayPartyPokemonNickname(mon, &gUnknown_0203CEDC[slot], 0);
if (!GetMonData(mon, MON_DATA_IS_EGG))
@@ -868,12 +1944,12 @@ void DisplayPartyPokemonSelectData(u8 slot, u8 stringID)
DisplayPartyPokemonOtherText(stringID, &gUnknown_0203CEDC[slot], 0);
}
-void DisplayPartyPokemonSelectForBattle(u8 slot)
+static void DisplayPartyPokemonSelectForBattle(u8 slot)
{
u8 i;
struct Pokemon *mon = &gPlayerParty[slot];
u8 *ptr = gSelectedOrderFromParty;
-
+
if (!GetBattleEntryEligibility(mon))
{
DisplayPartyPokemonSelectData(slot, 7);
@@ -893,23 +1969,23 @@ void DisplayPartyPokemonSelectForBattle(u8 slot)
}
}
-void DisplayPartyPokemonSelectForContest(u8 slot)
+static void DisplayPartyPokemonSelectForContest(u8 slot)
{
switch (sub_80DAE0C(&gPlayerParty[slot]))
{
- case 0:
- case 3:
- case 4:
- DisplayPartyPokemonSelectData(slot, 7);
- break;
- case 1:
- case 2:
- DisplayPartyPokemonSelectData(slot, 6);
- break;
+ case 0:
+ case 3:
+ case 4:
+ DisplayPartyPokemonSelectData(slot, 7);
+ break;
+ case 1:
+ case 2:
+ DisplayPartyPokemonSelectData(slot, 6);
+ break;
}
}
-void DisplayPartyPokemonSelectForRelearner(u8 slot)
+static void DisplayPartyPokemonSelectForRelearner(u8 slot)
{
if (GetNumberOfRelearnableMoves(&gPlayerParty[slot]) == 0)
DisplayPartyPokemonSelectData(slot, 9);
@@ -917,7 +1993,7 @@ void DisplayPartyPokemonSelectForRelearner(u8 slot)
DisplayPartyPokemonSelectData(slot, 8);
}
-void sub_81B0B98(u8 slot)
+static void sub_81B0B98(u8 slot)
{
if (sub_81B218C(slot) == TRUE)
DisplayPartyPokemonSelectData(slot, 6);
@@ -925,7 +2001,7 @@ void sub_81B0B98(u8 slot)
DisplayPartyPokemonSelectData(slot, 7);
}
-void DisplayPartyPokemonSelectHeldItemRelated(u8 slot)
+static void DisplayPartyPokemonSelectHeldItemRelated(u8 slot)
{
if (GetMonData(&gPlayerParty[slot], MON_DATA_HELD_ITEM))
DisplayPartyPokemonSelectData(slot, 11);
@@ -933,11 +2009,11 @@ void DisplayPartyPokemonSelectHeldItemRelated(u8 slot)
DisplayPartyPokemonSelectData(slot, 12);
}
-bool8 sub_81B0BFC(u8 slot)
+static bool8 sub_81B0BFC(u8 slot)
{
struct Pokemon *currentPokemon = &gPlayerParty[slot];
u16 item = gSpecialVar_ItemId;
-
+
if (gUnknown_0203CEC8.unkB == 12)
{
gSpecialVar_Result = FALSE;
@@ -947,46 +2023,46 @@ bool8 sub_81B0BFC(u8 slot)
{
if (gUnknown_0203CEC8.unkB != 3)
return FALSE;
-
+
switch (CheckIfItemIsTMHMOrEvolutionStone(item))
{
- default:
+ default:
+ return FALSE;
+ case 1:
+ DisplayPartyPokemonSelectToTeachMove(slot, item, 0);
+ break;
+ case 2:
+ if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE)
return FALSE;
- case 1:
- DisplayPartyPokemonSelectToTeachMove(slot, item, 0);
- break;
- case 2:
- if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, 3, item) != SPECIES_NONE)
- return FALSE;
- DisplayPartyPokemonSelectData(slot, 0);
- break;
+ DisplayPartyPokemonSelectData(slot, 0);
+ break;
}
}
return TRUE;
}
-void DisplayPartyPokemonSelectToTeachMove(u8 slot, u16 item, u8 tutor)
+static void DisplayPartyPokemonSelectToTeachMove(u8 slot, u16 item, u8 tutor)
{
- switch (CanPartyPokemonLearnTMTutor(&gPlayerParty[slot], item, tutor))
+ switch (CanMonLearnTMTutor(&gPlayerParty[slot], item, tutor))
{
- case CANNOT_LEARN_MOVE:
- case CANNOT_LEARN_MOVE_IS_EGG:
- DisplayPartyPokemonSelectData(slot, 9);
- break;
- case ALREADY_KNOWS_MOVE:
- DisplayPartyPokemonSelectData(slot, 10);
- break;
- default:
- DisplayPartyPokemonSelectData(slot, 8);
- break;
+ case CANNOT_LEARN_MOVE:
+ case CANNOT_LEARN_MOVE_IS_EGG:
+ DisplayPartyPokemonSelectData(slot, 9);
+ break;
+ case ALREADY_KNOWS_MOVE:
+ DisplayPartyPokemonSelectData(slot, 10);
+ break;
+ default:
+ DisplayPartyPokemonSelectData(slot, 8);
+ break;
}
}
-void sub_81B0CEC(u8 slot)
+static void sub_81B0CEC(u8 slot)
{
struct Struct203CEDC *structPtr = &gUnknown_0203CEDC[slot];
u8 actualSlot = slot - 3;
-
+
if (gUnknown_02022FF8[actualSlot].species == SPECIES_NONE)
{
sub_81B2720(structPtr->windowId);
@@ -1006,7 +2082,7 @@ void sub_81B0CEC(u8 slot)
}
}
-bool8 RenderPartyMenuBoxes(void)
+static bool8 RenderPartyMenuBoxes(void)
{
RenderPartyMenuBox(gUnknown_0203CEC4->data[0]);
if (++gUnknown_0203CEC4->data[0] == 6)
@@ -1014,20 +2090,20 @@ bool8 RenderPartyMenuBoxes(void)
return FALSE;
}
-u8* GetPartyMiscGraphicsTile(u16 tileId)
+static u8* GetPartyMiscGraphicsTile(u16 tileId)
{
return &gUnknown_0203CEE0[tileId << 5];
}
-void party_menu_add_per_mon_objects_internal(u8 slot)
+static void party_menu_add_per_mon_objects_internal(u8 slot)
{
u8 actualSlot;
-
+
if (gUnknown_0203CEC8.unk8_0 == 5 && slot > 2)
{
u8 status;
actualSlot = slot - 3;
-
+
if (gUnknown_02022FF8[actualSlot].species != SPECIES_NONE)
{
party_menu_link_mon_icon_anim(gUnknown_02022FF8[actualSlot].species, gUnknown_02022FF8[actualSlot].personality, &gUnknown_0203CEDC[slot], 0, 0);
@@ -1049,7 +2125,7 @@ void party_menu_add_per_mon_objects_internal(u8 slot)
}
}
-bool8 party_menu_add_per_mon_objects(void)
+static bool8 party_menu_add_per_mon_objects(void)
{
party_menu_add_per_mon_objects_internal(gUnknown_0203CEC4->data[0]);
if (++gUnknown_0203CEC4->data[0] == 6)
@@ -1057,7 +2133,7 @@ bool8 party_menu_add_per_mon_objects(void)
return FALSE;
}
-void sub_81B0F28(void)
+static void sub_81B0F28(void)
{
if (gUnknown_0203CEC8.unk8_0 == 5)
{
@@ -1082,48 +2158,48 @@ void sub_81B0F28(void)
void sub_81B0FCC(u8 slot, u8 b)
{
u8 spriteId;
-
+
switch (slot)
{
- default:
- if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE)
- {
- UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], GetPartyBoxPalBitfield(slot, b));
- AnimateSelectedPartyIcon(gUnknown_0203CEDC[slot].unk9, b);
- sub_81B5F98(gUnknown_0203CEDC[slot].unkB, b);
- }
- return;
- case 6:
+ default:
+ if (GetMonData(&gPlayerParty[slot], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ UpdateSelectedPartyBox(&gUnknown_0203CEDC[slot], GetPartyBoxPalBitfield(slot, b));
+ AnimateSelectedPartyIcon(gUnknown_0203CEDC[slot].unk9, b);
+ sub_81B5F98(gUnknown_0203CEDC[slot].unkB, b);
+ }
+ return;
+ case 6:
+ if (b == 0)
+ sub_8199C30(1, 23, 16, 7, 2, 1);
+ else
+ sub_8199C30(1, 23, 16, 7, 2, 2);
+ spriteId = gUnknown_0203CEC4->unk8_2;
+ break;
+ case 7:
+ if (!gUnknown_0203CEC4->unk8_0)
+ {
if (b == 0)
- sub_8199C30(1, 23, 16, 7, 2, 1);
+ sub_8199C30(1, 23, 17, 7, 2, 1);
else
- sub_8199C30(1, 23, 16, 7, 2, 2);
- spriteId = gUnknown_0203CEC4->unk8_2;
- break;
- case 7:
- if (!gUnknown_0203CEC4->unk8_0)
- {
- if (b == 0)
- sub_8199C30(1, 23, 17, 7, 2, 1);
- else
- sub_8199C30(1, 23, 17, 7, 2, 2);
- }
- else if (b == 0)
- {
- sub_8199C30(1, 23, 18, 7, 2, 1);
- }
- else
- {
- sub_8199C30(1, 23, 18, 7, 2, 2);
- }
- spriteId = gUnknown_0203CEC4->unk9_0;
- break;
+ sub_8199C30(1, 23, 17, 7, 2, 2);
+ }
+ else if (b == 0)
+ {
+ sub_8199C30(1, 23, 18, 7, 2, 1);
+ }
+ else
+ {
+ sub_8199C30(1, 23, 18, 7, 2, 2);
+ }
+ spriteId = gUnknown_0203CEC4->unk9_0;
+ break;
}
sub_81B5F98(spriteId, b);
schedule_bg_copy_tilemap_to_vram(1);
}
-u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
+static u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
{
u8 returnVar = 0;
if (b == 1)
@@ -1141,22 +2217,22 @@ u8 GetPartyBoxPalBitfield(u8 slot, u8 b)
}
if (gUnknown_0203CEC8.unkB == 10 && slot == gUnknown_0203CEC8.unk9 )
returnVar |= 32;
-
+
return returnVar;
}
-bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8 slot)
+static bool8 PartyBoxPal_ParnterOrDisqualifiedInArena(u8 slot)
{
if (gUnknown_0203CEC8.mode == 2 && (slot == 1 || slot == 4 || slot == 5))
return TRUE;
-
+
if (slot < 3 && (gBattleTypeFlags & BATTLE_TYPE_ARENA) && gMain.inBattle && (gBattleStruct->arenaLostPlayerMons >> sub_81B8F38(slot) & 1))
return TRUE;
-
+
return FALSE;
}
-void sub_81B120C(void)
+static void sub_81B120C(void)
{
CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_086157C4, 23, 16, 7, 2, 17);
CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_086157E0, 23, 18, 7, 2, 17);
@@ -1165,40 +2241,41 @@ void sub_81B120C(void)
bool8 IsMultiBattle(void)
{
- if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI)) == (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI) && gMain.inBattle)
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattleTypeFlags & BATTLE_TYPE_TRAINER && gMain.inBattle)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-void sub_81B1288(struct Pokemon *partySlot, struct Pokemon *pokemon)
+static void sub_81B1288(struct Pokemon *partySlot, struct Pokemon *pokemon)
{
struct Pokemon *temp = Alloc(sizeof(struct Pokemon));
-
+
*temp = *partySlot;
*partySlot = *pokemon;
*pokemon = *temp;
-
+
Free(temp);
}
-void sub_81B12C0(u8 taskId)
+static void sub_81B12C0(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = c3_0811FAB4;
}
-void c3_0811FAB4(u8 taskId)
+static void c3_0811FAB4(u8 taskId)
{
if (!gPaletteFade.active)
{
if (gUnknown_0203CEC8.unk8_0 == 1)
sub_81B9080();
-
+
if (gUnknown_0203CEC4->exitCallback != NULL)
SetMainCallback2(gUnknown_0203CEC4->exitCallback);
else
SetMainCallback2(gUnknown_0203CEC8.exitCallback);
-
+
ResetSpriteData();
FreePartyPointers();
DestroyTask(taskId);
@@ -1220,33 +2297,34 @@ void sub_81B1370(u8 taskId)
if (!gPaletteFade.active && sub_81221EC() != TRUE)
{
s8 *ptr = sub_81B13EC();
-
+
switch (PartyMenuButtonHandler(ptr))
{
- case 1:
- sub_81B140C(taskId, ptr);
- break;
- case 2:
- sub_81B15D0(taskId, ptr);
- break;
- case 8:
- if (gUnknown_0203CEC4->unk8_0)
- {
- PlaySE(SE_SELECT);
- sub_81B4F88();
- }
+ case 1:
+ sub_81B140C(taskId, ptr);
+ break;
+ case 2:
+ sub_81B15D0(taskId, ptr);
+ break;
+ case 8:
+ if (gUnknown_0203CEC4->unk8_0)
+ {
+ PlaySE(SE_SELECT);
+ sub_81B4F88();
+ }
+ break;
}
}
}
-s8* sub_81B13EC(void)
+static s8* sub_81B13EC(void)
{
if (gUnknown_0203CEC8.unkB == 8 || gUnknown_0203CEC8.unkB == 10)
return &gUnknown_0203CEC8.unkA;
return &gUnknown_0203CEC8.unk9;
}
-void sub_81B140C(u8 taskId, s8 *ptr)
+static void sub_81B140C(u8 taskId, s8 *ptr)
{
if (*ptr == 6)
{
@@ -1256,73 +2334,73 @@ void sub_81B140C(u8 taskId, s8 *ptr)
{
switch (gUnknown_0203CEC8.unkB - 3)
{
- case 7:
- if (sub_81B15A4((u8*)ptr))
- {
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81615A8(taskId);
- }
- break;
- case 0:
- if (sub_81B15A4((u8*)ptr))
- {
- if (gUnknown_0203CEC8.unk8_0 == 1)
- gUnknown_0203CEC4->exitCallback = sub_81B9140;
-
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- gUnknown_03006328(taskId, sub_81B6794);
- }
- break;
- case 9:
- if (sub_81B15A4((u8*)ptr))
- {
- PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B7E4C(taskId);
- }
- break;
- case 4:
- if (sub_81B15A4((u8*)ptr))
- {
- PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B8474(taskId);
- }
- break;
- case 2:
- case 3:
- if (sub_81B15A4((u8*)ptr))
- {
- PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- sub_81B7FAC(taskId);
- }
- break;
- case 5:
+ case 7:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81615A8(taskId);
+ }
+ break;
+ case 0:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ if (gUnknown_0203CEC8.unk8_0 == 1)
+ gUnknown_0203CEC4->exitCallback = sub_81B9140;
+
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ gUnknown_03006328(taskId, sub_81B6794);
+ }
+ break;
+ case 9:
+ if (sub_81B15A4((u8*)ptr))
+ {
PlaySE(SE_SELECT);
- sub_81B3938(taskId);
- break;
- case 8:
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B7E4C(taskId);
+ }
+ break;
+ case 4:
+ if (sub_81B15A4((u8*)ptr))
+ {
PlaySE(SE_SELECT);
- sub_81B12C0(taskId);
- break;
- case 10:
- if (sub_81B15A4((u8*)ptr))
- {
- sub_81B21AC(taskId, (u8)*ptr);
- }
- break;
- default:
- case 1:
- case 6:
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B8474(taskId);
+ }
+ break;
+ case 2:
+ case 3:
+ if (sub_81B15A4((u8*)ptr))
+ {
PlaySE(SE_SELECT);
- sub_81B36FC(taskId);
- break;
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ sub_81B7FAC(taskId);
+ }
+ break;
+ case 5:
+ PlaySE(SE_SELECT);
+ sub_81B3938(taskId);
+ break;
+ case 8:
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ break;
+ case 10:
+ if (sub_81B15A4((u8*)ptr))
+ {
+ sub_81B21AC(taskId, (u8)*ptr);
+ }
+ break;
+ default:
+ case 1:
+ case 6:
+ PlaySE(SE_SELECT);
+ sub_81B36FC(taskId);
+ break;
}
}
}
-bool8 sub_81B15A4(u8 *slotPtr)
+static bool8 sub_81B15A4(u8 *slotPtr)
{
if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_IS_EGG) == TRUE)
{
@@ -1332,48 +2410,48 @@ bool8 sub_81B15A4(u8 *slotPtr)
return TRUE;
}
-void sub_81B15D0(u8 taskId, s8 *ptr)
+static void sub_81B15D0(u8 taskId, s8 *ptr)
{
switch (gUnknown_0203CEC8.unkB)
{
- case 1:
- PlaySE(SE_HAZURE);
- break;
- case 8:
- case 10:
- PlaySE(SE_SELECT);
- sub_81B407C(taskId);
- break;
- case 13:
- PlaySE(SE_SELECT);
- sub_81B2210(taskId);
- break;
- default:
- PlaySE(SE_SELECT);
- if (sub_81B1660(taskId) != TRUE)
- {
- if (!sub_81221AC())
- gSpecialVar_0x8004 = 7;
- gUnknown_0203CEE8 = 0;
- *ptr = 7;
- sub_81B12C0(taskId);
- }
- break;
+ case 1:
+ PlaySE(SE_HAZURE);
+ break;
+ case 8:
+ case 10:
+ PlaySE(SE_SELECT);
+ sub_81B407C(taskId);
+ break;
+ case 13:
+ PlaySE(SE_SELECT);
+ sub_81B2210(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ if (sub_81B1660(taskId) != TRUE)
+ {
+ if (!sub_81221AC())
+ gSpecialVar_0x8004 = 7;
+ gUnknown_0203CEE8 = 0;
+ *ptr = 7;
+ sub_81B12C0(taskId);
+ }
+ break;
}
-}
+}
-bool8 sub_81B1660(u8 taskId)
+static bool8 sub_81B1660(u8 taskId)
{
const u8* stringPtr = NULL;
-
+
if (gUnknown_0203CEC8.unk8_0 == 2)
stringPtr = gText_CancelParticipation;
else if (gUnknown_0203CEC8.unk8_0 == 4)
stringPtr = sub_81B88BC();
-
+
if (stringPtr == NULL)
return FALSE;
-
+
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
StringExpandPlaceholders(gStringVar4, stringPtr);
sub_81B1B5C(gStringVar4, 1);
@@ -1381,7 +2459,7 @@ bool8 sub_81B1660(u8 taskId)
return TRUE;
}
-void sub_81B16D4(u8 taskId)
+static void sub_81B16D4(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -1390,82 +2468,83 @@ void sub_81B16D4(u8 taskId)
}
}
-void sub_81B1708(u8 taskId)
+static void sub_81B1708(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- gUnknown_0203CEE8 = 0;
- gUnknown_0203CEC8.unk9 = 7;
- sub_81B8558();
- sub_81B12C0(taskId);
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- sub_81B1C1C(taskId);
- break;
+ case 0:
+ gUnknown_0203CEE8 = 0;
+ gUnknown_0203CEC8.unk9 = 7;
+ sub_81B8558();
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1C1C(taskId);
+ break;
}
}
-u16 PartyMenuButtonHandler(s8 *ptr)
+static u16 PartyMenuButtonHandler(s8 *ptr)
{
s8 movementDir;
-
+
switch (gMain.newAndRepeatedKeys)
{
- case DPAD_UP:
+ case DPAD_UP:
+ movementDir = -1;
+ break;
+ case DPAD_DOWN:
+ movementDir = 1;
+ break;
+ case DPAD_LEFT:
+ movementDir = -2;
+ break;
+ case DPAD_RIGHT:
+ movementDir = 2;
+ break;
+ default:
+ switch (sub_812210C())
+ {
+ case 1:
movementDir = -1;
break;
- case DPAD_DOWN:
+ case 2:
movementDir = 1;
break;
- case DPAD_LEFT:
- movementDir = -2;
- break;
- case DPAD_RIGHT:
- movementDir = 2;
- break;
default:
- switch (sub_812210C())
- {
- case 1:
- movementDir = -1;
- break;
- case 2:
- movementDir = 1;
- break;
- default:
- movementDir = 0;
- break;
- }
+ movementDir = 0;
+ break;
+ }
+ break;
}
-
+
if (gMain.newKeys & START_BUTTON)
return 8;
-
+
if (movementDir)
{
UpdateCurrentPartySelection(ptr, movementDir);
return 0;
}
-
+
if ((gMain.newKeys & A_BUTTON) && *ptr == 7)
return 2;
-
+
return gMain.newKeys & (A_BUTTON | B_BUTTON);
}
-#ifdef NONMATCHING
-void UpdateCurrentPartySelection(s8 *ptr, s8 movementDir)
+static void UpdateCurrentPartySelection(s8 *ptr, s8 movementDir)
{
s8 slot = *ptr;
-
- if (gUnknown_0203CEC8.mode == 0)
+ u8 mode = gUnknown_0203CEC8.mode;
+
+ if (mode == 0)
SetNewPartySelectTarget1(ptr, movementDir);
else
SetNewPartySelectTarget2(ptr, movementDir);
-
+
if (*ptr != slot)
{
PlaySE(SE_SELECT);
@@ -1473,590 +2552,168 @@ void UpdateCurrentPartySelection(s8 *ptr, s8 movementDir)
sub_81B0FCC(*ptr, 1);
}
}
-#else
-NAKED
-void UpdateCurrentPartySelection(s8 *ptr, s8 b)
-{
- asm_unified("push {r4,r5,lr}\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- ldrb r4, [r5]\n\
- ldr r0, =gUnknown_0203CEC8\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 26\n\
- lsrs r0, 30\n\
- cmp r0, 0\n\
- bne _081B1820\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- adds r0, r5, 0\n\
- bl SetNewPartySelectTarget1\n\
- b _081B182A\n\
- .pool\n\
-_081B1820:\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- adds r0, r5, 0\n\
- bl SetNewPartySelectTarget2\n\
-_081B182A:\n\
- movs r1, 0\n\
- ldrsb r1, [r5, r1]\n\
- lsls r4, 24\n\
- asrs r0, r4, 24\n\
- cmp r1, r0\n\
- beq _081B184C\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- lsrs r0, r4, 24\n\
- movs r1, 0\n\
- bl sub_81B0FCC\n\
- ldrb r0, [r5]\n\
- movs r1, 0x1\n\
- bl sub_81B0FCC\n\
-_081B184C:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n");
-}
-#endif
-#ifdef NONMATCHING
-void SetNewPartySelectTarget1(s8 *ptr, s8 b)
+static void SetNewPartySelectTarget1(s8 *ptr, s8 b)
{
- u8 r0r2;
-
switch (b)
{
- case -1:
- r0r2 = *ptr;
- if (*ptr == 0)
- {
- *ptr = 7;
- }
- else if (*ptr == 6)
- {
+ case -1:
+ if (*ptr == 0)
+ {
+ *ptr = 7;
+ }
+ else if (*ptr == 6)
+ {
+ *ptr = gPlayerPartyCount - 1;
+ }
+ else if (*ptr == 7)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
+ *ptr = 6;
+ else
*ptr = gPlayerPartyCount - 1;
- }
- else if (*ptr == 7)
+ }
+ else
+ {
+ (*ptr)--;
+ }
+ break;
+ case 1:
+ if (*ptr == 7)
+ {
+ *ptr = 0;
+ }
+ else
+ {
+ if (*ptr == gPlayerPartyCount - 1)
{
if (gUnknown_0203CEC4->unk8_0)
*ptr = 6;
else
- *ptr = gPlayerPartyCount - 1;
+ *ptr = 7;
}
else
{
- *ptr = r0r2 - 1;
- }
- break;
- case 1:
- r0r2 = *ptr;
- if (*ptr != 7)
- {
- if ((u32)*ptr == gPlayerPartyCount - 1)
- {
- if (gUnknown_0203CEC4->unk8_0)
- *ptr = 6;
- else
- *ptr = 7;
- }
- else
- {
- *ptr = r0r2 + 1;
- }
+ (*ptr)++;
}
+ }
+ break;
+ case 2:
+ if (gPlayerPartyCount != 1 && *ptr == 0)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 0)
+ *ptr = 1;
else
- {
- *ptr = 0;
- }
- break;
- case 2:
- if (gPlayerPartyCount != 1 && *ptr == 0)
- {
- if (gUnknown_0203CEC4->unk8_1 == 0)
- *ptr = 1;
- else
- *ptr = gUnknown_0203CEC4->unk8_1;
- }
- break;
- case -2:
- if (*ptr != 0 && *ptr != 6 && *ptr != 7)
- {
- gUnknown_0203CEC4->unk8_1 = *ptr;
- *ptr = 0;
- }
- break;
+ *ptr = gUnknown_0203CEC4->unk8_1;
+ }
+ break;
+ case -2:
+ if (*ptr != 0 && *ptr != 6 && *ptr != 7)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 0;
+ }
+ break;
}
}
-#else
-NAKED
-void SetNewPartySelectTarget1(s8 *ptr, s8 b)
-{
- asm_unified("push {r4,lr}\n\
- adds r4, r0, 0\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- cmp r1, r0\n\
- beq _081B187A\n\
- cmp r1, r0\n\
- bgt _081B1870\n\
- subs r0, 0x1\n\
- cmp r1, r0\n\
- beq _081B1924\n\
- b _081B1952\n\
-_081B1870:\n\
- cmp r1, 0x1\n\
- beq _081B18C0\n\
- cmp r1, 0x2\n\
- beq _081B18F8\n\
- b _081B1952\n\
-_081B187A:\n\
- ldrb r0, [r4]\n\
- movs r1, 0\n\
- ldrsb r1, [r4, r1]\n\
- cmp r1, 0\n\
- bne _081B1888\n\
- movs r0, 0x7\n\
- b _081B1950\n\
-_081B1888:\n\
- cmp r1, 0x6\n\
- bne _081B1898\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- b _081B1950\n\
- .pool\n\
-_081B1898:\n\
- cmp r1, 0x7\n\
- bne _081B18BC\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081B18B0\n\
- movs r0, 0x6\n\
- b _081B1950\n\
- .pool\n\
-_081B18B0:\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- b _081B1950\n\
- .pool\n\
-_081B18BC:\n\
- subs r0, 0x1\n\
- b _081B1950\n\
-_081B18C0:\n\
- ldrb r2, [r4]\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0x7\n\
- beq _081B194E\n\
- movs r1, 0\n\
- ldrsb r1, [r4, r1]\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- cmp r1, r0\n\
- bne _081B18F4\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081B18F0\n\
- movs r0, 0x6\n\
- b _081B1950\n\
- .pool\n\
-_081B18F0:\n\
- movs r0, 0x7\n\
- b _081B1950\n\
-_081B18F4:\n\
- adds r0, r2, 0x1\n\
- b _081B1950\n\
-_081B18F8:\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x1\n\
- beq _081B1952\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0\n\
- bne _081B1952\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 28\n\
- lsrs r0, 29\n\
- cmp r0, 0\n\
- bne _081B1950\n\
- movs r0, 0x1\n\
- b _081B1950\n\
- .pool\n\
-_081B1924:\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0\n\
- beq _081B1952\n\
- cmp r0, 0x6\n\
- beq _081B1952\n\
- cmp r0, 0x7\n\
- beq _081B1952\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r3, [r0]\n\
- movs r1, 0\n\
- ldrsb r1, [r4, r1]\n\
- movs r0, 0x7\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r3, 0x8]\n\
- movs r0, 0xF\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x8]\n\
-_081B194E:\n\
- movs r0, 0\n\
-_081B1950:\n\
- strb r0, [r4]\n\
-_081B1952:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
-#ifdef NONMATCHING
-void SetNewPartySelectTarget2(s8 *ptr, s8 b)
+static void SetNewPartySelectTarget2(s8 *ptr, s8 b)
{
- u8 unk;
s8 unk2 = b;
- u8 unk3;
-
+
switch (b)
{
- case -1:
- unk = *ptr;
- if (*ptr == 0)
- {
- *ptr = 7;
- }
- else if (*ptr == 6)
+ case -1:
+ if (*ptr == 0)
+ {
+ *ptr = 7;
+ break;
+ }
+ else if (*ptr == 6)
+ {
+ *ptr = gPlayerPartyCount - 1;
+ break;
+ }
+ else if (*ptr == 7)
+ {
+ if (gUnknown_0203CEC4->unk8_0)
{
- *ptr = gPlayerPartyCount - 1;
+ *ptr = 6;
+ break;
}
- else if (*ptr == 7)
+ (*ptr)--;
+ }
+ unk2 = sub_81B1B00(*ptr, unk2);
+ if (unk2 != -1)
+ *ptr = unk2;
+ break;
+ case 1:
+ if (*ptr == 6)
+ {
+ *ptr = 7;
+ }
+ else if (*ptr == 7)
+ {
+ *ptr = 0;
+ }
+ else
+ {
+ unk2 = sub_81B1B00(*ptr, 1);
+ if (unk2 == -1)
{
if (gUnknown_0203CEC4->unk8_0)
- {
*ptr = 6;
- }
else
- {
- *ptr = unk - 1;
- unk2 = sub_81B1B00(*ptr, unk2);
- if (unk2 != -1)
- *ptr = unk2;
- }
- }
- else
- {
- unk2 = sub_81B1B00(*ptr, unk2);
- if (unk2 != -1)
- *ptr = unk2;
- }
- break;
- case 1:
- if (*ptr == 6)
- {
- *ptr = 7;
- }
- else if (*ptr == 7)
- {
- *ptr = 0;
+ *ptr = 7;
}
else
{
- unk2 = sub_81B1B00(*ptr, 1);
- if (unk2 == -1)
- {
- if (gUnknown_0203CEC4->unk8_0)
- *ptr = 6;
- else
- *ptr = 7;
- }
- else
- {
- *ptr = unk2;
- }
+ *ptr = unk2;
}
- break;
- case 2:
- if (*ptr == 0)
+ }
+ break;
+ case 2:
+ if (*ptr == 0)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 3)
{
- if (gUnknown_0203CEC4->unk8_1 == 3)
- {
- if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES) != SPECIES_NONE)
- *ptr = 3;
- }
- else if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES) != SPECIES_NONE)
- {
- *ptr = 2;
- }
+ if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES) != SPECIES_NONE)
+ *ptr = 3;
}
- else if (*ptr == 1)
+ else if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES) != SPECIES_NONE)
{
- if (gUnknown_0203CEC4->unk8_1 == 5)
- {
- if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES) != SPECIES_NONE)
- *ptr = 5;
- }
- else if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES) != SPECIES_NONE)
- {
- *ptr = 4;
- }
+ *ptr = 2;
}
- break;
- case -2:
- unk3 = *ptr - 2;
- if (unk3 <= 1)
+ }
+ else if (*ptr == 1)
+ {
+ if (gUnknown_0203CEC4->unk8_1 == 5)
{
- gUnknown_0203CEC4->unk8_1 = *ptr;
- *ptr = 0;
+ if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES) != SPECIES_NONE)
+ *ptr = 5;
}
- else
+ else if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES) != SPECIES_NONE)
{
- unk3 = *ptr - 4;
- if (unk3 <= 1)
- {
- gUnknown_0203CEC4->unk8_1 = *ptr;
- *ptr = 1;
- }
+ *ptr = 4;
}
- break;
+ }
+ break;
+ case -2:
+ if (*ptr == 2 || *ptr == 3)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 0;
+ }
+ else if (*ptr == 4 || *ptr == 5)
+ {
+ gUnknown_0203CEC4->unk8_1 = *ptr;
+ *ptr = 1;
+ }
+ break;
}
}
-#else
-NAKED
-void SetNewPartySelectTarget2(s8 *ptr, s8 b)
-{
- asm_unified("push {r4-r6,lr}\n\
- adds r4, r0, 0\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- asrs r5, r1, 24\n\
- movs r6, 0x1\n\
- negs r6, r6\n\
- cmp r5, r6\n\
- beq _081B1988\n\
- cmp r5, r6\n\
- bgt _081B197E\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- cmp r5, r0\n\
- bne _081B197C\n\
- b _081B1A9C\n\
-_081B197C:\n\
- b _081B1AF4\n\
-_081B197E:\n\
- cmp r5, 0x1\n\
- beq _081B19E4\n\
- cmp r5, 0x2\n\
- beq _081B1A24\n\
- b _081B1AF4\n\
-_081B1988:\n\
- ldrb r1, [r4]\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0\n\
- bne _081B1996\n\
- movs r0, 0x7\n\
- b _081B1AF2\n\
-_081B1996:\n\
- cmp r0, 0x6\n\
- bne _081B19A8\n\
- ldr r0, =gPlayerPartyCount\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- b _081B1AF2\n\
- .pool\n\
-_081B19A8:\n\
- cmp r0, 0x7\n\
- bne _081B19C4\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081B19C0\n\
- movs r0, 0x6\n\
- b _081B1AF2\n\
- .pool\n\
-_081B19C0:\n\
- subs r0, r1, 0x1\n\
- strb r0, [r4]\n\
-_081B19C4:\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- lsls r1, r2, 24\n\
- asrs r1, 24\n\
- bl sub_81B1B00\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- asrs r0, 24\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- cmp r0, r1\n\
- bne _081B19E0\n\
- b _081B1AF4\n\
-_081B19E0:\n\
- strb r2, [r4]\n\
- b _081B1AF4\n\
-_081B19E4:\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0x6\n\
- bne _081B19F0\n\
- movs r0, 0x7\n\
- b _081B1AF2\n\
-_081B19F0:\n\
- cmp r0, 0x7\n\
- bne _081B19F8\n\
- movs r0, 0\n\
- b _081B1AF2\n\
-_081B19F8:\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- movs r1, 0x1\n\
- bl sub_81B1B00\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- asrs r0, 24\n\
- cmp r0, r6\n\
- bne _081B19E0\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _081B1A20\n\
- movs r0, 0x6\n\
- b _081B1AF2\n\
- .pool\n\
-_081B1A20:\n\
- movs r0, 0x7\n\
- b _081B1AF2\n\
-_081B1A24:\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0\n\
- bne _081B1A5C\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 28\n\
- lsrs r6, r0, 29\n\
- cmp r6, 0x3\n\
- bne _081B1A54\n\
- ldr r0, =gPlayerParty + 300\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _081B1AF4\n\
- strb r6, [r4]\n\
- b _081B1AF4\n\
- .pool\n\
-_081B1A54:\n\
- ldr r0, =gPlayerParty + 200\n\
- b _081B1A70\n\
- .pool\n\
-_081B1A5C:\n\
- cmp r0, 0x1\n\
- bne _081B1AF4\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x8]\n\
- lsls r0, 28\n\
- lsrs r5, r0, 29\n\
- cmp r5, 0x5\n\
- bne _081B1A88\n\
- ldr r0, =gPlayerParty + 500\n\
-_081B1A70:\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _081B1AF4\n\
- strb r5, [r4]\n\
- b _081B1AF4\n\
- .pool\n\
-_081B1A88:\n\
- ldr r0, =gPlayerParty + 400\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _081B1AF4\n\
- movs r0, 0x4\n\
- b _081B1AF2\n\
- .pool\n\
-_081B1A9C:\n\
- ldrb r1, [r4]\n\
- subs r0, r1, 0x2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _081B1ACC\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r3, [r0]\n\
- movs r1, 0\n\
- ldrsb r1, [r4, r1]\n\
- movs r0, 0x7\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r3, 0x8]\n\
- movs r0, 0xF\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x8]\n\
- movs r0, 0\n\
- b _081B1AF2\n\
- .pool\n\
-_081B1ACC:\n\
- subs r0, r1, 0x4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _081B1AF4\n\
- ldr r0, =gUnknown_0203CEC4\n\
- ldr r3, [r0]\n\
- movs r1, 0\n\
- ldrsb r1, [r4, r1]\n\
- movs r0, 0x7\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r3, 0x8]\n\
- movs r0, 0xF\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x8]\n\
- movs r0, 0x1\n\
-_081B1AF2:\n\
- strb r0, [r4]\n\
-_081B1AF4:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
-s8 sub_81B1B00(s8 a, s8 b)
+static s8 sub_81B1B00(s8 a, s8 b)
{
while (TRUE)
{
@@ -2077,14 +2734,14 @@ u8* GetMonNickname(struct Pokemon *mon, u8 *dest)
u8 sub_81B1B5C(const u8* str, u8 b)
{
u8 taskId;
-
+
sub_81B3300(str);
taskId = CreateTask(sub_81B1B8C, 1);
gTasks[taskId].data[0] = b;
return taskId;
}
-void sub_81B1B8C(u8 taskId)
+static void sub_81B1B8C(u8 taskId)
{
if (RunTextPrintersRetIsActive(6) != TRUE)
{
@@ -2102,7 +2759,7 @@ bool8 sub_81B1BD4(void)
return FuncIsActiveTask(sub_81B1B8C);
}
-void sub_81B1BE8(u8 taskId)
+static void sub_81B1BE8(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
@@ -2111,7 +2768,7 @@ void sub_81B1BE8(u8 taskId)
}
}
-void sub_81B1C1C(u8 taskId)
+static void sub_81B1C1C(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -2129,7 +2786,7 @@ void sub_81B1C1C(u8 taskId)
}
}
-void sub_81B1C84(struct Pokemon *mon, u16 item, u8 c, u8 unused)
+static void sub_81B1C84(struct Pokemon *mon, u16 item, u8 c, u8 unused)
{
GetMonNickname(mon, gStringVar1);
CopyItemName(item, gStringVar2);
@@ -2138,7 +2795,7 @@ void sub_81B1C84(struct Pokemon *mon, u16 item, u8 c, u8 unused)
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B1CD0(struct Pokemon *mon, u16 item, u8 c)
+static void sub_81B1CD0(struct Pokemon *mon, u16 item, u8 c)
{
GetMonNickname(mon, gStringVar1);
CopyItemName(item, gStringVar2);
@@ -2147,7 +2804,7 @@ void sub_81B1CD0(struct Pokemon *mon, u16 item, u8 c)
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B1D1C(struct Pokemon *mon, u16 item, u8 c)
+static void sub_81B1D1C(struct Pokemon *mon, u16 item, u8 c)
{
GetMonNickname(mon, gStringVar1);
CopyItemName(item, gStringVar2);
@@ -2156,7 +2813,7 @@ void sub_81B1D1C(struct Pokemon *mon, u16 item, u8 c)
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B1D68(u16 item, u16 item2, u8 c)
+static void sub_81B1D68(u16 item, u16 item2, u8 c)
{
CopyItemName(item, gStringVar1);
CopyItemName(item2, gStringVar2);
@@ -2165,10 +2822,10 @@ void sub_81B1D68(u16 item, u16 item2, u8 c)
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B1DB8(struct Pokemon *mon, u16 item)
+static void sub_81B1DB8(struct Pokemon *mon, u16 item)
{
u8 itemBytes[2];
-
+
if (ItemIsMail(item) == TRUE)
{
if (GiveMailToMon(mon, item) == 0xFF)
@@ -2179,29 +2836,29 @@ void sub_81B1DB8(struct Pokemon *mon, u16 item)
SetMonData(mon, MON_DATA_HELD_ITEM, itemBytes);
}
-u8 sub_81B1E00(struct Pokemon* mon)
+static u8 sub_81B1E00(struct Pokemon* mon)
{
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
-
+
if (item == ITEM_NONE)
return 0;
if (AddBagItem(item, 1) == FALSE)
return 1;
-
+
item = ITEM_NONE;
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
return 2;
}
-void pokemon_item_not_removed(u16 itemUnused)
+static void pokemon_item_not_removed(u16 itemUnused)
{
StringExpandPlaceholders(gStringVar4, gText_BagFullCouldNotRemoveItem);
}
-void sub_81B1E60(u8 taskId)
+static void sub_81B1E60(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
+
data[0] += data[2];
data[3]--;
SetMonData(&gPlayerParty[data[4]], MON_DATA_HP, &data[0]);
@@ -2219,7 +2876,7 @@ void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func)
{
struct Pokemon *mon = &gPlayerParty[slot];
s16 *data = gTasks[taskId].data;
-
+
data[0] = GetMonData(mon, MON_DATA_HP);
data[1] = GetMonData(mon, MON_DATA_MAX_HP);
data[2] = c;
@@ -2229,10 +2886,10 @@ void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func)
SetTaskFuncWithFollowupFunc(taskId, sub_81B1E60, func);
}
-void sub_81B1FA8(u8 taskId, u8 b, u32 hp)
+static void sub_81B1FA8(u8 taskId, u8 b, u32 hp)
{
s16 *data = gTasks[taskId].data;
-
+
switch (b) // only case 0 is used
{
case 0:
@@ -2275,7 +2932,7 @@ u8 pokemon_ailments_get_primary(u32 status)
u8 sub_81B205C(struct Pokemon *mon)
{
u8 ailment;
-
+
if (GetMonData(mon, MON_DATA_HP) == 0)
return AILMENT_FNT;
ailment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
@@ -2286,14 +2943,14 @@ u8 sub_81B205C(struct Pokemon *mon)
return AILMENT_NONE;
}
-void sub_81B209C(void)
+static void sub_81B209C(void)
{
u16 *ptr;
-
+
if (gUnknown_0203CEC8.unk8_0 == 11)
{
u8 i;
-
+
ptr = &gUnknown_0203CEC8.unkE;
gUnknown_0203CEC8.unkE = 0;
if (gSpecialVar_0x8005 == 0)
@@ -2309,7 +2966,7 @@ void sub_81B209C(void)
}
}
-bool16 sub_81B2134(struct Pokemon *mon)
+static bool16 sub_81B2134(struct Pokemon *mon)
{
if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && sub_802C908(GetMonData(mon, MON_DATA_SPECIES)))
return TRUE;
@@ -2318,21 +2975,21 @@ bool16 sub_81B2134(struct Pokemon *mon)
// Dodrio Berry Picking select?
-bool16 sub_81B2164(struct Pokemon *mon)
+static bool16 sub_81B2164(struct Pokemon *mon)
{
if (GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DODRIO)
return TRUE;
return FALSE;
}
-bool8 sub_81B218C(u8 slot)
+static bool8 sub_81B218C(u8 slot)
{
if (!((gUnknown_0203CEC8.unkE >> slot) & 1))
return FALSE;
return TRUE;
}
-void sub_81B21AC(u8 taskId, u8 slot)
+static void sub_81B21AC(u8 taskId, u8 slot)
{
if (sub_81B218C(slot) == TRUE)
{
@@ -2349,14 +3006,14 @@ void sub_81B21AC(u8 taskId, u8 slot)
}
}
-void sub_81B2210(u8 taskId)
+static void sub_81B2210(u8 taskId)
{
sub_81B1B5C(gText_CancelParticipation, 1);
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_81B2248;
}
-void sub_81B2248(u8 taskId)
+static void sub_81B2248(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -2365,28 +3022,29 @@ void sub_81B2248(u8 taskId)
}
}
-void sub_81B227C(u8 taskId)
+static void sub_81B227C(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- gSpecialVar_0x8004 = 7;
- sub_81B12C0(taskId);
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- gTasks[taskId].func = sub_81B1C1C;
- break;
+ case 0:
+ gSpecialVar_0x8004 = 7;
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
}
}
-u8 CanPartyPokemonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
+static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
{
u16 move;
-
+
if (GetMonData(mon, MON_DATA_IS_EGG))
return CANNOT_LEARN_MOVE_IS_EGG;
+
if (item >= ITEM_TM01_FOCUS_PUNCH)
{
if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
@@ -2395,50 +3053,52 @@ u8 CanPartyPokemonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
return CANNOT_LEARN_MOVE;
do {} while (0); // :morphon:
}
- else if (sub_81B2370(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE)
+ else if (CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE)
{
return CANNOT_LEARN_MOVE;
}
else
{
- move = sub_81B2360(tutor);
+ move = GetTutorMove(tutor);
}
-
- if (pokemon_has_move(mon, move) == TRUE)
+
+ if (MonKnowsMove(mon, move) == TRUE)
return ALREADY_KNOWS_MOVE;
- return CAN_LEARN_MOVE;
+ else
+ return CAN_LEARN_MOVE;
}
-u16 sub_81B2360(u8 tutor)
+static u16 GetTutorMove(u8 tutor)
{
- return gUnknown_0861500C[tutor];
+ return gTutorMoves[tutor];
}
-bool8 sub_81B2370(u16 species, u8 tutor)
+static bool8 CanLearnTutorMove(u16 species, u8 tutor)
{
- if (gUnknown_08615048[species] & (1 << tutor))
+ if (sTutorLearnsets[species] & (1 << tutor))
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-void sub_81B239C(u8 a)
+static void sub_81B239C(u8 a)
{
u8 i;
-
+
switch (a)
{
- case 0:
- InitWindows(gUnknown_08615810);
- break;
- case 1:
- InitWindows(gUnknown_08615850);
- break;
- case 2:
- InitWindows(gUnknown_08615890);
- break;
- default:
- InitWindows(gUnknown_086158D0);
- break;
+ case 0:
+ InitWindows(gUnknown_08615810);
+ break;
+ case 1:
+ InitWindows(gUnknown_08615850);
+ break;
+ case 2:
+ InitWindows(gUnknown_08615890);
+ break;
+ default:
+ InitWindows(gUnknown_086158D0);
+ break;
}
DeactivateAllTextPrinters();
for (i = 0; i < PARTY_SIZE; i++)
@@ -2448,13 +3108,13 @@ void sub_81B239C(u8 a)
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
}
-void sub_81B2428(bool8 a)
+static void sub_81B2428(bool8 a)
{
u8 firstWindowId;
u8 windowId;
u8 offset;
u8 mainOffset;
-
+
if (gUnknown_0203CEC8.unk8_0 != 5)
{
if (a == TRUE)
@@ -2490,16 +3150,16 @@ void sub_81B2428(bool8 a)
}
}
-u16* GetPartyMenuPaletteFromBuffer(u8 paletteId)
+static u16* GetPartyMenuPaletteFromBuffer(u8 paletteId)
{
return &gUnknown_0203CEC4->palBuffer[paletteId];
}
-void BlitBitmapToPartyWindow(u8 windowId, u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height)
+static void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height)
{
u8 *pixels = AllocZeroed(height * width * 32);
u8 i, j;
-
+
if (pixels != NULL)
{
for (i = 0; i < height; i++)
@@ -2512,7 +3172,7 @@ void BlitBitmapToPartyWindow(u8 windowId, u8 *b, u8 c, u8 x, u8 y, u8 width, u8
}
}
-void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+static void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
{
if (width == 0 && height == 0)
{
@@ -2525,7 +3185,7 @@ void BlitBitmapToPartyWindow_Default1(u8 windowId, u8 x, u8 y, u8 width, u8 heig
BlitBitmapToPartyWindow(windowId, gUnknown_086159CE, 10, x, y, width, height);
}
-void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
+static void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 f)
{
if (width == 0 && height == 0)
{
@@ -2538,15 +3198,15 @@ void BlitBitmapToPartyWindow_Default2(u8 windowId, u8 x, u8 y, u8 width, u8 heig
BlitBitmapToPartyWindow(windowId, gUnknown_08615A4A, 18, x, y, width, height);
}
-void sub_81B2720(u8 windowId)
+static void sub_81B2720(u8 windowId)
{
BlitBitmapToPartyWindow(windowId, gUnknown_08615A80, 18, 0, 0, 18, 3);
}
-void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
+static void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
{
u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
-
+
if (bitfield & 0x40)
{
LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AF1[0]), gUnknown_08615AC0[0] + palNum, 2);
@@ -2666,15 +3326,15 @@ void UpdateSelectedPartyBox(struct Struct203CEDC *ptr, u8 bitfield)
}
}
-void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, u8 *align)
+static void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align)
{
AddTextPrinterParameterized3(windowId, 0, align[0], align[1], gUnknown_086157FC[color], 0, str);
}
-void DisplayPartyPokemonNickname(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonNickname(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
{
u8 nickname[POKEMON_NAME_LENGTH + 1];
-
+
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
if (c == 1)
@@ -2684,7 +3344,7 @@ void DisplayPartyPokemonNickname(struct Pokemon *mon, struct Struct203CEDC *ptr,
}
}
-void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -2699,7 +3359,7 @@ void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203CEDC *pt
}
}
-void DisplayPartyPokemonLevel(u8 level, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonLevel(u8 level, struct Struct203CEDC *ptr)
{
ConvertIntToDecimalStringN(gStringVar2, level, 0, 3);
StringCopy(gStringVar1, gText_LevelSymbol);
@@ -2707,40 +3367,40 @@ void DisplayPartyPokemonLevel(u8 level, struct Struct203CEDC *ptr)
DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[4]);
}
-void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
{
u8 nickname[POKEMON_NAME_LENGTH + 1];
-
+
if (c == 1)
ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk4[8] >> 3, (ptr->unk0->unk4[9] >> 3) + 1, ptr->unk0->unk4[10] >> 3, ptr->unk0->unk4[11] >> 3, 0);
GetMonNickname(mon, nickname);
DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, ptr);
}
-void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct Struct203CEDC *ptr)
{
u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
-
+
if (species == SPECIES_NONE)
return;
if ((species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) && StringCompare(nickname, gSpeciesNames[species]) == 0)
return;
switch (gender)
{
- case MON_MALE:
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[0]), gUnknown_08615AB6[0] + palNum, 2);
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[1]), gUnknown_08615AB6[1] + palNum, 2);
- DisplayPartyPokemonBarDetail(ptr->windowId, gText_MaleSymbol, 2, &ptr->unk0->unk4[8]);
- break;
- case MON_FEMALE:
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[0]), gUnknown_08615AB6[0] + palNum, 2);
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[1]), gUnknown_08615AB6[1] + palNum, 2);
- DisplayPartyPokemonBarDetail(ptr->windowId, gText_FemaleSymbol, 2, &ptr->unk0->unk4[8]);
- break;
+ case MON_MALE:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[0]), gUnknown_08615AB6[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC3[1]), gUnknown_08615AB6[1] + palNum, 2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gText_MaleSymbol, 2, &ptr->unk0->unk4[8]);
+ break;
+ case MON_FEMALE:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[0]), gUnknown_08615AB6[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC5[1]), gUnknown_08615AB6[1] + palNum, 2);
+ DisplayPartyPokemonBarDetail(ptr->windowId, gText_FemaleSymbol, 2, &ptr->unk0->unk4[8]);
+ break;
}
}
-void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -2751,17 +3411,17 @@ void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr,
}
}
-void DisplayPartyPokemonHP(u16 hp, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonHP(u16 hp, struct Struct203CEDC *ptr)
{
u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, 1, 3);
-
+
strOut[0] = CHAR_SLASH;
strOut[1] = EOS;
-
+
DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[12]);
}
-void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct Struct203CEDC *ptr, u8 c)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -2772,7 +3432,7 @@ void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct Struct203CEDC *pt
}
}
-void DisplayPartyPokemonMaxHP(u16 maxhp, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonMaxHP(u16 maxhp, struct Struct203CEDC *ptr)
{
ConvertIntToDecimalStringN(gStringVar2, maxhp, 1, 3);
StringCopy(gStringVar1, gText_Slash);
@@ -2780,34 +3440,34 @@ void DisplayPartyPokemonMaxHP(u16 maxhp, struct Struct203CEDC *ptr)
DisplayPartyPokemonBarDetail(ptr->windowId, gStringVar1, 0, &ptr->unk0->unk4[16]);
}
-void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
DisplayPartyPokemonHPBar(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), ptr);
}
-void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *ptr)
+static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *ptr)
{
u8 palNum = GetWindowAttribute(ptr->windowId, WINDOW_PALETTE_NUM) * 16;
u8 hpFraction;
-
+
switch (GetHPBarLevel(hp, maxhp))
{
- case HP_BAR_GREEN:
- case HP_BAR_FULL:
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[0]), gUnknown_08615AB8[0] + palNum, 2);
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[1]), gUnknown_08615AB8[1] + palNum, 2);
- break;
- case HP_BAR_YELLOW:
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[0]), gUnknown_08615AB8[0] + palNum, 2);
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[1]), gUnknown_08615AB8[1] + palNum, 2);
- break;
- default:
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[0]), gUnknown_08615AB8[0] + palNum, 2);
- LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[1]), gUnknown_08615AB8[1] + palNum, 2);
- break;
+ case HP_BAR_GREEN:
+ case HP_BAR_FULL:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC7[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
+ case HP_BAR_YELLOW:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615AC9[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
+ default:
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[0]), gUnknown_08615AB8[0] + palNum, 2);
+ LoadPalette(GetPartyMenuPaletteFromBuffer(gUnknown_08615ACB[1]), gUnknown_08615AB8[1] + palNum, 2);
+ break;
}
-
+
hpFraction = GetScaledHPFraction(hp, maxhp, ptr->unk0->unk4[22]);
FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[1], ptr->unk0->unk4[20], ptr->unk0->unk4[21], hpFraction, 1);
FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[0], ptr->unk0->unk4[20], ptr->unk0->unk4[21] + 1, hpFraction, 2);
@@ -2819,89 +3479,19 @@ void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *ptr)
CopyWindowToVram(ptr->windowId, 2);
}
-#ifdef NONMATCHING
-void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
+static void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
{
if (c != 0)
{
- int unk = ((ptr->unk0->unk1C & 7) + ptr->unk0->unk1E + 7) / 8;
- int unk2 = ((ptr->unk0->unk1D & 7) + ptr->unk0->unk1F + 7) / 8;
+ int unk = ((ptr->unk0->unk1C % 8) + ptr->unk0->unk1E + 7) / 8;
+ int unk2 = ((ptr->unk0->unk1D % 8) + ptr->unk0->unk1F + 7) / 8;
ptr->unk0->unk0(ptr->windowId, ptr->unk0->unk1C >> 3, ptr->unk0->unk1D >> 3, unk, unk2, 1);
}
if (c != 2)
AddTextPrinterParameterized3(ptr->windowId, 1, ptr->unk0->unk1C, ptr->unk0->unk1D, gUnknown_086157FC[0], 0, gUnknown_08615B60[stringID]);
}
-#else
-NAKED
-void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0xC\n\
- adds r6, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- lsls r2, 24\n\
- lsrs r7, r2, 24\n\
- cmp r7, 0\n\
- beq _081B2FF2\n\
- ldr r5, [r6]\n\
- ldrb r1, [r5, 0x1C]\n\
- movs r4, 0x7\n\
- adds r0, r1, 0\n\
- ands r0, r4\n\
- ldrb r2, [r5, 0x1E]\n\
- adds r0, r2\n\
- adds r3, r0, 0x7\n\
- asrs r3, 3\n\
- ldrb r2, [r5, 0x1D]\n\
- adds r0, r2, 0\n\
- ands r0, r4\n\
- ldrb r4, [r5, 0x1F]\n\
- adds r0, r4\n\
- adds r4, r0, 0x7\n\
- ldrb r0, [r6, 0x8]\n\
- lsrs r1, 3\n\
- lsrs r2, 3\n\
- lsrs r4, 3\n\
- str r4, [sp]\n\
- movs r4, 0x1\n\
- str r4, [sp, 0x4]\n\
- ldr r4, [r5]\n\
- bl _call_via_r4\n\
-_081B2FF2:\n\
- cmp r7, 0x2\n\
- beq _081B3018\n\
- ldrb r0, [r6, 0x8]\n\
- ldr r1, [r6]\n\
- ldrb r2, [r1, 0x1C]\n\
- ldrb r3, [r1, 0x1D]\n\
- ldr r1, =gUnknown_086157FC\n\
- str r1, [sp]\n\
- movs r1, 0\n\
- str r1, [sp, 0x4]\n\
- ldr r4, =gUnknown_08615B60\n\
- mov r5, r8\n\
- lsls r1, r5, 2\n\
- adds r1, r4\n\
- ldr r1, [r1]\n\
- str r1, [sp, 0x8]\n\
- movs r1, 0x1\n\
- bl AddTextPrinterParameterized3\n\
-_081B3018:\n\
- add sp, 0xC\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
-void sub_81B302C(u8 *ptr)
+static void sub_81B302C(u8 *ptr)
{
if (*ptr != 0xFF)
{
@@ -2915,33 +3505,33 @@ void sub_81B302C(u8 *ptr)
void display_pokemon_menu_message(u32 stringID)
{
u8 *windowPtr = &gUnknown_0203CEC4->unkC[1];
-
+
if (*windowPtr != 0xFF)
sub_81B302C(windowPtr);
-
+
if (stringID != 0x7F)
{
switch (stringID)
{
- case 21:
- *windowPtr = AddWindow(&gUnknown_08615928);
- break;
- case 24:
- *windowPtr = AddWindow(&gUnknown_08615930);
- break;
- case 25:
- *windowPtr = AddWindow(&gUnknown_08615938);
- break;
- case 22:
- case 23:
- *windowPtr = AddWindow(&gUnknown_08615940);
- break;
- case 26:
- *windowPtr = AddWindow(&gUnknown_08615948);
- break;
- default:
- *windowPtr = AddWindow(&gUnknown_08615920);
- break;
+ case 21:
+ *windowPtr = AddWindow(&gUnknown_08615928);
+ break;
+ case 24:
+ *windowPtr = AddWindow(&gUnknown_08615930);
+ break;
+ case 25:
+ *windowPtr = AddWindow(&gUnknown_08615938);
+ break;
+ case 22:
+ case 23:
+ *windowPtr = AddWindow(&gUnknown_08615940);
+ break;
+ case 26:
+ *windowPtr = AddWindow(&gUnknown_08615948);
+ break;
+ default:
+ *windowPtr = AddWindow(&gUnknown_08615920);
+ break;
}
if (stringID == 0)
{
@@ -2957,15 +3547,15 @@ void display_pokemon_menu_message(u32 stringID)
}
}
-bool8 sub_81B314C(void)
+static bool8 sub_81B314C(void)
{
struct Pokemon *party = gPlayerParty;
u8 i;
u8 j = 0;
-
+
if (gUnknown_0203CEC8.unkB == 1)
return TRUE;
-
+
for (i = 0; i < 6; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && (GetMonData(&party[i], MON_DATA_HP) != 0 || GetMonData(&party[i], MON_DATA_IS_EGG)))
@@ -2976,77 +3566,77 @@ bool8 sub_81B314C(void)
return FALSE;
}
-u8 sub_81B31B0(u8 a)
+static u8 sub_81B31B0(u8 a)
{
struct WindowTemplate window;
u8 cursorDimension;
u8 fontAttribute;
u8 i;
-
+
switch (a)
{
- case 0:
- SetWindowTemplateFields(&window, 2, 19, 19 - (gUnknown_0203CEC4->unk17 * 2), 10, gUnknown_0203CEC4->unk17 * 2, 14, 0x2E9);
- break;
- case 1:
- window = gUnknown_08615950;
- break;
- case 2:
- window = gUnknown_08615958;
- break;
- default:
- window = gUnknown_08615960;
- break;
+ case 0:
+ SetWindowTemplateFields(&window, 2, 19, 19 - (gUnknown_0203CEC4->unk17 * 2), 10, gUnknown_0203CEC4->unk17 * 2, 14, 0x2E9);
+ break;
+ case 1:
+ window = gUnknown_08615950;
+ break;
+ case 2:
+ window = gUnknown_08615958;
+ break;
+ default:
+ window = gUnknown_08615960;
+ break;
}
-
+
gUnknown_0203CEC4->unkC[0] = AddWindow(&window);
SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
if (a == 3)
return gUnknown_0203CEC4->unkC[0];
cursorDimension = GetMenuCursorDimensionByFont(1, 0);
fontAttribute = GetFontAttribute(1, 2);
-
+
for (i = 0; i < gUnknown_0203CEC4->unk17; i++)
{
u8 unk = (gUnknown_0203CEC4->unkF[i] > 18) ? 4 : 3;
- AddTextPrinterParameterized4(gUnknown_0203CEC4->unkC[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, gUnknown_086157FC[unk], 0, gUnknown_08615C08[gUnknown_0203CEC4->unkF[i]].textPtr);
+ AddTextPrinterParameterized4(gUnknown_0203CEC4->unkC[0], 1, cursorDimension, (i * 16) + 1, fontAttribute, 0, gUnknown_086157FC[unk], 0, sCursorOptions[gUnknown_0203CEC4->unkF[i]].text);
}
-
+
InitMenuInUpperLeftCorner(gUnknown_0203CEC4->unkC[0], gUnknown_0203CEC4->unk17, 0, 1);
schedule_bg_copy_tilemap_to_vram(2);
-
+
return gUnknown_0203CEC4->unkC[0];
}
-void sub_81B3300(const u8 *text)
+static void sub_81B3300(const u8 *text)
{
SetWindowBorderStyle(6, FALSE, 0x4F, 13);
gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(6, 1, text, GetPlayerTextSpeedDelay(), 0, 2, 1, 3);
}
-void sub_81B334C(void)
+static void sub_81B334C(void)
{
CreateYesNoMenu(&gUnknown_08615968, 0x4F, 13, 0);
}
-u8 sub_81B3364(void)
+static u8 sub_81B3364(void)
{
gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970);
SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13);
return gUnknown_0203CEC4->unkC[0];
}
-void sub_81B3394(void)
+static void sub_81B3394(void)
{
ClearWindowTilemap(gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
}
-void sub_81B33B4(struct Pokemon *mons, u8 a, u8 b)
+static void sub_81B33B4(struct Pokemon *mons, u8 a, u8 b)
{
u8 i;
-
+
if (b == 0)
{
sub_81B3414(mons, a);
@@ -3059,23 +3649,24 @@ void sub_81B33B4(struct Pokemon *mons, u8 a, u8 b)
}
}
-void sub_81B3414(struct Pokemon *mons, u8 a)
+static void sub_81B3414(struct Pokemon *mons, u8 a)
{
u8 i, j;
-
+
gUnknown_0203CEC4->unk17 = 0;
AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 0);
for (i = 0; i < MAX_MON_MOVES; i++)
{
- for (j = 0; gUnknown_08615D7E[j] != MOVE_SWORDS_DANCE; j++)
+ for (j = 0; sFieldMoves[j] != FIELD_MOVE_TERMINATOR; j++)
{
- if (GetMonData(&mons[a], i + MON_DATA_MOVE1) == gUnknown_08615D7E[j])
+ if (GetMonData(&mons[a], i + MON_DATA_MOVE1) == sFieldMoves[j])
{
AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, j + 19);
break;
}
}
}
+
if (!InBattlePike())
{
if (GetMonData(&mons[1], MON_DATA_SPECIES) != SPECIES_NONE)
@@ -3088,62 +3679,62 @@ void sub_81B3414(struct Pokemon *mons, u8 a)
AppendToList(gUnknown_0203CEC4->unkF, &gUnknown_0203CEC4->unk17, 2);
}
-u8 sub_81B353C(struct Pokemon *mon)
+static u8 sub_81B353C(struct Pokemon *mon)
{
u32 returnVar;
-
+
switch (gUnknown_0203CEC8.unk8_0)
{
+ case 0:
+ if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG))
+ returnVar = 1;
+ else
+ returnVar = 0;
+ break;
+ case 1:
+ returnVar = sub_81B8A2C(mon);
+ break;
+ case 4:
+ switch (sub_81B856C(gUnknown_0203CEC8.unk9))
+ {
+ default:
+ returnVar = 7;
+ break;
case 0:
- if (InMultiBattleRoom() == TRUE || GetMonData(mon, MON_DATA_IS_EGG))
- returnVar = 1;
- else
- returnVar = 0;
+ returnVar = 4;
break;
case 1:
- returnVar = sub_81B8A2C(mon);
- break;
- case 4:
- switch (sub_81B856C(gUnknown_0203CEC8.unk9))
- {
- default:
- returnVar = 7;
- break;
- case 0:
- returnVar = 4;
- break;
- case 1:
- returnVar = 5;
- break;
- }
- break;
- case 6:
- returnVar = (GetMonData(mon, MON_DATA_IS_EGG)) ? 7 : 6;
- break;
- case 8:
- returnVar = 10;
- break;
- case 9:
- returnVar = 11;
- break;
- case 10:
- returnVar = 12;
- break;
- case 12:
- returnVar = 13;
- break;
- default:
- returnVar = 0;
+ returnVar = 5;
break;
+ }
+ break;
+ case 6:
+ returnVar = (GetMonData(mon, MON_DATA_IS_EGG)) ? 7 : 6;
+ break;
+ case 8:
+ returnVar = 10;
+ break;
+ case 9:
+ returnVar = 11;
+ break;
+ case 10:
+ returnVar = 12;
+ break;
+ case 12:
+ returnVar = 13;
+ break;
+ default:
+ returnVar = 0;
+ break;
}
return returnVar;
}
-bool8 sub_81B3608(u8 taskId)
+static bool8 sub_81B3608(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item;
-
+
GetMonNickname(mon, gStringVar1);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
if (gUnknown_0203CEC8.unk8_0 != 12)
@@ -3174,53 +3765,53 @@ bool8 sub_81B3608(u8 taskId)
return TRUE;
}
-void sub_81B36FC(u8 taskId)
+static void sub_81B36FC(u8 taskId)
{
if (sub_81B3608(taskId))
{
gTasks[taskId].data[0] = 0xFF;
- gTasks[taskId].func = sub_81B3730;
+ gTasks[taskId].func = HandleMenuInput;
}
}
-void sub_81B3730(u8 taskId)
+static void HandleMenuInput(u8 taskId)
{
- s16 *data;
- s8 input;
-
- if (gPaletteFade.active == FALSE && sub_81221EC() != TRUE)
+ if (!gPaletteFade.active && sub_81221EC() != TRUE)
{
- data = gTasks[taskId].data;
+ s8 input;
+ s16 *data = gTasks[taskId].data;
+
if (gUnknown_0203CEC4->unk17 <= 3)
input = Menu_ProcessInputNoWrapAround_other();
else
input = ProcessMenuInput_other();
- data[0] = GetMenuCursorPos();
- if (input != MENU_NOTHING_CHOSEN)
+
+ data[0] = Menu_GetCursorPos();
+ switch (input)
{
- if (input == MENU_B_PRESSED)
- {
- PlaySE(SE_SELECT);
- sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
- gUnknown_08615C08[gUnknown_0203CEC4->unkF[gUnknown_0203CEC4->unk17 - 1]].func(taskId);
- }
- else
- {
- sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
- gUnknown_08615C08[gUnknown_0203CEC4->unkF[input]].func(taskId);
- }
+ case MENU_NOTHING_CHOSEN:
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
+ sCursorOptions[gUnknown_0203CEC4->unkF[gUnknown_0203CEC4->unk17 - 1]].func(taskId);
+ break;
+ default:
+ sub_81B302C(&gUnknown_0203CEC4->unkC[2]);
+ sCursorOptions[gUnknown_0203CEC4->unkF[input]].func(taskId);
+ break;
}
}
}
-void sub_81B37FC(u8 taskId)
+static void CursorCb_Summary(u8 taskId)
{
PlaySE(SE_SELECT);
gUnknown_0203CEC4->exitCallback = sub_81B3828;
sub_81B12C0(taskId);
}
-void sub_81B3828(void)
+static void sub_81B3828(void)
{
if (gUnknown_0203CEC8.unk8_0 == 1)
{
@@ -3233,14 +3824,14 @@ void sub_81B3828(void)
}
}
-void sub_81B3894(void)
+static void sub_81B3894(void)
{
gPaletteFade.bufferTransferDisabled = TRUE;
gUnknown_0203CEC8.unk9 = gUnknown_0203CF20;
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
}
-void brm_switch(u8 taskId)
+static void CursorCb_Switch(u8 taskId)
{
PlaySE(SE_SELECT);
gUnknown_0203CEC8.unkB = 8;
@@ -3252,11 +3843,11 @@ void brm_switch(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void sub_81B3938(u8 taskId)
+static void sub_81B3938(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 windowIds[2];
-
+
if (gUnknown_0203CEC8.unkA == gUnknown_0203CEC8.unk9)
{
sub_81B407C(taskId);
@@ -3297,20 +3888,18 @@ void sub_81B3938(u8 taskId)
}
}
-#ifdef NONMATCHING
-bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
+static bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
{
-
- if ((a + b) < 0 || a > 31)
- {
+ if ((a + b) < 0)
return FALSE;
- }
+ if (a > 31)
+ return FALSE;
+
if (a < 0)
{
- *c = -a;
+ *c = a * -1;
*d = 0;
- *e = a + b;
- return TRUE;
+ *e = b + a;
}
else
{
@@ -3320,78 +3909,15 @@ bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
*e = 32 - a;
else
*e = b;
- return TRUE;
- }
+ }
+ return TRUE;
}
-#else
-NAKED
-bool8 sub_81B3AD8(s16 a, s16 b, u8 *c, u8 *d, u8 *e)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- adds r6, r2, 0\n\
- mov r12, r3\n\
- ldr r7, [sp, 0x18]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- adds r5, r3, 0\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- mov r8, r2\n\
- lsls r0, r3, 16\n\
- asrs r1, r0, 16\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- adds r4, r1, r0\n\
- cmp r4, 0\n\
- blt _081B3B02\n\
- cmp r1, 0x1F\n\
- ble _081B3B06\n\
-_081B3B02:\n\
- movs r0, 0\n\
- b _081B3B34\n\
-_081B3B06:\n\
- cmp r1, 0\n\
- bge _081B3B1A\n\
- negs r0, r1\n\
- strb r0, [r6]\n\
- movs r0, 0\n\
- mov r1, r12\n\
- strb r0, [r1]\n\
- adds r0, r2, r3\n\
- strb r0, [r7]\n\
- b _081B3B32\n\
-_081B3B1A:\n\
- movs r0, 0\n\
- strb r0, [r6]\n\
- mov r0, r12\n\
- strb r5, [r0]\n\
- cmp r4, 0x1F\n\
- ble _081B3B2E\n\
- movs r0, 0x20\n\
- subs r0, r5\n\
- strb r0, [r7]\n\
- b _081B3B32\n\
-_081B3B2E:\n\
- mov r1, r8\n\
- strb r1, [r7]\n\
-_081B3B32:\n\
- movs r0, 0x1\n\
-_081B3B34:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n");
-}
-#endif
-void sub_81B3B40(const void *rectSrc, s16 a, s16 b, s16 c, s16 d, s16 e)
+static void sub_81B3B40(const void *rectSrc, s16 a, s16 b, s16 c, s16 d, s16 e)
{
u8 f, g, h;
-
+
if (sub_81B3AD8(a, c, &f, &g, &h))
{
FillBgTilemapBufferRect_Palette0(0, 0, g, b, h, d);
@@ -3400,7 +3926,7 @@ void sub_81B3B40(const void *rectSrc, s16 a, s16 b, s16 c, s16 d, s16 e)
}
}
-void sub_81B3C0C(struct Struct203CEDC *ptr, s16 a)
+static void sub_81B3C0C(struct Struct203CEDC *ptr, s16 a)
{
gSprites[ptr->unkB].pos2.x += a * 8;
gSprites[ptr->unkA].pos2.x += a * 8;
@@ -3408,20 +3934,20 @@ void sub_81B3C0C(struct Struct203CEDC *ptr, s16 a)
gSprites[ptr->unkC].pos2.x += a * 8;
}
-void sub_81B3C60(u8 taskId)
+static void sub_81B3C60(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
+
if (data[10] != 0)
sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], data[10]);
if (data[11] != 0)
sub_81B3C0C(&gUnknown_0203CEDC[gUnknown_0203CEC8.unkA], data[11]);
}
-void sub_81B3CC0(u8 taskId)
+static void sub_81B3CC0(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
+
if (data[10] != 0)
sub_81B3B40(gUnknown_0203CEF0, data[0] + data[8], data[1], data[2], data[3], data[10]);
if (data[11] != 0)
@@ -3429,11 +3955,11 @@ void sub_81B3CC0(u8 taskId)
schedule_bg_copy_tilemap_to_vram(0);
}
-void sub_81B3D48(u8 taskId)
+static void sub_81B3D48(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u16 tilemapRelatedMaybe[2];
-
+
sub_81B3CC0(taskId);
sub_81B3C60(taskId);
data[8] += data[10];
@@ -3457,10 +3983,10 @@ void sub_81B3D48(u8 taskId)
}
}
-void sub_81B3E60(u8 taskId)
+static void sub_81B3E60(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
+
sub_81B3CC0(taskId);
sub_81B3C60(taskId);
if (data[10] == 0 && data[11] == 0)
@@ -3483,11 +4009,11 @@ void sub_81B3E60(u8 taskId)
}
}
-void oamt_swap_pos(u8 *spriteIdPtr1, u8 *spriteIdPtr2)
+static void oamt_swap_pos(u8 *spriteIdPtr1, u8 *spriteIdPtr2)
{
u8 spriteIdBuffer = *spriteIdPtr1;
u16 xBuffer1, yBuffer1, xBuffer2, yBuffer2;
-
+
*spriteIdPtr1 = *spriteIdPtr2;
*spriteIdPtr2 = spriteIdBuffer;
xBuffer1 = gSprites[*spriteIdPtr1].pos1.x;
@@ -3501,15 +4027,15 @@ void oamt_swap_pos(u8 *spriteIdPtr1, u8 *spriteIdPtr2)
gSprites[*spriteIdPtr2].pos1.x = xBuffer1;
gSprites[*spriteIdPtr2].pos1.y = yBuffer1;
gSprites[*spriteIdPtr2].pos2.x = xBuffer2;
- gSprites[*spriteIdPtr2].pos2.y = yBuffer2;
+ gSprites[*spriteIdPtr2].pos2.y = yBuffer2;
}
-void swap_pokemon_and_oams(void)
+static void swap_pokemon_and_oams(void)
{
struct Struct203CEDC *structPtrs[2];
struct Pokemon *mon1, *mon2;
struct Pokemon *monBuffer;
-
+
structPtrs[0] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9];
structPtrs[1] = &gUnknown_0203CEDC[gUnknown_0203CEC8.unkA];
mon1 = &gPlayerParty[gUnknown_0203CEC8.unk9];
@@ -3525,7 +4051,7 @@ void swap_pokemon_and_oams(void)
oamt_swap_pos(&structPtrs[0]->unkC, &structPtrs[1]->unkC);
}
-void sub_81B407C(u8 taskId)
+static void sub_81B407C(u8 taskId)
{
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
gUnknown_0203CEC8.unkB = 0;
@@ -3536,7 +4062,7 @@ void sub_81B407C(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void brm_cancel_1(u8 taskId)
+static void CursorCb_Cancel1(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
@@ -3548,7 +4074,7 @@ void brm_cancel_1(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void sub_81B4134(u8 taskId)
+static void CursorCb_Item(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
@@ -3557,17 +4083,17 @@ void sub_81B4134(u8 taskId)
sub_81B31B0(1);
display_pokemon_menu_message(24);
gTasks[taskId].data[0] = 0xFF;
- gTasks[taskId].func = sub_81B3730;
+ gTasks[taskId].func = HandleMenuInput;
}
-void sub_81B4198(u8 taskId)
+static void CursorCb_Give(u8 taskId)
{
PlaySE(SE_SELECT);
gUnknown_0203CEC4->exitCallback = sub_81B41C4;
sub_81B12C0(taskId);
}
-void sub_81B41C4(void)
+static void sub_81B41C4(void)
{
if (InBattlePyramid() == FALSE)
GoToBagMenu(RETURN_LOCATION_POKEMON_LIST, POCKETS_COUNT, c2_8123744);
@@ -3575,7 +4101,7 @@ void sub_81B41C4(void)
sub_81C4F98(2, c2_8123744);
}
-void c2_8123744(void)
+static void c2_8123744(void)
{
if (gSpecialVar_ItemId == ITEM_NONE)
{
@@ -3601,10 +4127,10 @@ void c2_8123744(void)
}
}
-void sub_81B42D0(u8 taskId)
+static void sub_81B42D0(u8 taskId)
{
u16 item;
-
+
if (!gPaletteFade.active)
{
item = gSpecialVar_ItemId;
@@ -3615,7 +4141,7 @@ void sub_81B42D0(u8 taskId)
}
}
-void sub_81B4350(u8 taskId)
+static void sub_81B4350(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -3624,7 +4150,7 @@ void sub_81B4350(u8 taskId)
}
}
-void sub_81B43A8(u8 taskId)
+static void sub_81B43A8(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -3633,40 +4159,40 @@ void sub_81B43A8(u8 taskId)
}
}
-void sub_81B43DC(u8 taskId)
+static void sub_81B43DC(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- RemoveBagItem(gSpecialVar_ItemId, 1);
- if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
- {
- AddBagItem(gSpecialVar_ItemId, 1);
- pokemon_item_not_removed(gUnknown_0203CEFC);
- sub_81B1B5C(gStringVar4, 0);
- gTasks[taskId].func = sub_81B1C1C;
- }
- else if (ItemIsMail(gSpecialVar_ItemId))
- {
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
- gTasks[taskId].func = sub_81B44FC;
- }
- else
- {
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
- sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 1);
- gTasks[taskId].func = sub_81B469C;
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
+ case 0:
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
+ {
+ AddBagItem(gSpecialVar_ItemId, 1);
+ pokemon_item_not_removed(gUnknown_0203CEFC);
+ sub_81B1B5C(gStringVar4, 0);
gTasks[taskId].func = sub_81B1C1C;
- break;
+ }
+ else if (ItemIsMail(gSpecialVar_ItemId))
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ gTasks[taskId].func = sub_81B44FC;
+ }
+ else
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gSpecialVar_ItemId);
+ sub_81B1D68(gSpecialVar_ItemId, gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
}
}
-void sub_81B44FC(u8 taskId)
+static void sub_81B44FC(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -3675,18 +4201,18 @@ void sub_81B44FC(u8 taskId)
}
}
-void sub_81B452C(void)
+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);
}
-void sub_81B4578(void)
+static void sub_81B4578(void)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
-
+
if (gSpecialVar_Result == FALSE)
{
TakeMailFromMon(mon);
@@ -3701,7 +4227,7 @@ void sub_81B4578(void)
}
}
-void sub_81B4624(u8 taskId)
+static void sub_81B4624(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -3713,10 +4239,10 @@ void sub_81B4624(u8 taskId)
}
}
-void sub_81B469C(u8 taskId)
+static void sub_81B469C(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
-
+
if (sub_81B1BD4() != TRUE)
{
sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
@@ -3731,38 +4257,38 @@ void sub_81B469C(u8 taskId)
}
}
-void sub_81B4724(u8 taskId)
+static void CursorCb_TakeItem(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
-
+
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
switch (sub_81B1E00(mon))
{
- case 0:
- GetMonNickname(mon, gStringVar1);
- StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
- sub_81B1B5C(gStringVar4, 1);
- break;
- case 1:
- pokemon_item_not_removed(item);
- sub_81B1B5C(gStringVar4, 1);
- break;
- default:
- sub_81B1CD0(mon, item, 1);
- break;
+ case 0:
+ GetMonNickname(mon, gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnNotHolding);
+ sub_81B1B5C(gStringVar4, 1);
+ break;
+ case 1:
+ pokemon_item_not_removed(item);
+ sub_81B1B5C(gStringVar4, 1);
+ break;
+ default:
+ sub_81B1CD0(mon, item, 1);
+ break;
}
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_81B469C;
}
-void sub_81B47E0(u8 taskId)
+static void CursorCb_Toss(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
-
+
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
@@ -3782,7 +4308,7 @@ void sub_81B47E0(u8 taskId)
}
}
-void sub_81B48A8(u8 taskId)
+static void sub_81B48A8(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -3791,42 +4317,42 @@ void sub_81B48A8(u8 taskId)
}
}
-void sub_81B48DC(u8 taskId)
+static void sub_81B48DC(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
-
+
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- CopyItemName(GetMonData(mon, MON_DATA_HELD_ITEM), gStringVar1);
- StringExpandPlaceholders(gStringVar4, gText_ItemThrownAway);
- sub_81B1B5C(gStringVar4, 0);
- gTasks[taskId].func = sub_81B4988;
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- gTasks[taskId].func = sub_81B1C1C;
- break;
+ case 0:
+ CopyItemName(GetMonData(mon, MON_DATA_HELD_ITEM), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gText_ItemThrownAway);
+ sub_81B1B5C(gStringVar4, 0);
+ gTasks[taskId].func = sub_81B4988;
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
}
}
-void sub_81B4988(u8 taskId)
+static void sub_81B4988(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
- u16 itemClear;
-
+
if (sub_81B1BD4() != TRUE)
{
- itemClear = ITEM_NONE;
- SetMonData(mon, MON_DATA_HELD_ITEM, &itemClear);
+ u16 item = ITEM_NONE;
+
+ SetMonData(mon, MON_DATA_HELD_ITEM, &item);
sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9], 1);
gTasks[taskId].func = sub_81B1C1C;
}
}
-void sub_81B4A08(u8 taskId)
+static void CursorCb_Mail(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
@@ -3835,28 +4361,28 @@ void sub_81B4A08(u8 taskId)
sub_81B31B0(2);
display_pokemon_menu_message(25);
gTasks[taskId].data[0] = 0xFF;
- gTasks[taskId].func = sub_81B3730;
+ gTasks[taskId].func = HandleMenuInput;
}
-void sub_81B4A6C(u8 taskId)
+static void CursorCb_Read(u8 taskId)
{
PlaySE(SE_SELECT);
gUnknown_0203CEC4->exitCallback = sub_81B4A98;
sub_81B12C0(taskId);
}
-void sub_81B4A98(void)
+static void sub_81B4A98(void)
{
ReadMail(&gSaveBlock1Ptr->mail[GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL)], sub_81B4AE0, 1);
}
-void sub_81B4AE0(void)
+static void sub_81B4AE0(void)
{
gPaletteFade.bufferTransferDisabled = TRUE;
InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback);
}
-void brm_take_2(u8 taskId)
+static void CursorCb_TakeMail(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
@@ -3865,7 +4391,7 @@ void brm_take_2(u8 taskId)
gTasks[taskId].func = sub_81B4B6C;
}
-void sub_81B4B6C(u8 taskId)
+static void sub_81B4B6C(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -3874,32 +4400,32 @@ void sub_81B4B6C(u8 taskId)
}
}
-void sub_81B4BA0(u8 taskId)
+static void sub_81B4BA0(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- if (TakeMailFromMon2(&gPlayerParty[gUnknown_0203CEC8.unk9]) != 0xFF)
- {
- sub_81B1B5C(gText_MailSentToPC, 0);
- gTasks[taskId].func = sub_81B469C;
- }
- else
- {
- sub_81B1B5C(gText_PCMailboxFull, 0);
- gTasks[taskId].func = sub_81B1C1C;
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- sub_81B1B5C(gText_MailMessageWillBeLost, 1);
- gTasks[taskId].func = sub_81B4C60;
- break;
+ case 0:
+ if (TakeMailFromMon2(&gPlayerParty[gUnknown_0203CEC8.unk9]) != 0xFF)
+ {
+ sub_81B1B5C(gText_MailSentToPC, 0);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ else
+ {
+ sub_81B1B5C(gText_PCMailboxFull, 0);
+ gTasks[taskId].func = sub_81B1C1C;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1B5C(gText_MailMessageWillBeLost, 1);
+ gTasks[taskId].func = sub_81B4C60;
+ break;
}
}
-void sub_81B4C60(u8 taskId)
+static void sub_81B4C60(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -3908,39 +4434,39 @@ void sub_81B4C60(u8 taskId)
}
}
-void sub_81B4C94(u8 taskId)
+static void sub_81B4C94(u8 taskId)
{
u16 item;
-
+
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- item = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
- if (AddBagItem(item, 1) == TRUE)
- {
- TakeMailFromMon(&gPlayerParty[gUnknown_0203CEC8.unk9]);
- sub_81B1B5C(gText_MailTakenFromPkmn, 0);
- gTasks[taskId].func = sub_81B469C;
- }
- else
- {
- pokemon_item_not_removed(item);
- sub_81B1B5C(gStringVar4, 0);
- gTasks[taskId].func = sub_81B1C1C;
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
+ case 0:
+ item = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
+ if (AddBagItem(item, 1) == TRUE)
+ {
+ TakeMailFromMon(&gPlayerParty[gUnknown_0203CEC8.unk9]);
+ sub_81B1B5C(gText_MailTakenFromPkmn, 0);
+ gTasks[taskId].func = sub_81B469C;
+ }
+ else
+ {
+ pokemon_item_not_removed(item);
+ sub_81B1B5C(gStringVar4, 0);
gTasks[taskId].func = sub_81B1C1C;
- break;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B1C1C;
+ break;
}
}
-void sub_81B4D78(u8 taskId)
+static void CursorCb_Cancel2(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
-
+
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
@@ -3957,10 +4483,10 @@ void sub_81B4D78(u8 taskId)
display_pokemon_menu_message(26);
}
gTasks[taskId].data[0] = 0xFF;
- gTasks[taskId].func = sub_81B3730;
+ gTasks[taskId].func = HandleMenuInput;
}
-void brm_shift_sendout(u8 taskId)
+static void CursorCb_SendMon(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
@@ -3976,11 +4502,11 @@ void brm_shift_sendout(u8 taskId)
}
}
-void sub_81B4E8C(u8 taskId)
+static void CursorCb_Enter(u8 taskId)
{
u8 unk;
u8 i;
-
+
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
unk = sub_81B8830();
@@ -4005,18 +4531,18 @@ void sub_81B4E8C(u8 taskId)
gTasks[taskId].func = sub_81B1C1C;
}
-void sub_81B4F88(void)
+static void sub_81B4F88(void)
{
sub_81B0FCC(gUnknown_0203CEC8.unk9, 0);
gUnknown_0203CEC8.unk9 = 6;
sub_81B0FCC(gUnknown_0203CEC8.unk9, 1);
}
-void sub_81B4FA8(u8 taskId)
+static void CursorCb_NoEntry(u8 taskId)
{
u8 unk;
u8 i, j;
-
+
PlaySE(SE_SELECT);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
@@ -4041,30 +4567,30 @@ void sub_81B4FA8(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void sub_81B50AC(u8 taskId)
+static void CursorCb_Store(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B12C0(taskId);
}
-void sub_81B50C8(u8 taskId)
+static void CursorCb_Register(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
-
- switch (sub_807A8D0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, species2, species, obedience))
+
+ switch (sub_807A8D0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), species2, species, obedience))
{
- case 1:
- StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
- break;
- case 2:
- StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
- break;
- default:
- PlaySE(SE_SELECT);
- sub_81B12C0(taskId);
- return;
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
+ break;
+ case 2:
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_81B12C0(taskId);
+ return;
}
PlaySE(SE_HAZURE);
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
@@ -4074,13 +4600,13 @@ void sub_81B50C8(u8 taskId)
gTasks[taskId].func = sub_81B1C1C;
}
-void brm_trade_1(u8 taskId)
+static void CursorCb_Trade1(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_OBEDIENCE);
- u32 stringId = sub_807A7E0(*(u32 *)sub_800F7DC() /* dirty cast, probably needs to be changed */, *(u32 *)&gUnknown_02022C38 /* dirty cast, probably needs to be changed */, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
-
+ u32 stringId = sub_807A7E0(*(struct UnkLinkRfuStruct_02022B14Substruct *)sub_800F7DC(), gUnknown_02022C38, species2, gUnknown_02022C3C, gUnknown_02022C3E, species, obedience);
+
if (stringId != 0)
{
StringExpandPlaceholders(gStringVar4, gUnknown_08615E0C[stringId - 1]);
@@ -4098,28 +4624,28 @@ void brm_trade_1(u8 taskId)
}
}
-void sub_81B52E4(u8 taskId)
+static void CursorCb_Trade2(u8 taskId)
{
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
switch (sub_807A918(gPlayerParty, gUnknown_0203CEC8.unk9))
{
- case 1:
- StringExpandPlaceholders(gStringVar4, gText_OnlyPkmnForBattle);
- break;
- case 2:
- StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
- break;
- case 3:
- StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
- break;
- default:
- PlaySE(SE_SELECT);
- GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gJPText_PutVar1IntoSpinner);
- sub_81B1B5C(gStringVar4, 1);
- gTasks[taskId].func = sub_81B53FC;
- return;
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gText_OnlyPkmnForBattle);
+ break;
+ case 2:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
+ break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gJPText_PutVar1IntoSpinner);
+ sub_81B1B5C(gStringVar4, 1);
+ gTasks[taskId].func = sub_81B53FC;
+ return;
}
PlaySE(SE_HAZURE);
StringAppend(gStringVar4, gText_PauseUntilPress);
@@ -4127,7 +4653,7 @@ void sub_81B52E4(u8 taskId)
gTasks[taskId].func = sub_81B1C1C;
}
-void sub_81B53FC(u8 taskId)
+static void sub_81B53FC(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -4136,107 +4662,107 @@ void sub_81B53FC(u8 taskId)
}
}
-void sub_81B5430(u8 taskId)
+static void sub_81B5430(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- sub_81B12C0(taskId);
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- sub_81B1C1C(taskId);
- break;
+ case 0:
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B1C1C(taskId);
+ break;
}
}
-void sub_81B5470(u8 taskId)
+static void CursorCb_FieldMove(u8 taskId)
{
- u8 fieldMove = gUnknown_0203CEC4->unkF[GetMenuCursorPos()] - 19;
- struct MapHeader const *mapHeader;
- u8 fieldMove2;
-
+ u8 fieldMove = gUnknown_0203CEC4->unkF[Menu_GetCursorPos()] - MENU_FIELD_MOVES;
+ const struct MapHeader *mapHeader;
+
PlaySE(SE_SELECT);
- if (gUnknown_08615D9C[fieldMove].fieldMoveFunc != NULL)
+ if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc == NULL)
+ return;
+
+ sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
+ sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
+ if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
{
- sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- sub_81B302C(&gUnknown_0203CEC4->unkC[1]);
- if (sub_81221AC() == TRUE || InUnionRoom() == TRUE)
+ if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED)
+ display_pokemon_menu_message(13);
+ else
+ display_pokemon_menu_message(sFieldMoveCursorCallbacks[fieldMove].msgId);
+
+ gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
+ }
+ else
+ {
+ // All field moves before WATERFALL are HMs.
+ if (fieldMove <= FIELD_MOVE_WATERFALL && FlagGet(FLAG_BADGE01_GET + fieldMove) != TRUE)
{
- fieldMove2 = fieldMove - 11;
- if (fieldMove2 <= 1)
- display_pokemon_menu_message(13);
- else
- display_pokemon_menu_message(gUnknown_08615D9C[fieldMove].msgID);
- gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
+ sub_81B1B5C(gText_CantUseUntilNewBadge, 1);
+ gTasks[taskId].func = sub_81B1C1C;
}
- else
+ else if (sFieldMoveCursorCallbacks[fieldMove].fieldMoveFunc() == TRUE)
{
- if (fieldMove <= 7 && FlagGet(FLAG_BADGE01_GET + fieldMove) != TRUE)
- {
- sub_81B1B5C(gText_CantUseUntilNewBadge, 1);
- gTasks[taskId].func = sub_81B1C1C;
- }
- else if (gUnknown_08615D9C[fieldMove].fieldMoveFunc() == TRUE)
+ switch (fieldMove)
{
- switch (fieldMove - 5)
- {
- case 6:
- case 7:
- sub_8161560(taskId);
- break;
- case 3:
- mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum);
- sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
- StringExpandPlaceholders(gStringVar4, gText_ReturnToHealingSpot);
- sub_81B5674(taskId);
- gUnknown_0203CEC4->data[0] = fieldMove;
- break;
- case 4:
- mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
- sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
- StringExpandPlaceholders(gStringVar4, gText_EscapeFromHere);
- sub_81B5674(taskId);
- gUnknown_0203CEC4->data[0] = fieldMove;
- break;
- case 0:
- gUnknown_0203CEC8.exitCallback = MCB2_FlyMap;
- sub_81B12C0(taskId);
- break;
- default:
- gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
- sub_81B12C0(taskId);
- break;
- }
+ case FIELD_MOVE_MILK_DRINK:
+ case FIELD_MOVE_SOFT_BOILED:
+ sub_8161560(taskId);
+ break;
+ case FIELD_MOVE_TELEPORT:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->lastHealLocation.mapGroup, gSaveBlock1Ptr->lastHealLocation.mapNum);
+ sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_ReturnToHealingSpot);
+ sub_81B5674(taskId);
+ gUnknown_0203CEC4->data[0] = fieldMove;
+ break;
+ case FIELD_MOVE_DIG:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
+ sub_81245DC(gStringVar1, mapHeader->regionMapSectionId);
+ StringExpandPlaceholders(gStringVar4, gText_EscapeFromHere);
+ sub_81B5674(taskId);
+ gUnknown_0203CEC4->data[0] = fieldMove;
+ break;
+ case FIELD_MOVE_FLY:
+ gUnknown_0203CEC8.exitCallback = MCB2_FlyMap;
+ sub_81B12C0(taskId);
+ break;
+ default:
+ gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
+ sub_81B12C0(taskId);
+ break;
}
- else
+ }
+ else
+ {
+ switch (fieldMove)
{
- switch (fieldMove)
- {
- case 4:
- sub_81B5864();
- break;
- case 1:
- sub_81B57DC();
- break;
- default:
- display_pokemon_menu_message(gUnknown_08615D9C[fieldMove].msgID);
- break;
- }
- gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
+ case FIELD_MOVE_SURF:
+ sub_81B5864();
+ break;
+ case FIELD_MOVE_FLASH:
+ sub_81B57DC();
+ break;
+ default:
+ display_pokemon_menu_message(sFieldMoveCursorCallbacks[fieldMove].msgId);
+ break;
}
+ gTasks[taskId].func = task_brm_cancel_1_on_keypad_a_or_b;
}
}
}
-void sub_81B5674(u8 taskId)
+static void sub_81B5674(u8 taskId)
{
sub_81B1B5C(gStringVar4, 1);
gTasks[taskId].func = sub_81B56A4;
}
-void sub_81B56A4(u8 taskId)
+static void sub_81B56A4(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -4245,21 +4771,21 @@ void sub_81B56A4(u8 taskId)
}
}
-void sub_81B56D8(u8 taskId)
+static void sub_81B56D8(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
- sub_81B12C0(taskId);
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- gFieldCallback2 = NULL;
- gPostMenuFieldCallback = NULL;
- sub_81B1C1C(taskId);
- break;
+ case 0:
+ gUnknown_0203CEC8.exitCallback = CB2_ReturnToField;
+ sub_81B12C0(taskId);
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gFieldCallback2 = NULL;
+ gPostMenuFieldCallback = NULL;
+ sub_81B1C1C(taskId);
+ break;
}
}
@@ -4270,7 +4796,7 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void)
return TRUE;
}
-void task_launch_hm_phase_2(u8 taskId)
+static void task_launch_hm_phase_2(u8 taskId)
{
if (IsWeatherNotFadingIn() == TRUE)
{
@@ -4280,18 +4806,18 @@ void task_launch_hm_phase_2(u8 taskId)
}
}
-u16 brm_get_selected_species(void)
+static u16 brm_get_selected_species(void)
{
return GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_SPECIES);
}
-void task_brm_cancel_1_on_keypad_a_or_b(u8 taskId)
+static void task_brm_cancel_1_on_keypad_a_or_b(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
- brm_cancel_1(taskId);
+ CursorCb_Cancel1(taskId);
}
-void sub_81B57DC(void)
+static void sub_81B57DC(void)
{
if (FlagGet(FLAG_SYS_USE_FLASH) == TRUE)
display_pokemon_menu_message(12);
@@ -4299,13 +4825,13 @@ void sub_81B57DC(void)
display_pokemon_menu_message(13);
}
-void hm_surf_run_dp02scr(void)
+static void hm_surf_run_dp02scr(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_SURF);
}
-bool8 sub_81B5820(void)
+static bool8 SetUpFieldMove_Surf(void)
{
if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
{
@@ -4316,19 +4842,20 @@ bool8 sub_81B5820(void)
return FALSE;
}
-void sub_81B5864(void)
+static void sub_81B5864(void)
{
- if (TestPlayerAvatarFlags(8))
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
display_pokemon_menu_message(9);
else
display_pokemon_menu_message(8);
}
-bool8 sub_81B5884(void)
+static bool8 SetUpFieldMove_Fly(void)
{
if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
void sub_81B58A8(void)
@@ -4336,16 +4863,16 @@ void sub_81B58A8(void)
InitPartyMenu(0, 0, 0, 1, 0, sub_81B1370, CB2_ReturnToFieldWithOpenMenu);
}
-void hm2_waterfall(void)
+static void hm2_waterfall(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_WATERFALL);
}
-bool8 hm_prepare_waterfall(void)
+static bool8 SetUpFieldMove_Waterfall(void)
{
s16 x, y;
-
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE && IsPlayerSurfingNorth() == TRUE)
{
@@ -4356,13 +4883,13 @@ bool8 hm_prepare_waterfall(void)
return FALSE;
}
-void sub_81B5958(void)
+static void sub_81B5958(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_DIVE);
}
-bool8 sub_81B5974(void)
+static bool8 SetUpFieldMove_Dive(void)
{
gFieldEffectArguments[1] = TrySetDiveWarp();
if (gFieldEffectArguments[1] != 0)
@@ -4374,11 +4901,11 @@ bool8 sub_81B5974(void)
return FALSE;
}
-void party_menu_icon_anim(struct Pokemon *mon, struct Struct203CEDC *ptr, u32 a)
+static void party_menu_icon_anim(struct Pokemon *mon, struct Struct203CEDC *ptr, u32 a)
{
u32 bit = 1;
u16 species2;
-
+
if (IsMultiBattle() == TRUE && gMain.inBattle)
bit = (gUnknown_08616020[a] ^ bit) ? 1 : 0;
species2 = GetMonData(mon, MON_DATA_SPECIES2);
@@ -4386,7 +4913,7 @@ void party_menu_icon_anim(struct Pokemon *mon, struct Struct203CEDC *ptr, u32 a)
sub_81B5B38(ptr->unk9, mon);
}
-void party_menu_link_mon_icon_anim(u16 species, u32 pid, struct Struct203CEDC *ptr, u8 priority, u32 bit)
+static void party_menu_link_mon_icon_anim(u16 species, u32 pid, struct Struct203CEDC *ptr, u8 priority, u32 bit)
{
if (species != SPECIES_NONE)
{
@@ -4395,35 +4922,35 @@ void party_menu_link_mon_icon_anim(u16 species, u32 pid, struct Struct203CEDC *p
}
}
-void sub_81B5A8C(u8 spriteId, u16 hp, u16 maxhp)
+static void sub_81B5A8C(u8 spriteId, u16 hp, u16 maxhp)
{
switch (GetHPBarLevel(hp, maxhp))
{
- case HP_BAR_FULL:
- sub_80D32C8(&gSprites[spriteId], 0);
- break;
- case HP_BAR_GREEN:
- sub_80D32C8(&gSprites[spriteId], 1);
- break;
- case HP_BAR_YELLOW:
- sub_80D32C8(&gSprites[spriteId], 2);
- break;
- case HP_BAR_RED:
- sub_80D32C8(&gSprites[spriteId], 3);
- break;
- default:
- sub_80D32C8(&gSprites[spriteId], 4);
- break;
+ case HP_BAR_FULL:
+ sub_80D32C8(&gSprites[spriteId], 0);
+ break;
+ case HP_BAR_GREEN:
+ sub_80D32C8(&gSprites[spriteId], 1);
+ break;
+ case HP_BAR_YELLOW:
+ sub_80D32C8(&gSprites[spriteId], 2);
+ break;
+ case HP_BAR_RED:
+ sub_80D32C8(&gSprites[spriteId], 3);
+ break;
+ default:
+ sub_80D32C8(&gSprites[spriteId], 4);
+ break;
}
}
-void sub_81B5B38(u8 spriteId, struct Pokemon *mon)
+static void sub_81B5B38(u8 spriteId, struct Pokemon *mon)
{
sub_81B5A8C(spriteId, GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP));
}
-void AnimateSelectedPartyIcon(u8 spriteId, u8 a)
-{
+static void AnimateSelectedPartyIcon(u8 spriteId, u8 a)
+{
gSprites[spriteId].data[0] = 0;
if (a == 0)
{
@@ -4447,10 +4974,10 @@ void AnimateSelectedPartyIcon(u8 spriteId, u8 a)
}
}
-void UpdatePartyMonIconFrameAndBounce(struct Sprite *sprite)
+static void UpdatePartyMonIconFrameAndBounce(struct Sprite *sprite)
{
u8 unk = UpdateMonIconFrame(sprite);
-
+
if (unk != 0)
{
if (unk & 1)
@@ -4460,12 +4987,12 @@ void UpdatePartyMonIconFrameAndBounce(struct Sprite *sprite)
}
}
-void UpdatePartyMonIconFrame(struct Sprite *sprite)
+static void UpdatePartyMonIconFrame(struct Sprite *sprite)
{
UpdateMonIconFrame(sprite);
}
-void party_menu_held_item_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+static void party_menu_held_item_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -4474,7 +5001,7 @@ void party_menu_held_item_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
}
}
-void party_menu_link_mon_held_item_object(u16 species, u16 item, struct Struct203CEDC *ptr)
+static void party_menu_link_mon_held_item_object(u16 species, u16 item, struct Struct203CEDC *ptr)
{
if (species != SPECIES_NONE)
{
@@ -4484,12 +5011,12 @@ void party_menu_link_mon_held_item_object(u16 species, u16 item, struct Struct20
}
}
-void sub_81B5C94(struct Pokemon *mon, struct Struct203CEDC *ptr)
+static void sub_81B5C94(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
sub_81B5CB0(GetMonData(mon, MON_DATA_HELD_ITEM), ptr);
}
-void sub_81B5CB0(u16 item, struct Struct203CEDC *ptr)
+static void sub_81B5CB0(u16 item, struct Struct203CEDC *ptr)
{
if (item == ITEM_NONE)
{
@@ -4515,33 +5042,33 @@ void sub_81B5D4C(u8 *a, u8 *b, u8 c)
{
u16 i;
u16 item;
-
+
switch (c)
{
- case 0:
- for (i = 0; i < a[0]; i++)
- {
- item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- if (item != ITEM_NONE)
- sub_81B5DF0(b[i], ItemIsMail(item));
- }
- break;
- case 1:
- for (i = 0; i < a[1]; i++)
- {
- item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
- if (item != ITEM_NONE)
- sub_81B5DF0(b[i + 6], ItemIsMail(item));
- }
- break;
+ case 0:
+ for (i = 0; i < a[0]; i++)
+ {
+ item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ if (item != ITEM_NONE)
+ sub_81B5DF0(b[i], ItemIsMail(item));
+ }
+ break;
+ case 1:
+ for (i = 0; i < a[1]; i++)
+ {
+ item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
+ if (item != ITEM_NONE)
+ sub_81B5DF0(b[i + 6], ItemIsMail(item));
+ }
+ break;
}
}
-void sub_81B5DF0(u8 spriteId, u8 isMail)
+static void sub_81B5DF0(u8 spriteId, u8 isMail)
{
u8 subpriority = gSprites[spriteId].subpriority;
u8 newSpriteId = CreateSprite(&gSpriteTemplate_8615EC0, 250, 170, subpriority - 1);
-
+
gSprites[newSpriteId].pos2.x = 4;
gSprites[newSpriteId].pos2.y = 10;
gSprites[newSpriteId].callback = sub_81B5E74;
@@ -4550,10 +5077,10 @@ void sub_81B5DF0(u8 spriteId, u8 isMail)
gSprites[newSpriteId].callback(&gSprites[newSpriteId]);
}
-void sub_81B5E74(struct Sprite *sprite)
+static void sub_81B5E74(struct Sprite *sprite)
{
u8 otherSpriteId = sprite->data[7];
-
+
if (gSprites[otherSpriteId].invisible)
{
sprite->invisible = TRUE;
@@ -4566,13 +5093,13 @@ void sub_81B5E74(struct Sprite *sprite)
}
}
-void party_menu_pokeball_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+static void party_menu_pokeball_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
ptr->unkB = CreateSprite(&gSpriteTemplate_8615F08, ptr->unk4[6], ptr->unk4[7], 8);
}
-void party_menu_link_mon_pokeball_object(u16 species, struct Struct203CEDC *ptr)
+static void party_menu_link_mon_pokeball_object(u16 species, struct Struct203CEDC *ptr)
{
if (species != SPECIES_NONE)
{
@@ -4581,25 +5108,25 @@ void party_menu_link_mon_pokeball_object(u16 species, struct Struct203CEDC *ptr)
}
}
-u8 sub_81B5F34(u8 x, u8 y)
+static u8 sub_81B5F34(u8 x, u8 y)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_8615F08, x, y, 8);
-
+
gSprites[spriteId].oam.priority = 2;
return spriteId;
}
-u8 sub_81B5F74(u8 x, u8 y)
+static u8 sub_81B5F74(u8 x, u8 y)
{
return CreateSprite(&gSpriteTemplate_8615F78, x, y, 8);
}
-void sub_81B5F98(u8 spriteId, u8 a)
+static void sub_81B5F98(u8 spriteId, u8 a)
{
StartSpriteAnim(&gSprites[spriteId], a);
}
-void sub_81B5FBC(u8 spriteId, u8 spriteId2, u8 a)
+static void sub_81B5FBC(u8 spriteId, u8 spriteId2, u8 a)
{
if (a == 0)
{
@@ -4617,14 +5144,14 @@ void sub_81B5FBC(u8 spriteId, u8 spriteId2, u8 a)
}
}
-void LoadPartyMenuPokeballGfx(void)
+static void LoadPartyMenuPokeballGfx(void)
{
- LoadCompressedObjectPic(&gUnknown_08615EF8);
- LoadCompressedObjectPic(&gUnknown_08615F70);
- LoadCompressedObjectPalette(&gUnknown_08615F00);
+ LoadCompressedSpriteSheet(&gUnknown_08615EF8);
+ LoadCompressedSpriteSheet(&gUnknown_08615F70);
+ LoadCompressedSpritePalette(&gUnknown_08615F00);
}
-void party_menu_status_condition_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+static void party_menu_status_condition_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
{
if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
{
@@ -4633,7 +5160,7 @@ void party_menu_status_condition_object(struct Pokemon *mon, struct Struct203CED
}
}
-void party_menu_link_mon_status_condition_object(u16 species, u8 status, struct Struct203CEDC *ptr)
+static void party_menu_link_mon_status_condition_object(u16 species, u8 status, struct Struct203CEDC *ptr)
{
if (species != SPECIES_NONE)
{
@@ -4643,30 +5170,30 @@ void party_menu_link_mon_status_condition_object(u16 species, u8 status, struct
}
}
-void party_menu_get_status_condition_and_update_object(struct Pokemon *mon, struct Struct203CEDC *ptr)
+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);
}
-void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr)
+static void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr)
{
switch (status)
{
- case AILMENT_NONE:
- case AILMENT_PKRS:
- gSprites[ptr->unkC].invisible = TRUE;
- break;
- default:
- StartSpriteAnim(&gSprites[ptr->unkC], status - 1);
- gSprites[ptr->unkC].invisible = FALSE;
- break;
+ case AILMENT_NONE:
+ case AILMENT_PKRS:
+ gSprites[ptr->unkC].invisible = TRUE;
+ break;
+ default:
+ StartSpriteAnim(&gSprites[ptr->unkC], status - 1);
+ gSprites[ptr->unkC].invisible = FALSE;
+ break;
}
}
-void LoadPartyMenuAilmentGfx(void)
+static void LoadPartyMenuAilmentGfx(void)
{
- LoadCompressedObjectPic(&gUnknown_08615FF8);
- LoadCompressedObjectPalette(&gUnknown_08616000);
+ LoadCompressedSpriteSheet(&gUnknown_08615FF8);
+ LoadCompressedSpritePalette(&gUnknown_08616000);
}
void sub_81B617C(void)
@@ -4675,9 +5202,9 @@ void sub_81B617C(void)
u8 doubleBattleStatus;
bool8 inBattle;
u8 i;
- u8 msgIDMaybe;
+ u8 msgIdMaybe;
register TaskFunc task asm("r0");
-
+
if (gMain.inBattle)
{
inBattle = TRUE;
@@ -4700,17 +5227,17 @@ void sub_81B617C(void)
}
}
task = sub_81B6280;
- msgIDMaybe = 0x7F;
+ msgIdMaybe = 0x7F;
}
else
{
- msgIDMaybe = (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_TM_HM) ? 4 : 5;
+ msgIdMaybe = (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_TM_HM) ? 4 : 5;
task = sub_81B1370;
}
- InitPartyMenu(inBattle, doubleBattleStatus, 3, 1, msgIDMaybe, task, callback);
+ InitPartyMenu(inBattle, doubleBattleStatus, 3, 1, msgIdMaybe, task, callback);
}
-void c2_815ABFC(void)
+static void c2_815ABFC(void)
{
if (InBattlePyramid() == FALSE)
GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL);
@@ -4718,7 +5245,7 @@ void c2_815ABFC(void)
sub_81C4F98(4, gPyramidBagCursorData.callback);
}
-void sub_81B6280(u8 taskId)
+static void sub_81B6280(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -4728,10 +5255,10 @@ void sub_81B6280(u8 taskId)
}
}
-bool8 IsHPRecoveryItem(u16 item)
+static bool8 IsHPRecoveryItem(u16 item)
{
const u8 *effect;
-
+
if (item == ITEM_ENIGMA_BERRY)
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
@@ -4741,87 +5268,87 @@ bool8 IsHPRecoveryItem(u16 item)
return FALSE;
}
-void GetMedicineItemEffectMessage(u16 item)
-{
- switch (GetItemEffectType(item) - 3)
- {
- case 0:
- StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison);
- break;
- case 1:
- StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2);
- break;
- case 2:
- StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed);
- break;
- case 3:
- StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut);
- break;
- case 4:
- StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis);
- break;
- case 5:
- StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion);
- break;
- case 6:
- StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation);
- break;
- case 8:
- StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy);
- break;
- case 10:
- StringCopy(gStringVar2, gText_HP3);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 9:
- StringCopy(gStringVar2, gText_Attack3);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 14:
- StringCopy(gStringVar2, gText_Defense3);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 13:
- StringCopy(gStringVar2, gText_Speed2);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 11:
- StringCopy(gStringVar2, gText_SpAtk3);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 12:
- StringCopy(gStringVar2, gText_SpDef3);
- StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
- break;
- case 16:
- case 17:
- StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased);
- break;
- case 18:
- StringExpandPlaceholders(gStringVar4, gText_PPWasRestored);
- break;
- default:
- StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect);
- break;
- }
-}
-
-bool8 UsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item)
+static void GetMedicineItemEffectMessage(u16 item)
+{
+ switch (GetItemEffectType(item))
+ {
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfPoison);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnWokeUp2);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBurnHealed);
+ break;
+ case 6:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnThawedOut);
+ break;
+ case 7:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnCuredOfParalysis);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnSnappedOutOfConfusion);
+ break;
+ case 9:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnGotOverInfatuation);
+ break;
+ case 11:
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBecameHealthy);
+ break;
+ case 13:
+ StringCopy(gStringVar2, gText_HP3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 12:
+ StringCopy(gStringVar2, gText_Attack3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 17:
+ StringCopy(gStringVar2, gText_Defense3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 16:
+ StringCopy(gStringVar2, gText_Speed2);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 14:
+ StringCopy(gStringVar2, gText_SpAtk3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 15:
+ StringCopy(gStringVar2, gText_SpDef3);
+ StringExpandPlaceholders(gStringVar4, gText_PkmnBaseVar2StatIncreased);
+ break;
+ case 19:
+ case 20:
+ StringExpandPlaceholders(gStringVar4, gText_MovesPPIncreased);
+ break;
+ case 21:
+ StringExpandPlaceholders(gStringVar4, gText_PPWasRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gText_WontHaveEffect);
+ break;
+ }
+}
+
+static bool8 UsingHPEVItemOnShedinja(struct Pokemon *mon, u16 item)
{
if (GetItemEffectType(item) == 13 && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA)
return FALSE;
return TRUE;
}
-bool8 IsBlueYellowRedFlute(u16 item)
+static bool8 IsBlueYellowRedFlute(u16 item)
{
if (item == ITEM_BLUE_FLUTE || item == ITEM_RED_FLUTE || item == ITEM_YELLOW_FLUTE)
return TRUE;
return FALSE;
}
-bool8 ExecuteTableBasedItemEffect__(u8 partyMonIndex, u16 item, u8 monMoveIndex)
-{
+static bool8 ExecuteTableBasedItemEffect__(u8 partyMonIndex, u16 item, u8 monMoveIndex)
+{
if (gMain.inBattle)
return ExecuteTableBasedItemEffect(&gPlayerParty[partyMonIndex], item, sub_81B8F38(partyMonIndex), monMoveIndex);
else
@@ -4834,7 +5361,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item = gSpecialVar_ItemId;
bool8 canHeal;
-
+
if (UsingHPEVItemOnShedinja(mon, item))
{
canHeal = IsHPRecoveryItem(item);
@@ -4891,7 +5418,7 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
}
}
-void sub_81B672C(u8 taskId)
+static void sub_81B672C(u8 taskId)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
@@ -4901,7 +5428,7 @@ void sub_81B672C(u8 taskId)
gTasks[taskId].func = sub_81B6794;
}
-void sub_81B6794(u8 taskId)
+static void sub_81B6794(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -4921,7 +5448,7 @@ void sub_81B67C8(u8 taskId, TaskFunc task)
bool8 cannotUseEffect = ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, item, 0);
u16 newFriendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
u16 newRelevantEV = sub_81B691C(mon, effectType);
-
+
if (cannotUseEffect || (friendship == newFriendship && relevantEV == newRelevantEV))
{
gUnknown_0203CEE8 = 0;
@@ -4954,61 +5481,61 @@ void sub_81B67C8(u8 taskId, TaskFunc task)
}
}
-u16 sub_81B691C(struct Pokemon *mon, u8 effectType)
+static u16 sub_81B691C(struct Pokemon *mon, u8 effectType)
{
switch (effectType)
{
- case 13:
- if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_SHEDINJA)
- return GetMonData(mon, MON_DATA_HP_EV);
- break;
- case 12:
- return GetMonData(mon, MON_DATA_ATK_EV);
- case 17:
- return GetMonData(mon, MON_DATA_DEF_EV);
- case 16:
- return GetMonData(mon, MON_DATA_SPEED_EV);
- case 14:
- return GetMonData(mon, MON_DATA_SPATK_EV);
- case 15:
- return GetMonData(mon, MON_DATA_SPDEF_EV);
+ case 13:
+ if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_SHEDINJA)
+ return GetMonData(mon, MON_DATA_HP_EV);
+ break;
+ case 12:
+ return GetMonData(mon, MON_DATA_ATK_EV);
+ case 17:
+ return GetMonData(mon, MON_DATA_DEF_EV);
+ case 16:
+ return GetMonData(mon, MON_DATA_SPEED_EV);
+ case 14:
+ return GetMonData(mon, MON_DATA_SPATK_EV);
+ case 15:
+ return GetMonData(mon, MON_DATA_SPDEF_EV);
}
return 0;
}
-void option_menu_get_string(u8 effectType, u8 *dest)
+static void option_menu_get_string(u8 effectType, u8 *dest)
{
switch (effectType)
{
- case 13:
- StringCopy(dest, gText_HP3);
- break;
- case 12:
- StringCopy(dest, gText_Attack3);
- break;
- case 17:
- StringCopy(dest, gText_Defense3);
- break;
- case 16:
- StringCopy(dest, gText_Speed2);
- break;
- case 14:
- StringCopy(dest, gText_SpAtk3);
- break;
- case 15:
- StringCopy(dest, gText_SpDef3);
- break;
- }
-}
-
-void sub_81B6A10(u8 slot)
+ case 13:
+ StringCopy(dest, gText_HP3);
+ break;
+ case 12:
+ StringCopy(dest, gText_Attack3);
+ break;
+ case 17:
+ StringCopy(dest, gText_Defense3);
+ break;
+ case 16:
+ StringCopy(dest, gText_Speed2);
+ break;
+ case 14:
+ StringCopy(dest, gText_SpAtk3);
+ break;
+ case 15:
+ StringCopy(dest, gText_SpDef3);
+ break;
+ }
+}
+
+static void sub_81B6A10(u8 slot)
{
u8 i;
u8 moveCount = 0;
u8 fontId = 1;
u8 windowId = sub_81B31B0(3);
u16 move;
-
+
for (i = 0; i < MAX_MON_MOVES; i++)
{
move = GetMonData(&gPlayerParty[slot], MON_DATA_MOVE1 + i);
@@ -5020,10 +5547,10 @@ void sub_81B6A10(u8 slot)
schedule_bg_copy_tilemap_to_vram(2);
}
-void ether_effect_related_3(u8 taskId)
+static void ether_effect_related_3(u8 taskId)
{
s8 input = Menu_ProcessInput();
-
+
if (input != MENU_NOTHING_CHOSEN)
{
if (input == MENU_B_PRESSED)
@@ -5039,11 +5566,11 @@ void ether_effect_related_3(u8 taskId)
}
}
-void dp05_ether(u8 taskId, TaskFunc unused)
+void dp05_ether(u8 taskId, TaskFunc task)
{
const u8 *effect;
u16 item = gSpecialVar_ItemId;
-
+
if (item == ITEM_ENIGMA_BERRY)
effect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
else
@@ -5062,14 +5589,14 @@ void dp05_ether(u8 taskId, TaskFunc unused)
}
}
-void ether_effect_related_2(u8 taskId)
+static void ether_effect_related_2(u8 taskId)
{
sub_81B302C(&gUnknown_0203CEC4->unkC[0]);
- gUnknown_0203CEC8.unkE = GetMenuCursorPos();
+ gUnknown_0203CEC8.unkE = Menu_GetCursorPos();
ether_effect_related(taskId);
}
-void sub_81B6BB4(u8 taskId)
+static void sub_81B6BB4(u8 taskId)
{
gTasks[taskId].func = sub_81B1370;
gUnknown_0203CEC4->exitCallback = NULL;
@@ -5077,14 +5604,14 @@ void sub_81B6BB4(u8 taskId)
display_pokemon_menu_message(5);
}
-void ether_effect_related(u8 taskId)
+static void ether_effect_related(u8 taskId)
{
u16 move = MOVE_NONE;
s16 *moveslot = &gUnknown_0203CEC8.unkE;
u16 item = gSpecialVar_ItemId;
struct Struct203CEC8 *ptr = &gUnknown_0203CEC8;
struct Pokemon *mon;
-
+
if (ExecuteTableBasedItemEffect__(ptr->unk9, item, *moveslot))
{
gUnknown_0203CEE8 = 0;
@@ -5108,7 +5635,7 @@ void ether_effect_related(u8 taskId)
}
}
-void dp05_pp_up(u8 taskId, TaskFunc unused)
+void dp05_pp_up(u8 taskId, TaskFunc task)
{
PlaySE(SE_SELECT);
display_pokemon_menu_message(23);
@@ -5119,25 +5646,25 @@ void dp05_pp_up(u8 taskId, TaskFunc unused)
u16 ItemIdToBattleMoveId(u16 item)
{
u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH;
- return gUnknown_08616040[tmNumber];
+ return gTMHMMoves[tmNumber];
}
-bool8 sub_81B6D14(u16 move)
+bool8 IsMoveHm(u16 move)
{
u8 i;
-
+
for (i = 0; i < NUM_HIDDEN_MACHINES; i++)
{
- if (gUnknown_08616040[i + NUM_TECHNICAL_MACHINES] == move)
+ if (gTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move)
return TRUE;
}
return FALSE;
}
-bool8 pokemon_has_move(struct Pokemon *mon, u16 move)
+bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
{
u8 i;
-
+
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetMonData(mon, MON_DATA_MOVE1 + i) == move)
@@ -5146,14 +5673,14 @@ bool8 pokemon_has_move(struct Pokemon *mon, u16 move)
return FALSE;
}
-void sub_81B6D74(const u8 *str)
+static void sub_81B6D74(const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);
sub_81B1B5C(gStringVar4, 1);
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B6D98(u8 taskId, const u8 *str)
+static void sub_81B6D98(u8 taskId, const u8 *str)
{
sub_81B6D74(str);
gTasks[taskId].func = sub_81B6794;
@@ -5161,12 +5688,12 @@ void sub_81B6D98(u8 taskId, const u8 *str)
// move[1] doesn't use constants cause I don't know if it's actually a move ID storage
-void sub_81B6DC4(u8 taskId, TaskFunc unused)
+void sub_81B6DC4(u8 taskId, TaskFunc task)
{
struct Pokemon *mon;
s16 *move;
u16 item;
-
+
PlaySE(SE_SELECT);
mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
move = &gUnknown_0203CEC8.unkE;
@@ -5175,15 +5702,17 @@ void sub_81B6DC4(u8 taskId, TaskFunc unused)
move[0] = ItemIdToBattleMoveId(item);
StringCopy(gStringVar2, gMoveNames[move[0]]);
move[1] = 0;
- switch (CanPartyPokemonLearnTMTutor(mon, item, 0))
+
+ switch (CanMonLearnTMTutor(mon, item, 0))
{
- case CANNOT_LEARN_MOVE:
- sub_81B6D98(taskId, gText_PkmnCantLearnMove);
- return;
- case ALREADY_KNOWS_MOVE:
- sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
- return;
+ case CANNOT_LEARN_MOVE:
+ sub_81B6D98(taskId, gText_PkmnCantLearnMove);
+ return;
+ case ALREADY_KNOWS_MOVE:
+ sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
+ return;
}
+
if (GiveMoveToMon(mon, move[0]) != 0xFFFF)
{
gTasks[taskId].func = sub_81B6EB4;
@@ -5195,12 +5724,12 @@ void sub_81B6DC4(u8 taskId, TaskFunc unused)
}
}
-void sub_81B6EB4(u8 taskId)
+static void sub_81B6EB4(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
s16 *move = &gUnknown_0203CEC8.unkE;
u16 item = gSpecialVar_ItemId;
-
+
if (move[1] == 0)
{
AdjustFriendship(mon, 4);
@@ -5215,7 +5744,7 @@ void sub_81B6EB4(u8 taskId)
gTasks[taskId].func = sub_81B6F60;
}
-void sub_81B6F60(u8 taskId)
+static void sub_81B6F60(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -5224,14 +5753,14 @@ void sub_81B6F60(u8 taskId)
}
}
-void sub_81B6F98(u8 taskId)
+static void sub_81B6F98(u8 taskId)
{
if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
{
if (gUnknown_0203CEC8.unk10 == 1)
sub_81B77AC(taskId);
else
- {
+ {
if (gUnknown_0203CEC8.unk10 == 2)
gSpecialVar_Result = TRUE;
sub_81B12C0(taskId);
@@ -5239,7 +5768,7 @@ void sub_81B6F98(u8 taskId)
}
}
-void sub_81B6FF4(u8 taskId)
+static void sub_81B6FF4(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -5248,23 +5777,23 @@ void sub_81B6FF4(u8 taskId)
}
}
-void sub_81B7028(u8 taskId)
+static void sub_81B7028(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- sub_81B1B5C(gText_WhichMoveToForget, 1);
- gTasks[taskId].func = sub_81B7088;
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- sub_81B7230(taskId);
- break;
+ case 0:
+ sub_81B1B5C(gText_WhichMoveToForget, 1);
+ gTasks[taskId].func = sub_81B7088;
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ sub_81B7230(taskId);
+ break;
}
}
-void sub_81B7088(u8 taskId)
+static void sub_81B7088(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -5273,17 +5802,17 @@ void sub_81B7088(u8 taskId)
}
}
-void sub_81B70B8(void)
+static void sub_81B70B8(void)
{
ShowSelectMovePokemonSummaryScreen(gPlayerParty, gUnknown_0203CEC8.unk9, gPlayerPartyCount - 1, sub_81B70F0, gUnknown_0203CEC8.unkE);
}
-void sub_81B70F0(void)
+static void sub_81B70F0(void)
{
InitPartyMenu(0, 0, 0, 1, 0x7F, sub_81B711C, gUnknown_0203CEC8.exitCallback);
}
-void sub_81B711C(u8 taskId)
+static void sub_81B711C(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -5294,22 +5823,22 @@ void sub_81B711C(u8 taskId)
}
}
-void sub_81B7154(u8 taskId)
+static void sub_81B7154(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 move = GetMonData(mon, MON_DATA_MOVE1 + sub_81C1B94());
-
+
GetMonNickname(mon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[move]);
sub_81B6D74(gText_12PoofForgotMove);
gTasks[taskId].func = sub_81B71D4;
}
-void sub_81B71D4(u8 taskId)
+static void sub_81B71D4(u8 taskId)
{
struct Pokemon *mon;
u16 move;
-
+
if (sub_81B1BD4() != TRUE)
{
mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
@@ -5320,7 +5849,7 @@ void sub_81B71D4(u8 taskId)
}
}
-void sub_81B7230(u8 taskId)
+static void sub_81B7230(u8 taskId)
{
StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
StringExpandPlaceholders(gStringVar4, gText_StopLearningMove2);
@@ -5329,7 +5858,7 @@ void sub_81B7230(u8 taskId)
gTasks[taskId].func = sub_81B7294;
}
-void sub_81B7294(u8 taskId)
+static void sub_81B7294(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -5338,40 +5867,40 @@ void sub_81B7294(u8 taskId)
}
}
-void sub_81B72C8(u8 taskId)
+static void sub_81B72C8(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
-
+
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- GetMonNickname(mon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
- StringExpandPlaceholders(gStringVar4, gText_MoveNotLearned);
- sub_81B1B5C(gStringVar4, 1);
- if (gUnknown_0203CEC8.unk10 == 1)
- {
- gTasks[taskId].func = sub_81B73E4;
- }
- else
- {
- if (gUnknown_0203CEC8.unk10 == 2)
- gSpecialVar_Result = FALSE;
- gTasks[taskId].func = sub_81B6794;
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
- GetMonNickname(mon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
- sub_81B6D74(gText_PkmnNeedsToReplaceMove);
- gTasks[taskId].func = sub_81B6FF4;
- break;
+ case 0:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ StringExpandPlaceholders(gStringVar4, gText_MoveNotLearned);
+ sub_81B1B5C(gStringVar4, 1);
+ if (gUnknown_0203CEC8.unk10 == 1)
+ {
+ gTasks[taskId].func = sub_81B73E4;
+ }
+ else
+ {
+ if (gUnknown_0203CEC8.unk10 == 2)
+ gSpecialVar_Result = FALSE;
+ gTasks[taskId].func = sub_81B6794;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
+ sub_81B6D74(gText_PkmnNeedsToReplaceMove);
+ gTasks[taskId].func = sub_81B6FF4;
+ break;
}
}
-void sub_81B73E4(u8 taskId)
+static void sub_81B73E4(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
sub_81B77AC(taskId);
@@ -5384,7 +5913,7 @@ void dp05_rare_candy(u8 taskId, TaskFunc task)
s16 *arrayPtr = ptr->data;
u16 *itemPtr = &gSpecialVar_ItemId;
bool8 cannotUseEffect;
-
+
if (GetMonData(mon, MON_DATA_LEVEL) != MAX_LEVEL)
{
sub_81B79A0(mon, arrayPtr);
@@ -5418,7 +5947,7 @@ void dp05_rare_candy(u8 taskId, TaskFunc task)
}
}
-void sub_81B754C(u8 slot, struct Pokemon *mon)
+static void sub_81B754C(u8 slot, struct Pokemon *mon)
{
party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[slot]);
if (gSprites[gUnknown_0203CEDC[slot].unkC].invisible)
@@ -5431,7 +5960,7 @@ void sub_81B754C(u8 slot, struct Pokemon *mon)
schedule_bg_copy_tilemap_to_vram(0);
}
-void sub_81B75D4(u8 taskId)
+static void sub_81B75D4(u8 taskId)
{
if (WaitFanfare(FALSE) && sub_81B1BD4() != TRUE && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
{
@@ -5441,7 +5970,7 @@ void sub_81B75D4(u8 taskId)
}
}
-void sub_81B7634(u8 taskId)
+static void sub_81B7634(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
@@ -5451,29 +5980,29 @@ void sub_81B7634(u8 taskId)
}
}
-void sub_81B767C(u8 taskId)
+static void sub_81B767C(u8 taskId)
{
s16 *arrayPtr = gUnknown_0203CEC4->data;
-
+
arrayPtr[12] = sub_81B3364();
sub_81D3640(arrayPtr[12], arrayPtr, &arrayPtr[6], 1, 2, 3);
CopyWindowToVram(arrayPtr[12], 2);
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B76C8(u8 taskIdUnused)
+static void sub_81B76C8(u8 taskId)
{
s16 *arrayPtr = gUnknown_0203CEC4->data;
-
+
sub_81D3784(arrayPtr[12], &arrayPtr[6], 1, 2, 3);
CopyWindowToVram(arrayPtr[12], 2);
schedule_bg_copy_tilemap_to_vram(2);
}
-void sub_81B7704(u8 taskId)
+static void sub_81B7704(u8 taskId)
{
u16 result;
-
+
if (WaitFanfare(0) && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
{
sub_81B3394();
@@ -5481,28 +6010,6 @@ void sub_81B7704(u8 taskId)
gUnknown_0203CEC8.unk10 = 1;
switch (result)
{
- case 0:
- sub_81B7810(taskId);
- break;
- case 0xFFFF:
- sub_81B787C(taskId);
- break;
- case 0xFFFE:
- gTasks[taskId].func = sub_81B77AC;
- break;
- default:
- sub_81B7910(taskId, result);
- break;
- }
- }
-}
-
-void sub_81B77AC(u8 taskId)
-{
- u16 result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 0);
-
- switch (result)
- {
case 0:
sub_81B7810(taskId);
break;
@@ -5510,18 +6017,40 @@ void sub_81B77AC(u8 taskId)
sub_81B787C(taskId);
break;
case 0xFFFE:
- return;
+ gTasks[taskId].func = sub_81B77AC;
+ break;
default:
sub_81B7910(taskId, result);
break;
+ }
}
}
-void sub_81B7810(u8 taskId)
+static void sub_81B77AC(u8 taskId)
+{
+ u16 result = MonTryLearningNewMove(&gPlayerParty[gUnknown_0203CEC8.unk9], 0);
+
+ switch (result)
+ {
+ case 0:
+ sub_81B7810(taskId);
+ break;
+ case 0xFFFF:
+ sub_81B787C(taskId);
+ break;
+ case 0xFFFE:
+ return;
+ default:
+ sub_81B7910(taskId, result);
+ break;
+ }
+}
+
+static void sub_81B7810(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 targetSpecies = GetEvolutionTargetSpecies(mon, 0, 0);
-
+
if (targetSpecies != SPECIES_NONE)
{
FreePartyPointers();
@@ -5535,7 +6064,7 @@ void sub_81B7810(u8 taskId)
}
}
-void sub_81B787C(u8 taskId)
+static void sub_81B787C(u8 taskId)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
@@ -5546,7 +6075,7 @@ void sub_81B787C(u8 taskId)
gTasks[taskId].func = sub_81B6FF4;
}
-void sub_81B7910(u8 taskId, u16 move)
+static void sub_81B7910(u8 taskId, u16 move)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
StringCopy(gStringVar2, gMoveNames[move]);
@@ -5557,7 +6086,7 @@ void sub_81B7910(u8 taskId, u16 move)
gTasks[taskId].func = sub_81B6F60;
}
-void sub_81B79A0(struct Pokemon *mon, s16 *data)
+static void sub_81B79A0(struct Pokemon *mon, s16 *data)
{
data[0] = GetMonData(mon, MON_DATA_MAX_HP);
data[1] = GetMonData(mon, MON_DATA_ATK);
@@ -5567,7 +6096,7 @@ void sub_81B79A0(struct Pokemon *mon, s16 *data)
data[3] = GetMonData(mon, MON_DATA_SPEED);
}
-void sub_81B79E8(u8 taskId, TaskFunc unused)
+void sub_81B79E8(u8 taskId, TaskFunc task)
{
gUnknown_0203CEC4->data[0] = 0;
gUnknown_0203CEC4->data[1] = 0;
@@ -5575,26 +6104,24 @@ void sub_81B79E8(u8 taskId, TaskFunc unused)
sub_81B7A28(taskId);
}
-#ifdef NONMATCHING
-void sub_81B7A28(u8 taskId)
+static void sub_81B7A28(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 hp;
-
- if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE)
+
+ if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE)
{
- hp = GetMonData(mon, MON_DATA_HP);
- if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
- {
- gTasks[taskId].func = task_sacred_ash_party_loop;
- return;
- }
+ gTasks[taskId].func = task_sacred_ash_party_loop;
+ return;
}
- else
+
+ hp = GetMonData(mon, MON_DATA_HP);
+ if (ExecuteTableBasedItemEffect__(gUnknown_0203CEC8.unk9, gSpecialVar_ItemId, 0))
{
gTasks[taskId].func = task_sacred_ash_party_loop;
return;
}
+
PlaySE(SE_KAIFUKU);
party_menu_get_status_condition_and_update_object(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.unk9]);
if (gSprites[gUnknown_0203CEDC[gUnknown_0203CEC8.unk9].unkC].invisible)
@@ -5606,133 +6133,8 @@ void sub_81B7A28(u8 taskId)
gUnknown_0203CEC4->data[0] = 1;
gUnknown_0203CEC4->data[1] = 1;
}
-#else
-NAKED
-void sub_81B7A28(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x4\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- mov r8, r4\n\
- ldr r6, =gUnknown_0203CEC8\n\
- movs r1, 0x9\n\
- ldrsb r1, [r6, r1]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gPlayerParty\n\
- adds r5, r1, r0\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _081B7A6E\n\
- adds r0, r5, 0\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- ldrb r0, [r6, 0x9]\n\
- ldr r1, =gSpecialVar_ItemId\n\
- ldrh r1, [r1]\n\
- movs r2, 0\n\
- bl ExecuteTableBasedItemEffect__\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _081B7A94\n\
-_081B7A6E:\n\
- ldr r0, =gTasks\n\
- lsls r1, r4, 2\n\
- adds r1, r4\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, =task_sacred_ash_party_loop\n\
- str r0, [r1]\n\
- b _081B7B2A\n\
- .pool\n\
-_081B7A94:\n\
- movs r0, 0x1\n\
- bl PlaySE\n\
- ldr r4, =gUnknown_0203CEDC\n\
- movs r0, 0x9\n\
- ldrsb r0, [r6, r0]\n\
- lsls r0, 4\n\
- ldr r1, [r4]\n\
- adds r1, r0\n\
- adds r0, r5, 0\n\
- bl party_menu_get_status_condition_and_update_object\n\
- ldr r2, =gSprites\n\
- movs r0, 0x9\n\
- ldrsb r0, [r6, r0]\n\
- ldr r1, [r4]\n\
- lsls r0, 4\n\
- adds r3, r0, r1\n\
- ldrb r1, [r3, 0xC]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- adds r0, 0x3E\n\
- ldrb r0, [r0]\n\
- lsls r0, 29\n\
- cmp r0, 0\n\
- bge _081B7AD6\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- movs r2, 0x1\n\
- bl DisplayPartyPokemonLevelCheck\n\
-_081B7AD6:\n\
- ldr r4, =gUnknown_0203CEC4\n\
- ldr r0, [r4]\n\
- movs r1, 0x87\n\
- lsls r1, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- movs r1, 0\n\
- bl sub_81B0FCC\n\
- ldrb r0, [r6, 0x9]\n\
- movs r1, 0x1\n\
- bl sub_81B0FCC\n\
- adds r0, r5, 0\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- adds r3, r0, 0\n\
- subs r3, r7\n\
- lsls r3, 16\n\
- asrs r3, 16\n\
- ldrb r1, [r6, 0x9]\n\
- ldr r0, =sub_81B7C10\n\
- str r0, [sp]\n\
- mov r0, r8\n\
- movs r2, 0x1\n\
- bl sub_81B1F18\n\
- mov r0, r8\n\
- movs r1, 0\n\
- adds r2, r7, 0\n\
- bl sub_81B1FA8\n\
- ldr r0, [r4]\n\
- movs r2, 0x86\n\
- lsls r2, 2\n\
- adds r1, r0, r2\n\
- movs r2, 0x1\n\
- strh r2, [r1]\n\
- ldr r1, =0x0000021a\n\
- adds r0, r1\n\
- strh r2, [r0]\n\
-_081B7B2A:\n\
- add sp, 0x4\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
-void task_sacred_ash_party_loop(u8 taskId)
+static void task_sacred_ash_party_loop(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -5764,7 +6166,7 @@ void task_sacred_ash_party_loop(u8 taskId)
}
}
-void sub_81B7C10(u8 taskId)
+static void sub_81B7C10(u8 taskId)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unk9], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
@@ -5941,34 +6343,34 @@ u8 GetItemEffectType(u16 item)
#endif
}
-void sub_81B7E4C(u8 taskId)
+static void sub_81B7E4C(u8 taskId)
{
struct Pokemon *mon;
s16 *move;
-
+
if (!gPaletteFade.active)
{
mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
move = &gUnknown_0203CEC8.unkE;
GetMonNickname(mon, gStringVar1);
- gUnknown_0203CEC8.unkE = sub_81B2360(gSpecialVar_0x8005);
+ gUnknown_0203CEC8.unkE = GetTutorMove(gSpecialVar_0x8005);
StringCopy(gStringVar2, gMoveNames[gUnknown_0203CEC8.unkE]);
move[1] = 2;
- switch (CanPartyPokemonLearnTMTutor(mon, 0, gSpecialVar_0x8005))
+ switch (CanMonLearnTMTutor(mon, 0, gSpecialVar_0x8005))
{
- case CANNOT_LEARN_MOVE:
- sub_81B6D98(taskId, gText_PkmnCantLearnMove);
- return;
- case ALREADY_KNOWS_MOVE:
- sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
+ case CANNOT_LEARN_MOVE:
+ sub_81B6D98(taskId, gText_PkmnCantLearnMove);
+ return;
+ case ALREADY_KNOWS_MOVE:
+ sub_81B6D98(taskId, gText_PkmnAlreadyKnows);
+ return;
+ default:
+ if (GiveMoveToMon(mon, gUnknown_0203CEC8.unkE) != 0xFFFF)
+ {
+ sub_81B6EB4(taskId);
return;
- default:
- if (GiveMoveToMon(mon, gUnknown_0203CEC8.unkE) != 0xFFFF)
- {
- sub_81B6EB4(taskId);
- return;
- }
- break;
+ }
+ break;
}
sub_81B6D74(gText_PkmnNeedsToReplaceMove);
gTasks[taskId].func = sub_81B6FF4;
@@ -5987,7 +6389,7 @@ void sub_81B7F60(void)
gUnknown_0203CEC8.unkC = gSpecialVar_ItemId;
}
-void sub_81B7FAC(u8 taskId)
+static void sub_81B7FAC(u8 taskId)
{
gUnknown_0203CEFC = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_HELD_ITEM);
if (gUnknown_0203CEFC == ITEM_NONE)
@@ -6005,7 +6407,7 @@ void sub_81B7FAC(u8 taskId)
}
}
-void sub_81B8044(u8 taskId)
+static void sub_81B8044(u8 taskId)
{
if (ItemIsMail(gUnknown_0203CEC8.unkC))
{
@@ -6019,10 +6421,10 @@ void sub_81B8044(u8 taskId)
}
}
-void sub_81B8088(u8 taskId)
+static void sub_81B8088(u8 taskId)
{
u16 item;
-
+
if (!gPaletteFade.active)
{
item = gUnknown_0203CEC8.unkC;
@@ -6033,10 +6435,10 @@ void sub_81B8088(u8 taskId)
}
}
-void sub_81B8104(u8 taskId)
+static void sub_81B8104(u8 taskId)
{
s8 slot = gUnknown_0203CEC8.unk9;
-
+
if (sub_81B1BD4() != TRUE)
{
sub_81B5C94(&gPlayerParty[slot], &gUnknown_0203CEDC[slot]);
@@ -6044,20 +6446,20 @@ void sub_81B8104(u8 taskId)
}
}
-void sub_81B814C(void)
+static void sub_81B814C(void)
{
u8 mail;
-
+
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);
}
-void sub_81B81A8(void)
+static void sub_81B81A8(void)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
u16 item = GetMonData(mon, MON_DATA_HELD_ITEM);
-
+
if (gSpecialVar_Result == FALSE)
{
TakeMailFromMon(mon);
@@ -6072,7 +6474,7 @@ void sub_81B81A8(void)
}
}
-void sub_81B8230(u8 taskId)
+static void sub_81B8230(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -6084,7 +6486,7 @@ void sub_81B8230(u8 taskId)
}
}
-void sub_81B82A0(u8 taskId)
+static void sub_81B82A0(u8 taskId)
{
if (sub_81B1BD4() != TRUE)
{
@@ -6093,50 +6495,50 @@ void sub_81B82A0(u8 taskId)
}
}
-void sub_81B82D4(u8 taskId)
+static void sub_81B82D4(u8 taskId)
{
u16 item;
-
+
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
- item = gUnknown_0203CEC8.unkC;
- sub_81B83F0(item);
- if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
- {
- sub_81B841C(item);
- pokemon_item_not_removed(gUnknown_0203CEFC);
- sub_81B1B5C(gStringVar4, 0);
- gTasks[taskId].func = sub_81B8104;
- }
- else if (ItemIsMail(item))
- {
- gUnknown_0203CEC4->exitCallback = sub_81B814C;
- sub_81B12C0(taskId);
- }
- else
- {
- sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
- sub_81B1D68(item, gUnknown_0203CEFC, 1);
- gTasks[taskId].func = sub_81B8104;
- }
- break;
- case MENU_B_PRESSED:
- PlaySE(SE_SELECT);
- case 1:
+ case 0:
+ item = gUnknown_0203CEC8.unkC;
+ sub_81B83F0(item);
+ if (AddBagItem(gUnknown_0203CEFC, 1) == FALSE)
+ {
+ sub_81B841C(item);
+ pokemon_item_not_removed(gUnknown_0203CEFC);
+ sub_81B1B5C(gStringVar4, 0);
gTasks[taskId].func = sub_81B8104;
- break;
+ }
+ else if (ItemIsMail(item))
+ {
+ gUnknown_0203CEC4->exitCallback = sub_81B814C;
+ sub_81B12C0(taskId);
+ }
+ else
+ {
+ sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], item);
+ sub_81B1D68(item, gUnknown_0203CEFC, 1);
+ gTasks[taskId].func = sub_81B8104;
+ }
+ break;
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ case 1:
+ gTasks[taskId].func = sub_81B8104;
+ break;
}
}
-void sub_81B83B8(u8 taskId)
+static void sub_81B83B8(u8 taskId)
{
sub_81B1B5C(gText_RemoveMailBeforeItem, 1);
schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_81B8104;
}
-void sub_81B83F0(u16 item)
+static void sub_81B83F0(u16 item)
{
if (gUnknown_0203CEC8.unkB == 6)
RemovePCItem(item, 1);
@@ -6144,7 +6546,7 @@ void sub_81B83F0(u16 item)
RemoveBagItem(item, 1);
}
-bool8 sub_81B841C(u16 item)
+static bool8 sub_81B841C(u16 item)
{
if (gUnknown_0203CEC8.unkB == 5)
return AddBagItem(item, 1);
@@ -6157,11 +6559,11 @@ void sub_81B8448(void)
InitPartyMenu(0, 0, 7, 0, 6, sub_81B1370, Mailbox_ReturnToMailListAfterDeposit);
}
-void sub_81B8474(u8 taskId)
+static void sub_81B8474(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gUnknown_0203CEC8.unk9];
struct MailStruct *mail;
-
+
gUnknown_0203CEE8 = 0;
mail = &gSaveBlock1Ptr->mail[playerPCItemPageInfo.itemsAbove + 6 + playerPCItemPageInfo.cursorPos];
if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
@@ -6187,10 +6589,10 @@ void sub_81B8518(u8 unused)
void sub_81B8558(void)
{
- memset(gSelectedOrderFromParty, 0, ARRAY_COUNT(gSelectedOrderFromParty));
+ memset(gSelectedOrderFromParty, 0, sizeof(gSelectedOrderFromParty));
}
-u8 sub_81B856C(s8 slot)
+static u8 sub_81B856C(s8 slot)
{
if (GetBattleEntryEligibility(&gPlayerParty[slot]) == FALSE)
return 2;
@@ -6199,215 +6601,81 @@ u8 sub_81B856C(s8 slot)
return 0;
}
-bool8 GetBattleEntryEligibility(struct Pokemon *mon)
+static bool8 GetBattleEntryEligibility(struct Pokemon *mon)
{
u16 i = 0;
u16 species;
-
- if (GetMonData(mon, MON_DATA_IS_EGG) || GetMonData(mon, MON_DATA_LEVEL) > sub_81B8888() ||
- (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY) &&
- gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY) &&
- GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE))
+
+ if (GetMonData(mon, MON_DATA_IS_EGG)
+ || GetMonData(mon, MON_DATA_LEVEL) > sub_81B8888()
+ || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY)
+ && GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE))
+ {
return FALSE;
+ }
+
switch (VarGet(VAR_FRONTIER_FACILITY)) // oddly the specific cases are beyond 6, turns out case 9 is apparently related to link battles
{
- case 9:
- if (GetMonData(mon, MON_DATA_HP) != 0)
- return TRUE;
- return FALSE;
- case 8:
- return TRUE;
- default:
- species = GetMonData(mon, MON_DATA_SPECIES);
- for (; gFrontierBannedSpecies[i] != 0xFFFF; i++)
- {
- if (gFrontierBannedSpecies[i] == species)
- return FALSE;
- }
+ case 9:
+ if (GetMonData(mon, MON_DATA_HP) != 0)
return TRUE;
+ return FALSE;
+ case 8:
+ return TRUE;
+ default:
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ for (; gFrontierBannedSpecies[i] != 0xFFFF; i++)
+ {
+ if (gFrontierBannedSpecies[i] == species)
+ return FALSE;
+ }
+ return TRUE;
}
}
-#ifdef NONMATCHING
-u8 sub_81B865C(void)
+static u8 sub_81B865C(void)
{
- u8 unk = sub_81B885C();
u8 unk2;
u8 i, j;
- u16 species;
- u16 item;
- u8 facilityNum;
-
- if (gSelectedOrderFromParty[unk - 1] == 0)
+ u8 facility;
+ struct Pokemon *party = gPlayerParty;
+ u8 unk = sub_81B885C();
+ u8 *order = gSelectedOrderFromParty;
+
+ if (order[unk - 1] == 0)
{
if (unk == 1)
return 14;
ConvertIntToDecimalStringN(gStringVar1, unk, 0, 1);
return 17;
}
- facilityNum = VarGet(VAR_FRONTIER_FACILITY);
- if (facilityNum != 8 && facilityNum != 9)
+
+ facility = VarGet(VAR_FRONTIER_FACILITY);
+ if (facility == 8 || facility == 9)
+ return 0xFF;
+
+ unk2 = sub_81B8830();
+ for (i = 0; i < unk2 - 1; i++)
{
- unk2 = sub_81B8830();
- for (i = 0; i < (unk2 - 1); i++)
+ u16 species = GetMonData(&party[order[i] - 1], MON_DATA_SPECIES);
+ u16 item = GetMonData(&party[order[i] - 1], MON_DATA_HELD_ITEM);
+ for (j = i + 1; j < unk2; j++)
{
- species = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i - 1]], MON_DATA_SPECIES);
- item = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i - 1]], MON_DATA_HELD_ITEM);
- for (j = i + 1; j < unk2; j++)
- {
- if (species == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j - 1]], MON_DATA_SPECIES))
- return 18;
- if (item != ITEM_NONE && item == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j - 1]], MON_DATA_HELD_ITEM))
- return 19;
- }
+ if (species == GetMonData(&party[order[j] - 1], MON_DATA_SPECIES))
+ return 18;
+ if (item != ITEM_NONE && item == GetMonData(&party[order[j] - 1], MON_DATA_HELD_ITEM))
+ return 19;
}
}
+
return 0xFF;
}
-#else
-NAKED
-u8 sub_81B865C(void)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- bl sub_81B885C\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- adds r1, r2, 0\n\
- ldr r3, =gSelectedOrderFromParty\n\
- adds r0, r2, r3\n\
- subs r0, 0x1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _081B869C\n\
- cmp r2, 0x1\n\
- bne _081B8688\n\
- movs r0, 0xE\n\
- b _081B8758\n\
- .pool\n\
-_081B8688:\n\
- ldr r0, =gStringVar1\n\
- movs r2, 0\n\
- movs r3, 0x1\n\
- bl ConvertIntToDecimalStringN\n\
- movs r0, 0x11\n\
- b _081B8758\n\
- .pool\n\
-_081B869C:\n\
- ldr r0, =0x000040cf\n\
- bl VarGet\n\
- lsls r0, 24\n\
- movs r1, 0xF8\n\
- lsls r1, 24\n\
- adds r0, r1\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _081B86C0\n\
- b _081B8756\n\
- .pool\n\
-_081B86B8:\n\
- movs r0, 0x12\n\
- b _081B8758\n\
-_081B86BC:\n\
- movs r0, 0x13\n\
- b _081B8758\n\
-_081B86C0:\n\
- bl sub_81B8830\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- movs r5, 0\n\
- b _081B8750\n\
-_081B86CE:\n\
- ldr r3, =gSelectedOrderFromParty\n\
- adds r4, r3, r5\n\
- ldrb r0, [r4]\n\
- movs r1, 0x64\n\
- muls r0, r1\n\
- subs r0, 0x64\n\
- ldr r3, =gPlayerParty\n\
- adds r0, r3, r0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- ldrb r0, [r4]\n\
- movs r1, 0x64\n\
- muls r0, r1\n\
- subs r0, 0x64\n\
- ldr r3, =gPlayerParty\n\
- adds r0, r3, r0\n\
- movs r1, 0xC\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- adds r1, r5, 0x1\n\
- lsls r0, r1, 24\n\
- lsrs r4, r0, 24\n\
- mov r9, r1\n\
- cmp r4, r8\n\
- bcs _081B8748\n\
- movs r7, 0x64\n\
-_081B870E:\n\
- ldr r0, =gSelectedOrderFromParty\n\
- adds r5, r0, r4\n\
- ldrb r0, [r5]\n\
- muls r0, r7\n\
- subs r0, 0x64\n\
- ldr r1, =gPlayerParty\n\
- adds r0, r1, r0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r10, r0\n\
- beq _081B86B8\n\
- cmp r6, 0\n\
- beq _081B873E\n\
- ldrb r0, [r5]\n\
- muls r0, r7\n\
- subs r0, 0x64\n\
- ldr r3, =gPlayerParty\n\
- adds r0, r3, r0\n\
- movs r1, 0xC\n\
- bl GetMonData\n\
- cmp r6, r0\n\
- beq _081B86BC\n\
-_081B873E:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, r8\n\
- bcc _081B870E\n\
-_081B8748:\n\
- mov r1, r9\n\
- lsls r0, r1, 24\n\
- lsrs r5, r0, 24\n\
- mov r0, r8\n\
-_081B8750:\n\
- subs r0, 0x1\n\
- cmp r5, r0\n\
- blt _081B86CE\n\
-_081B8756:\n\
- movs r0, 0xFF\n\
-_081B8758:\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool\n");
-}
-#endif
-bool8 sub_81B8770(u8 slot)
+static bool8 sub_81B8770(u8 slot)
{
u8 i;
-
+
for (i = 0; i < 4; i++)
{
if (gSelectedOrderFromParty[i] == slot)
@@ -6416,14 +6684,14 @@ bool8 sub_81B8770(u8 slot)
return FALSE;
}
-void sub_81B879C(u8 taskId)
+static void sub_81B879C(u8 taskId)
{
- u8 msgID = sub_81B865C();
-
- if (msgID != 0xFF)
+ u8 msgId = sub_81B865C();
+
+ if (msgId != 0xFF)
{
PlaySE(SE_HAZURE);
- display_pokemon_menu_message(msgID);
+ display_pokemon_menu_message(msgId);
gTasks[taskId].func = sub_81B87E8;
}
else
@@ -6433,7 +6701,7 @@ void sub_81B879C(u8 taskId)
}
}
-void sub_81B87E8(u8 taskId)
+static void sub_81B87E8(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
@@ -6443,56 +6711,57 @@ void sub_81B87E8(u8 taskId)
}
}
-u8 sub_81B8830(void)
+static u8 sub_81B8830(void)
{
switch (VarGet(VAR_FRONTIER_FACILITY))
{
- case 9:
- return 3;
- case 8:
- return 2;
- default:
- return gSpecialVar_0x8005;
+ case 9:
+ return 3;
+ case 8:
+ return 2;
+ default:
+ return gSpecialVar_0x8005;
}
}
-u8 sub_81B885C(void)
+static u8 sub_81B885C(void)
{
switch (VarGet(VAR_FRONTIER_FACILITY))
{
- case 9:
- return 1;
- case 8:
- return 2;
- default:
- return gSpecialVar_0x8005;
+ case 9:
+ return 1;
+ case 8:
+ return 2;
+ default:
+ return gSpecialVar_0x8005;
}
}
-u8 sub_81B8888(void)
+static u8 sub_81B8888(void)
{
switch (VarGet(VAR_FRONTIER_FACILITY))
{
- case 9:
- return 100;
- case 8:
- return 30;
- default:
- if (gSpecialVar_0x8004 == 0)
- return 50;
- return 100;
+ case 9:
+ return 100;
+ case 8:
+ return 30;
+ default:
+ if (gSpecialVar_0x8004 == 0)
+ return 50;
+ return 100;
}
}
-const u8* sub_81B88BC(void)
+static const u8* sub_81B88BC(void)
{
u8 facilityNum = VarGet(VAR_FRONTIER_FACILITY);
-
+
if (!(facilityNum != 8 && facilityNum != 9))
return gText_CancelBattle;
- if (facilityNum == FRONTIER_FACILITY_DOME && gSpecialVar_0x8005 == 2)
+ else if (facilityNum == FRONTIER_FACILITY_DOME && gSpecialVar_0x8005 == 2)
return gText_ReturnToWaitingRoom;
- return gText_CancelChallenge;
+ else
+ return gText_CancelChallenge;
}
void sub_81B8904(u8 initArg, MainCallback callback)
@@ -6510,7 +6779,7 @@ void sub_81B8958(void)
InitPartyMenu(11, 0, 13, 0, 1, sub_81B1370, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-u8 sub_81B8984(void)
+static u8 sub_81B8984(void)
{
if (IsDoubleBattle() == FALSE)
return 0;
@@ -6533,7 +6802,7 @@ void sub_81B89F0(void)
pokemon_change_order();
}
-u8 sub_81B8A2C(struct Pokemon *mon)
+static u8 sub_81B8A2C(struct Pokemon *mon)
{
if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(mon, MON_DATA_IS_EGG) == FALSE)
{
@@ -6545,13 +6814,12 @@ u8 sub_81B8A2C(struct Pokemon *mon)
return 7;
}
-bool8 sub_81B8A7C(void)
+static bool8 sub_81B8A7C(void)
{
u8 slot = GetCursorSelectionMonId();
u8 newSlot;
u8 i;
- u8 neededToMatch;
-
+
if (IsMultiBattle() == TRUE && (slot == 1 || slot == 4 || slot == 5))
{
StringCopy(gStringVar1, GetTrainerPartnerName());
@@ -6591,8 +6859,8 @@ bool8 sub_81B8A7C(void)
}
if (gUnknown_0203CEC8.unkB == 2)
{
- neededToMatch = gBattlerInMenuId;
- GetMonNickname(&gPlayerParty[pokemon_order_func(gBattlerPartyIndexes[neededToMatch])], gStringVar1);
+ u8 currBattler = gBattlerInMenuId;
+ GetMonNickname(&gPlayerParty[pokemon_order_func(gBattlerPartyIndexes[currBattler])], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnCantSwitchOut);
return FALSE;
}
@@ -6609,11 +6877,11 @@ void sub_81B8C68(void)
sub_81B8C88(gUnknown_0203CF00, sub_806D7EC());
}
-void sub_81B8C88(u8 *ptr, bool8 multiplayerFlag)
+static void sub_81B8C88(u8 *ptr, bool8 multiplayerFlag)
{
u8 partyIndexes[6];
int i, j;
-
+
if (IsMultiBattle() == TRUE)
{
if (multiplayerFlag)
@@ -6661,19 +6929,19 @@ void sub_81B8C88(u8 *ptr, bool8 multiplayerFlag)
ptr[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
}
-void sub_81B8D64(u8 battlerPosition, u8 multiplayerFlag)
+void sub_81B8D64(u8 battlerId, u8 multiplayerFlag)
{
- sub_81B8D88(gBattleStruct->field_60[battlerPosition], multiplayerFlag, battlerPosition);
+ sub_81B8D88(gBattleStruct->field_60[battlerId], multiplayerFlag, battlerId);
}
-void sub_81B8D88(u8 *ptr, bool8 multiplayerFlag, u8 battlerPosition)
+static void sub_81B8D88(u8 *ptr, bool8 multiplayerFlag, u8 battlerId)
{
u8 partyIndexes[6];
int i, j;
u8 leftBattler;
u8 rightBattler;
-
- if (GetBattlerSide(battlerPosition) == B_SIDE_PLAYER)
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
@@ -6683,6 +6951,7 @@ void sub_81B8D88(u8 *ptr, bool8 multiplayerFlag, u8 battlerPosition)
leftBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
rightBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
+
if (IsMultiBattle() == TRUE)
{
if (multiplayerFlag)
@@ -6726,21 +6995,22 @@ void sub_81B8D88(u8 *ptr, bool8 multiplayerFlag, u8 battlerPosition)
}
}
}
+
for (i = 0; i < 3; i++)
ptr[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
}
-void sub_81B8E80(u8 battlerPosition, u8 unk, u8 arrayIndex)
+void sub_81B8E80(u8 battlerId, u8 unk, u8 arrayIndex)
{
u8 possiblePartyIndexes[6];
u8 unk2 = 0;
int i, j;
u8 *battleStructRelated;
u8 possiblePartyIndexBuffer;
-
+
if (IsMultiBattle())
{
- battleStructRelated = gBattleStruct->field_60[battlerPosition];
+ battleStructRelated = gBattleStruct->field_60[battlerId];
for (i = j = 0; i < 3; j++, i++)
{
possiblePartyIndexes[j] = battleStructRelated[i] >> 4;
@@ -6767,11 +7037,11 @@ void sub_81B8E80(u8 battlerPosition, u8 unk, u8 arrayIndex)
}
}
-u8 sub_81B8F38(u8 slot)
+static u8 sub_81B8F38(u8 slot)
{
u8 modResult = slot & 1;
u8 retVal;
-
+
slot /= 2;
if (modResult != 0)
retVal = gUnknown_0203CF00[slot] & 0xF;
@@ -6780,10 +7050,10 @@ u8 sub_81B8F38(u8 slot)
return retVal;
}
-void sub_81B8F6C(u8 slot, u8 setVal)
+static void sub_81B8F6C(u8 slot, u8 setVal)
{
bool32 modResult = slot & 1;
-
+
slot /= 2;
if (modResult != 0)
gUnknown_0203CF00[slot] = (gUnknown_0203CF00[slot] & 0xF0) | setVal;
@@ -6801,7 +7071,7 @@ void sub_81B8FB0(u8 slot, u8 slot2)
u8 pokemon_order_func(u8 slot)
{
u8 i, j;
-
+
for (j = i = 0; i < 3; j++, i++)
{
if ((gUnknown_0203CF00[i] >> 4) != slot)
@@ -6818,34 +7088,34 @@ u8 pokemon_order_func(u8 slot)
return 0;
}
-void pokemon_change_order(void)
+static void pokemon_change_order(void)
{
struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty));
u8 i;
-
+
memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty));
for (i = 0; i < PARTY_SIZE; i++)
memcpy(&gPlayerParty[pokemon_order_func(i)], &partyBuffer[i], sizeof(struct Pokemon));
Free(partyBuffer);
}
-void sub_81B9080(void)
+static void sub_81B9080(void)
{
struct Pokemon *partyBuffer = Alloc(sizeof(gPlayerParty));
u8 i;
-
+
memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty));
for (i = 0; i < PARTY_SIZE; i++)
memcpy(&gPlayerParty[sub_81B8F38(i)], &partyBuffer[i], sizeof(struct Pokemon));
Free(partyBuffer);
}
-void sub_81B90D0(void)
+static void sub_81B90D0(void)
{
u8 i;
struct Pokemon *mon;
u8 leadVal;
-
+
for (i = 1; i < PARTY_SIZE; i++)
{
mon = &gPlayerParty[sub_81B8F38(i)];
@@ -6859,7 +7129,7 @@ void sub_81B90D0(void)
}
}
-void sub_81B9140(void)
+static void sub_81B9140(void)
{
SetMainCallback2(SetCB2ToReshowScreenAfterMenu);
}
@@ -6869,7 +7139,7 @@ void sub_81B9150(void)
InitPartyMenu(5, 3, 0, 0, 0x7F, sub_81B917C, gMain.savedCallback);
}
-void sub_81B917C(u8 taskId)
+static void sub_81B917C(u8 taskId)
{
gTasks[taskId].data[0] = 256;
sub_81B9294(taskId);
@@ -6877,11 +7147,11 @@ void sub_81B917C(u8 taskId)
gTasks[taskId].func = sub_81B91B4;
}
-void sub_81B91B4(u8 taskId)
+static void sub_81B91B4(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 i;
-
+
if (!gPaletteFade.active)
{
data[0] -= 8;
@@ -6899,25 +7169,25 @@ void sub_81B91B4(u8 taskId)
}
}
-void sub_81B9240(u8 taskId)
+static void sub_81B9240(u8 taskId)
{
s16 *data = gTasks[taskId].data;
-
+
if (++data[0] == 0x100)
sub_81B12C0(taskId);
}
-void sub_81B9270(u8 spriteId, s16 x)
+static void sub_81B9270(u8 spriteId, s16 x)
{
if (x >= 0)
gSprites[spriteId].pos2.x = x;
}
-void sub_81B9294(u8 taskId)
+static void sub_81B9294(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 i;
-
+
for (i = 3; i < PARTY_SIZE; i++)
{
if (gUnknown_02022FF8[i - 3].species != SPECIES_NONE)
@@ -6936,13 +7206,13 @@ void sub_81B9328(void)
InitPartyMenu(6, 0, 0, 0, 15, sub_81B1370, sub_81B9390);
}
-void sub_81B9354(u8 arg1)
+static void sub_81B9354(u8 arg1)
{
gFieldCallback2 = hm_add_c3_without_phase_2;
InitPartyMenu(arg1, 0, 11, 0, 0, sub_81B1370, CB2_ReturnToField);
}
-void sub_81B9390(void)
+static void sub_81B9390(void)
{
gSpecialVar_0x8004 = GetCursorSelectionMonId();
if (gSpecialVar_0x8004 >= PARTY_SIZE)
@@ -6958,7 +7228,7 @@ bool8 hm_add_c3_without_phase_2(void) // might not be bool
return TRUE;
}
-void task_hm_without_phase_2(u8 taskId)
+static void task_hm_without_phase_2(u8 taskId)
{
if (IsWeatherNotFadingIn())
{
@@ -6975,17 +7245,17 @@ void sub_81B9404(void)
CreateTask(sub_81B9424, 10);
}
-void sub_81B9424(u8 taskId)
+static void sub_81B9424(u8 taskId)
{
if (!gPaletteFade.active)
{
- overworld_free_bg_tilemaps();
+ CleanupOverworldWindowsAndTilemaps();
InitPartyMenu(2, 0, 11, 0, 0, sub_81B1370, sub_81B9470);
DestroyTask(taskId);
}
}
-void sub_81B9470(void)
+static void sub_81B9470(void)
{
gUnknown_02039F24 = GetCursorSelectionMonId();
if (gUnknown_02039F24 >= PARTY_SIZE)
@@ -7002,11 +7272,11 @@ void sub_81B94B0(void)
CreateTask(sub_81B94D0, 10);
}
-void sub_81B94D0(u8 taskId)
+static void sub_81B94D0(u8 taskId)
{
if (!gPaletteFade.active)
{
- overworld_free_bg_tilemaps();
+ CleanupOverworldWindowsAndTilemaps();
InitPartyMenu(3, 0, 11, 0, 0, sub_81B1370, sub_81B9390);
DestroyTask(taskId);
}
@@ -7019,17 +7289,17 @@ void sub_81B951C(void)
CreateTask(sub_81B953C, 10);
}
-void sub_81B953C(u8 taskId)
+static void sub_81B953C(u8 taskId)
{
if (!gPaletteFade.active)
{
- overworld_free_bg_tilemaps();
+ CleanupOverworldWindowsAndTilemaps();
InitPartyMenu(7, 0, 11, 0, 0, sub_81B1370, sub_81B9588);
DestroyTask(taskId);
}
}
-void sub_81B9588(void)
+static void sub_81B9588(void)
{
gSpecialVar_0x8004 = GetCursorSelectionMonId();
if (gSpecialVar_0x8004 >= PARTY_SIZE)
@@ -7043,7 +7313,7 @@ void sub_81B9588(void)
void sub_81B95E0(void)
{
u8 i;
-
+
gSpecialVar_Result = FALSE;
for (i = 0; i < 3; i++)
{
@@ -7062,11 +7332,11 @@ void sub_81B9620(void)
CreateTask(sub_81B9640, 10);
}
-void sub_81B9640(u8 taskId)
+static void sub_81B9640(u8 taskId)
{
if (!gPaletteFade.active)
{
- overworld_free_bg_tilemaps();
+ CleanupOverworldWindowsAndTilemaps();
InitPartyMenu(12, 0, 0, 0, 0, sub_81B1370, sub_81B9390);
DestroyTask(taskId);
}
@@ -7081,7 +7351,7 @@ void sub_81B968C(void)
void sub_81B96D0(void)
{
u8 i;
-
+
gSpecialVar_Result = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -7094,7 +7364,7 @@ void sub_81B9718(void)
{
struct Pokemon *mon = &gPlayerParty[gSpecialVar_0x8004];
u16 move = GetMonData(mon, MON_DATA_MOVE1 + gSpecialVar_0x8005);
-
+
GetMonNickname(mon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[move]);
}
@@ -7102,14 +7372,14 @@ void sub_81B9718(void)
void sub_81B9770(void)
{
u16 i;
-
+
SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], MOVE_NONE, gSpecialVar_0x8005);
RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; i++)
sub_81B97DC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
}
-void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
+static void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
{
u16 move1 = GetMonData(mon, MON_DATA_MOVE1 + slotTo);
u16 move0 = GetMonData(mon, MON_DATA_MOVE1 + slotFrom);
@@ -7142,7 +7412,7 @@ void sub_81B9918(void)
{
u16 move;
u32 i, j;
-
+
gSpecialVar_Result = FALSE;
move = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + gSpecialVar_0x8005);
if (move == MOVE_SURF)
@@ -7158,7 +7428,7 @@ void sub_81B9918(void)
}
}
}
- if (sub_80D23A8(move) != TRUE)
+ if (AnyStorageMonWithMove(move) != TRUE)
gSpecialVar_Result = TRUE;
}
}