summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h5
-rw-r--r--include/battle_message.h10
-rw-r--r--include/battle_string_ids.h2
-rw-r--r--include/battle_tower.h7
-rw-r--r--include/constants/easy_chat.h22
-rw-r--r--include/constants/global.h2
-rw-r--r--include/constants/party_menu.h118
-rw-r--r--include/constants/trade.h118
-rw-r--r--include/constants/trainers.h149
-rw-r--r--include/data.h2
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/event_scripts.h6
-rw-r--r--include/field_player_avatar.h2
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/fldeff.h9
-rw-r--r--include/global.h22
-rw-r--r--include/graphics.h13
-rw-r--r--include/item.h3
-rw-r--r--include/item_menu.h4
-rw-r--r--include/item_use.h1
-rw-r--r--include/link_rfu.h4
-rw-r--r--include/list_menu.h12
-rw-r--r--include/menu_helpers.h7
-rw-r--r--include/new_menu_helpers.h4
-rw-r--r--include/overworld.h4
-rw-r--r--include/party_menu.h149
-rw-r--r--include/player_pc.h5
-rw-r--r--include/pokemon.h4
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--include/pokemon_jump.h1
-rw-r--r--include/pokemon_special_anim.h6
-rw-r--r--include/pokemon_summary_screen.h2
-rw-r--r--include/quest_log.h3
-rw-r--r--include/region_map.h3
-rw-r--r--include/strings.h154
-rw-r--r--include/trade.h6
-rw-r--r--include/trainer_tower.h2
-rw-r--r--include/union_room.h7
39 files changed, 574 insertions, 300 deletions
diff --git a/include/battle.h b/include/battle.h
index 00f7dcea9..54aef5106 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -24,8 +24,7 @@
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
-#define TRAINER_OPPONENT_800 0x800
-#define STEVEN_PARTNER_ID 0xC03
+#define TRAINER_LINK_OPPONENT 0x800
#define SECRET_BASE_OPPONENT 0x400
#define B_ACTION_USE_MOVE 0
@@ -712,7 +711,7 @@ extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
extern u8 gBattleTerrain;
-extern struct UnknownPokemonStruct4 gUnknown_2022B58[3];
+extern struct UnknownPokemonStruct4 gMultiPartnerParty[3];
extern u16 *gUnknown_2022BC0;
extern u16 gRandomTurnNumber;
diff --git a/include/battle_message.h b/include/battle_message.h
index 2bbfffa43..612b253cf 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -51,13 +51,9 @@
#define B_TXT_DEF_PREFIX2 0x2B
#define B_TXT_ATK_PREFIX3 0x2C
#define B_TXT_DEF_PREFIX3 0x2D
-#define B_TXT_TRAINER2_CLASS 0x2E
-#define B_TXT_TRAINER2_NAME 0x2F
-#define B_TXT_TRAINER2_LOSE_TEXT 0x30
-#define B_TXT_TRAINER2_WIN_TEXT 0x31
-#define B_TXT_PARTNER_CLASS 0x32
-#define B_TXT_PARTNER_NAME 0x33
-#define B_TXT_BUFF3 0x34
+#define B_TXT_TRAINER2_LOSE_TEXT 0x2E
+#define B_TXT_TRAINER2_WIN_TEXT 0x2F
+#define B_TXT_BUFF3 0x30
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h
index 155e9f7bf..0eb6b63f4 100644
--- a/include/battle_string_ids.h
+++ b/include/battle_string_ids.h
@@ -387,6 +387,6 @@
#define STRINGID_TRAINER1MON2COMEBACK 384
#define STRINGID_TRAINER1MON1AND2COMEBACK 385
-#define BATTLESTRINGS_COUNT 386
+#define BATTLESTRINGS_COUNT 374
#endif // GUARD_BATTLE_STRING_IDS_H
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 9bb93f1c2..87f847aa4 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -25,11 +25,18 @@ struct BattleTowerPokemonTemplate
u8 nature;
};
+extern const u16 gBattleTowerBannedSpecies[];
+
u16 sub_8164FCC(u8, u8);
void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
void ValidateEReaderTrainer(void);
u8 GetBattleTowerTrainerFrontSpriteId(void);
u8 GetEreaderTrainerFrontSpriteId(void);
void CopyEReaderTrainerName5(u8 *dest);
+void sub_815DC40(u8 *dest, u8 opponentIdx);
+void sub_815DBF4(u8 *dest, u8 opponentIdx);
+void GetBattleTowerTrainerName(u8 *text);
+u8 GetEreaderTrainerClassId(void);
+u8 GetBattleTowerTrainerClassNameId(void);
#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 746f10679..4ef90ed60 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1,6 +1,28 @@
#ifndef GUARD_CONSTANTS_EASY_CHAT_H
#define GUARD_CONSTANTS_EASY_CHAT_H
+#define EASY_CHAT_TYPE_PROFILE 0
+#define EASY_CHAT_TYPE_BATTLE_START 1
+#define EASY_CHAT_TYPE_BATTLE_WON 2
+#define EASY_CHAT_TYPE_BATTLE_LOST 3
+#define EASY_CHAT_TYPE_MAIL 4
+#define EASY_CHAT_TYPE_INTERVIEW 5
+#define EASY_CHAT_TYPE_BARD_SONG 6
+#define EASY_CHAT_TYPE_FAN_CLUB 7
+#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
+#define EASY_CHAT_TYPE_GABBY_AND_TY 10
+#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
+#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12
+#define EASY_CHAT_TYPE_GOOD_SAYING 13
+#define EASY_CHAT_TYPE_FAN_QUESTION 14
+#define EASY_CHAT_TYPE_QUIZ_ANSWER 15
+#define EASY_CHAT_TYPE_QUIZ_QUESTION 16
+#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17
+#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18
+#define EASY_CHAT_TYPE_APPRENTICE 19
+#define EASY_CHAT_TYPE_QUESTIONNAIRE 20
+
#define EC_GROUP_POKEMON_2 0x0
#define EC_GROUP_TRAINER 0x1
#define EC_GROUP_STATUS 0x2
diff --git a/include/constants/global.h b/include/constants/global.h
index d7508c940..68c4f8246 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -80,4 +80,6 @@ enum
#define NUM_BAG_POCKETS 5
+#define MULTI_PARTY_SIZE PARTY_SIZE / 2
+
#endif //GUARD_CONSTANTS_GLOBAL_H
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
new file mode 100644
index 000000000..9b5660f6f
--- /dev/null
+++ b/include/constants/party_menu.h
@@ -0,0 +1,118 @@
+#ifndef GUARD_CONSTANTS_PARTY_MENU_H
+#define GUARD_CONSTANTS_PARTY_MENU_H
+
+#define AILMENT_NONE 0
+#define AILMENT_PSN 1
+#define AILMENT_PRZ 2
+#define AILMENT_SLP 3
+#define AILMENT_FRZ 4
+#define AILMENT_BRN 5
+#define AILMENT_PKRS 6
+#define AILMENT_FNT 7
+
+#define TUTOR_MOVE_MEGA_PUNCH 0
+#define TUTOR_MOVE_SWORDS_DANCE 1
+#define TUTOR_MOVE_MEGA_KICK 2
+#define TUTOR_MOVE_BODY_SLAM 3
+#define TUTOR_MOVE_DOUBLE_EDGE 4
+#define TUTOR_MOVE_COUNTER 5
+#define TUTOR_MOVE_SEISMIC_TOSS 6
+#define TUTOR_MOVE_MIMIC 7
+#define TUTOR_MOVE_METRONOME 8
+#define TUTOR_MOVE_SOFT_BOILED 9
+#define TUTOR_MOVE_DREAM_EATER 10
+#define TUTOR_MOVE_THUNDER_WAVE 11
+#define TUTOR_MOVE_EXPLOSION 12
+#define TUTOR_MOVE_ROCK_SLIDE 13
+#define TUTOR_MOVE_SUBSTITUTE 14
+#define TUTOR_MOVE_COUNT 15 // regular tutor move count
+
+#define TUTOR_MOVE_FRENZY_PLANT 15
+#define TUTOR_MOVE_BLAST_BURN 16
+#define TUTOR_MOVE_HYDRO_CANNON 17
+
+#define PARTY_LAYOUT_SINGLE 0
+#define PARTY_LAYOUT_DOUBLE 1
+#define PARTY_LAYOUT_MULTI 2
+#define PARTY_LAYOUT_MULTI_SHOWCASE 3 // The layout during the screen that appears just before a multi battle
+#define PARTY_LAYOUT_COUNT 4
+#define KEEP_PARTY_LAYOUT 0xFF
+
+#define PARTY_MENU_TYPE_FIELD 0
+#define PARTY_MENU_TYPE_IN_BATTLE 1
+#define PARTY_MENU_TYPE_CONTEST 2
+#define PARTY_MENU_TYPE_CHOOSE_MON 3
+#define PARTY_MENU_TYPE_CHOOSE_HALF 4 // multi battles, eReader battles, and some battle facilities
+#define PARTY_MENU_TYPE_MULTI_SHOWCASE 5
+#define PARTY_MENU_TYPE_DAYCARE 6
+#define PARTY_MENU_TYPE_MOVE_RELEARNER 7
+#define PARTY_MENU_TYPE_UNION_ROOM_REGISTER 8 // trading board
+#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
+#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
+#define PARTY_MENU_TYPE_MINIGAME 11
+#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
+
+#define PARTY_ACTION_CHOOSE_MON 0
+#define PARTY_ACTION_SEND_OUT 1
+#define PARTY_ACTION_CANT_SWITCH 2
+#define PARTY_ACTION_USE_ITEM 3
+#define PARTY_ACTION_ABILITY_PREVENTS 4
+#define PARTY_ACTION_GIVE_ITEM 5
+#define PARTY_ACTION_GIVE_PC_ITEM 6 // TODO: rename this one if necessary. Used for quest log.
+#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
+#define PARTY_ACTION_SWITCH 8
+#define PARTY_ACTION_SWITCHING 9
+#define PARTY_ACTION_SOFTBOILED 10
+#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
+#define PARTY_ACTION_MOVE_TUTOR 12
+#define PARTY_ACTION_MINIGAME 13
+#define PARTY_ACTION_REUSABLE_ITEM 14
+
+// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
+#define PARTY_MSG_CHOOSE_MON 0
+#define PARTY_MSG_CHOOSE_MON_OR_CANCEL 1
+#define PARTY_MSG_CHOOSE_MON_AND_CONFIRM 2
+#define PARTY_MSG_MOVE_TO_WHERE 3
+#define PARTY_MSG_TEACH_WHICH_MON 4
+#define PARTY_MSG_USE_ON_WHICH_MON 5
+#define PARTY_MSG_GIVE_TO_WHICH_MON 6
+#define PARTY_MSG_NOTHING_TO_CUT 7
+#define PARTY_MSG_CANT_SURF_HERE 8
+#define PARTY_MSG_ALREADY_SURFING 9
+#define PARTY_MSG_CURRENT_TOO_FAST 10
+#define PARTY_MSG_ENJOY_CYCLING 11
+#define PARTY_MSG_ALREADY_IN_USE 12
+#define PARTY_MSG_CANT_USE_HERE 13
+#define PARTY_MSG_NO_MON_FOR_BATTLE 14
+#define PARTY_MSG_CHOOSE_MON_2 15
+#define PARTY_MSG_NOT_ENOUGH_HP 16
+#define PARTY_MSG_THREE_MONS_ARE_NEEDED 17
+#define PARTY_MSG_TWO_MONS_ARE_NEEDED 18
+#define PARTY_MSG_MONS_CANT_BE_SAME 19
+#define PARTY_MSG_NO_SAME_HOLD_ITEMS 20
+#define PARTY_MSG_UNUSED 21
+#define PARTY_MSG_DO_WHAT_WITH_MON 22
+#define PARTY_MSG_RESTORE_WHICH_MOVE 23
+#define PARTY_MSG_BOOST_PP_WHICH_MOVE 24
+#define PARTY_MSG_DO_WHAT_WITH_ITEM 25
+#define PARTY_MSG_DO_WHAT_WITH_MAIL 26
+#define PARTY_MSG_NONE 127
+
+// IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box
+#define PARTYBOX_DESC_NO_USE 0
+#define PARTYBOX_DESC_ABLE_3 1
+#define PARTYBOX_DESC_FIRST 2
+#define PARTYBOX_DESC_SECOND 3
+#define PARTYBOX_DESC_THIRD 4
+#define PARTYBOX_DESC_ABLE 5
+#define PARTYBOX_DESC_NOT_ABLE 6
+#define PARTYBOX_DESC_ABLE_2 7
+#define PARTYBOX_DESC_NOT_ABLE_2 8
+#define PARTYBOX_DESC_LEARNED 9
+
+#define SELECTWINDOW_ACTIONS 0
+#define SELECTWINDOW_ITEM 1
+#define SELECTWINDOW_MAIL 2
+#define SELECTWINDOW_MOVES 3
+
+#endif // GUARD_CONSTANTS_PARTY_MENU_H
diff --git a/include/constants/trade.h b/include/constants/trade.h
new file mode 100644
index 000000000..b1371caab
--- /dev/null
+++ b/include/constants/trade.h
@@ -0,0 +1,118 @@
+ #ifndef GUARD_CONSTANTS_TRADE_H
+#define GUARD_CONSTANTS_TRADE_H
+
+// TODO: document trade.c and trade_scene.c with corresponding macros
+// and examine if these are correct
+
+#define TRADE_PLAYER 0
+#define TRADE_PARTNER 1
+
+#define LINK_TRADE_TIMEOUT 300
+
+// In-game Trade IDs
+#define INGAME_TRADE_SEEDOT 0
+#define INGAME_TRADE_PLUSLE 1
+#define INGAME_TRADE_HORSEA 2
+#define INGAME_TRADE_MEOWTH 3
+
+// Flag IDs for sending link data
+#define INITIATE_TRADE 1
+#define CANCEL_TRADE 2
+#define WANTS_TO_TRADE 1
+#define WANTS_TO_CANCEL 2
+#define READY_FINISH_TRADE 1
+#define FINISH_TRADE 2
+
+// Return values for CanTradeSelectedMon and CanSpinTradeMon
+#define CAN_TRADE_MON 0
+#define CANT_TRADE_LAST_MON 1
+#define CANT_TRADE_NATIONAL 2
+#define CANT_TRADE_EGG_YET 3
+#define CANT_TRADE_INVALID_MON 4
+#define CANT_TRADE_EGG_YET2 5
+
+// Return values for CheckValidityOfTradeMons
+#define PLAYER_MON_INVALID 0
+#define BOTH_MONS_VALID 1
+#define PARTNER_MON_INVALID 2
+
+// Return values for GetGameProgressForLinkTrade
+#define TRADE_BOTH_PLAYERS_READY 0
+#define TRADE_PLAYER_NOT_READY 1
+#define TRADE_PARTNER_NOT_READY 2
+
+// Indexes for sTradeActionTexts
+#define TRADE_TEXT_CANCEL 0
+#define TRADE_TEXT_CHOOSE_MON 1
+#define TRADE_TEXT_SUMMARY 2
+#define TRADE_TEXT_TRADE 3
+#define TRADE_TEXT_CANCEL_TRADE 4
+#define TRADE_TEXT_JP_QUIT 5
+
+// Checked to confirm DrawTradeMenuParty has reached final state
+#define DRAW_PARTY_FINISH 5
+
+// Message indexes for sTradeMessages
+#define TRADE_MSG_STANDBY 0
+#define TRADE_MSG_CANCELED 1
+#define TRADE_MSG_ONLY_MON1 2
+#define TRADE_MSG_ONLY_MON2 3
+#define TRADE_MSG_WAITING_FOR_FRIEND 4
+#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5
+#define TRADE_MSG_MON_CANT_BE_TRADED 6
+#define TRADE_MSG_EGG_CANT_BE_TRADED 7
+#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8
+
+// IDs for QueueAction
+#define QUEUE_SEND_DATA 0
+#define QUEUE_STANDBY 1
+#define QUEUE_ONLY_MON1 2
+#define QUEUE_ONLY_MON2 3
+#define QUEUE_UNUSED1 4
+#define QUEUE_UNUSED2 5
+#define QUEUE_MON_CANT_BE_TRADED 6
+#define QUEUE_EGG_CANT_BE_TRADED 7
+#define QUEUE_FRIENDS_MON_CANT_BE_TRADED 8
+
+#define QUEUE_DELAY_MSG 3
+#define QUEUE_DELAY_DATA 5
+
+// IDs for CallTradeMenuFunc
+#define TRADEMENUFUNC_MAIN_MENU 0
+#define TRADEMENUFUNC_SELECTED_MON 1
+#define TRADEMENUFUNC_SHOW_MON_SUMMARY 2
+#define TRADEMENUFUNC_CONFIRM_OR_CANCEL_TRADE 3
+#define TRADEMENUFUNC_CANCEL_TRADE_PROMPT 4
+#define TRADEMENUFUNC_UNUSED_5 5
+#define TRADEMENUFUNC_BOTH_MONS_SELECTED 6
+#define TRADEMENUFUNC_CONFIRM_TRADE_PROMPT 7
+#define TRADEMENUFUNC_REDRAW_MAIN_MENU 8
+#define TRADEMENUFUNC_LINK_TRADE_FADE_OUT 9
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_FADE 10
+#define TRADEMENUFUNC_CANCEL_TRADE_1 11
+#define TRADEMENUFUNC_CANCEL_TRADE_2 12
+#define TRADEMENUFUNC_START_LINK_TRADE 13
+#define TRADEMENUFUNC_DELAY_TRADE_CONFIRM 14
+#define TRADEMENUFUNC_UNUSED_15 15
+#define TRADEMENUFUNC_LINK_TRADE_WAIT_QUEUE 16
+#define TRADEMENUFUNC_PARTNER_MON_INVALID 17
+#define TRADEMENUFUNC_STANDBY 100
+
+// Message indexes for sUnionRoomTradeMessages
+#define UR_TRADE_MSG_NONE 0
+#define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1
+#define UR_TRADE_MSG_NOT_EGG 2
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3
+#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4
+#define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5
+#define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6
+#define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_1 8
+#define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9
+
+// Return values for CanRegisterMonForTradingBoard
+#define CAN_REGISTER_MON 0
+#define CANT_REGISTER_MON 1
+#define CANT_REGISTER_EGG 2
+
+#endif //GUARD_CONSTANTS_TRADE_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
index 30e11c14f..f75c4bab8 100644
--- a/include/constants/trainers.h
+++ b/include/constants/trainers.h
@@ -170,155 +170,6 @@
#define F_TRAINER_FEMALE (1 << 7)
-#define TRAINER_PIC_AQUA_LEADER_ARCHIE 0
-#define TRAINER_PIC_AQUA_GRUNT_M 1
-#define TRAINER_PIC_AQUA_GRUNT_F 2
-#define TRAINER_PIC_RS_AROMA_LADY 3
-#define TRAINER_PIC_RS_RUIN_MANIAC 4
-#define TRAINER_PIC_INTERVIEWER 5
-#define TRAINER_PIC_RS_TUBER_F 6
-#define TRAINER_PIC_TUBER_M 7
-#define TRAINER_PIC_RS_COOLTRAINER_M 8
-#define TRAINER_PIC_RS_COOLTRAINER_F 9
-#define TRAINER_PIC_HEX_MANIAC 10
-#define TRAINER_PIC_RS_LADY 11
-#define TRAINER_PIC_RS_BEAUTY 12
-#define TRAINER_PIC_RICH_BOY 13
-#define TRAINER_PIC_RS_POKEMANIAC 14
-#define TRAINER_PIC_RS_SWIMMER_M 15
-#define TRAINER_PIC_RS_BLACK_BELT 16
-#define TRAINER_PIC_GUITARIST 17
-#define TRAINER_PIC_KINDLER 18
-#define TRAINER_PIC_RS_CAMPER 19
-#define TRAINER_PIC_BUG_MANIAC 20
-#define TRAINER_PIC_RS_PSYCHIC_M 21
-#define TRAINER_PIC_RS_PSYCHIC_F 22
-#define TRAINER_PIC_RS_GENTLEMAN 23
-#define TRAINER_PIC_ELITE_FOUR_SIDNEY 24
-#define TRAINER_PIC_ELITE_FOUR_PHOEBE 25
-#define TRAINER_PIC_LEADER_ROXANNE 26
-#define TRAINER_PIC_LEADER_BRAWLY 27
-#define TRAINER_PIC_LEADER_TATE_AND_LIZA 28
-#define TRAINER_PIC_SCHOOL_KID_M 29
-#define TRAINER_PIC_SCHOOL_KID_F 30
-#define TRAINER_PIC_SR_AND_JR 31
-#define TRAINER_PIC_POKEFAN_M 32
-#define TRAINER_PIC_POKEFAN_F 33
-#define TRAINER_PIC_EXPERT_M 34
-#define TRAINER_PIC_EXPERT_F 35
-#define TRAINER_PIC_RS_YOUNGSTER 36
-#define TRAINER_PIC_CHAMPION_STEVEN 37
-#define TRAINER_PIC_RS_FISHERMAN 38
-#define TRAINER_PIC_CYCLING_TRIATHLETE_M 39
-#define TRAINER_PIC_CYCLING_TRIATHLETE_F 40
-#define TRAINER_PIC_RUNNING_TRIATHLETE_M 41
-#define TRAINER_PIC_RUNNING_TRIATHLETE_F 42
-#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 43
-#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 44
-#define TRAINER_PIC_DRAGON_TAMER 45
-#define TRAINER_PIC_RS_BIRD_KEEPER 46
-#define TRAINER_PIC_NINJA_BOY 47
-#define TRAINER_PIC_BATTLE_GIRL 48
-#define TRAINER_PIC_PARASOL_LADY 49
-#define TRAINER_PIC_RS_SWIMMER_F 50
-#define TRAINER_PIC_RS_PICNICKER 51
-#define TRAINER_PIC_RS_TWINS 52
-#define TRAINER_PIC_RS_SAILOR 53
-#define TRAINER_PIC_COLLECTOR 54
-#define TRAINER_PIC_WALLY 55
-#define TRAINER_PIC_RS_BRENDAN_1 56
-#define TRAINER_PIC_RS_MAY_1 57
-#define TRAINER_PIC_POKEMON_BREEDER_M 58
-#define TRAINER_PIC_RS_POKEMON_BREEDER_F 59
-#define TRAINER_PIC_RS_POKEMON_RANGER_M 60
-#define TRAINER_PIC_RS_POKEMON_RANGER_F 61
-#define TRAINER_PIC_MAGMA_LEADER_MAXIE 62
-#define TRAINER_PIC_MAGMA_GRUNT_M 63
-#define TRAINER_PIC_MAGMA_GRUNT_F 64
-#define TRAINER_PIC_RS_LASS 65
-#define TRAINER_PIC_RS_BUG_CATCHER 66
-#define TRAINER_PIC_RS_HIKER 67
-#define TRAINER_PIC_RS_YOUNG_COUPLE 68
-#define TRAINER_PIC_OLD_COUPLE 69
-#define TRAINER_PIC_RS_SIS_AND_BRO 70
-#define TRAINER_PIC_AQUA_ADMIN_M 71
-#define TRAINER_PIC_AQUA_ADMIN_F 72
-#define TRAINER_PIC_MAGMA_ADMIN_M 73
-#define TRAINER_PIC_MAGMA_ADMIN_F 74
-#define TRAINER_PIC_LEADER_WATTSON 75
-#define TRAINER_PIC_LEADER_FLANNERY 76
-#define TRAINER_PIC_LEADER_NORMAN 77
-#define TRAINER_PIC_LEADER_WINONA 78
-#define TRAINER_PIC_LEADER_WALLACE 79
-#define TRAINER_PIC_ELITE_FOUR_GLACIA 80
-#define TRAINER_PIC_ELITE_FOUR_DRAKE 81
-#define TRAINER_PIC_YOUNGSTER 82
-#define TRAINER_PIC_BUG_CATCHER 83
-#define TRAINER_PIC_LASS 84
-#define TRAINER_PIC_SAILOR 85
-#define TRAINER_PIC_CAMPER 86
-#define TRAINER_PIC_PICNICKER 87
-#define TRAINER_PIC_POKEMANIAC 88
-#define TRAINER_PIC_SUPER_NERD 89
-#define TRAINER_PIC_HIKER 90
-#define TRAINER_PIC_BIKER 91
-#define TRAINER_PIC_BURGLAR 92
-#define TRAINER_PIC_ENGINEER 93
-#define TRAINER_PIC_FISHERMAN 94
-#define TRAINER_PIC_SWIMMER_M 95
-#define TRAINER_PIC_CUE_BALL 96
-#define TRAINER_PIC_GAMER 97
-#define TRAINER_PIC_BEAUTY 98
-#define TRAINER_PIC_SWIMMER_F 99
-#define TRAINER_PIC_PSYCHIC_M 100
-#define TRAINER_PIC_ROCKER 101
-#define TRAINER_PIC_JUGGLER 102
-#define TRAINER_PIC_TAMER 103
-#define TRAINER_PIC_BIRD_KEEPER 104
-#define TRAINER_PIC_BLACK_BELT 105
-#define TRAINER_PIC_RIVAL_1 106
-#define TRAINER_PIC_SCIENTIST 107
-#define TRAINER_PIC_LEADER_GIOVANNI 108
-#define TRAINER_PIC_ROCKET_GRUNT_M 109
-#define TRAINER_PIC_COOLTRAINER_M 110
-#define TRAINER_PIC_COOLTRAINER_F 111
-#define TRAINER_PIC_ELITE_FOUR_LORELEI 112
-#define TRAINER_PIC_ELITE_FOUR_BRUNO 113
-#define TRAINER_PIC_ELITE_FOUR_AGATHA 114
-#define TRAINER_PIC_ELITE_FOUR_LANCE 115
-#define TRAINER_PIC_LEADER_BROCK 116
-#define TRAINER_PIC_LEADER_MISTY 117
-#define TRAINER_PIC_LEADER_LT_SURGE 118
-#define TRAINER_PIC_LEADER_ERIKA 119
-#define TRAINER_PIC_LEADER_KOGA 120
-#define TRAINER_PIC_LEADER_BLAINE 121
-#define TRAINER_PIC_LEADER_SABRINA 122
-#define TRAINER_PIC_GENTLEMAN 123
-#define TRAINER_PIC_RIVAL_2 124
-#define TRAINER_PIC_CHAMPION_RIVAL 125
-#define TRAINER_PIC_CHANNELER 126
-#define TRAINER_PIC_TWINS 127
-#define TRAINER_PIC_COOL_COUPLE 128
-#define TRAINER_PIC_YOUNG_COUPLE 129
-#define TRAINER_PIC_CRUSH_KIN 130
-#define TRAINER_PIC_SIS_AND_BRO 131
-#define TRAINER_PIC_PROFESSOR_OAK 132
-#define TRAINER_PIC_RS_BRENDAN_2 133
-#define TRAINER_PIC_RS_MAY_2 134
-#define TRAINER_PIC_RED 135
-#define TRAINER_PIC_LEAF 136
-#define TRAINER_PIC_ROCKET_GRUNT_F 137
-#define TRAINER_PIC_PSYCHIC_F 138
-#define TRAINER_PIC_CRUSH_GIRL 139
-#define TRAINER_PIC_TUBER_F 140
-#define TRAINER_PIC_POKEMON_BREEDER_F 141
-#define TRAINER_PIC_POKEMON_RANGER_M 142
-#define TRAINER_PIC_POKEMON_RANGER_F 143
-#define TRAINER_PIC_AROMA_LADY 144
-#define TRAINER_PIC_RUIN_MANIAC 145
-#define TRAINER_PIC_LADY 146
-#define TRAINER_PIC_PAINTER 147
-
#define TRAINER_NONE 0
#define TRAINER_AQUA_LEADER_1 1
#define TRAINER_TEAM_AQUA_1 2
diff --git a/include/data.h b/include/data.h
index 9ea1f7c96..72e6b66fc 100644
--- a/include/data.h
+++ b/include/data.h
@@ -22,6 +22,8 @@ extern const u16 gUnknown_8251FEE[];
extern const u16 gUnknown_8252324[];
extern const u16 gUnknown_82539D4[];
+extern const u8 gTrainerClassNames[][13];
+
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonBackPicCoords[];
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 765758035..9c642bb36 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -45,5 +45,6 @@ u16 GetDisplayedWordByIndex(u16 index);
u16 GetNumDisplayedWords(void);
const u8 *GetEasyChatWordGroupName(u8);
u8 *CopyEasyChatWordPadded(u8 *, u16, u16);
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback); // TODO: currently in link_rfu.s. further file split needed?
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index e8fc40fa4..2ad1485c2 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1188,4 +1188,10 @@ extern const u8 Text_1BCAF2[];
extern const u8 EventScript_RepelWoreOff[];
+// battle_message
+extern const u8 Text_1A5CF1[];
+extern const u8 Text_1A5D31[];
+extern const u8 Text_1A5D6E[];
+extern const u8 Text_1A5DB1[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 1d431771b..ec1a077be 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -33,5 +33,7 @@ void sub_805DC04(void);
void sub_805DAB0(void);
bool32 sub_805DAD0(void);
bool32 sub_805DC24(void);
+bool8 PartyHasMonWithSurf(void);
+bool8 IsPlayerSurfingNorth(void);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 1b8044592..86fab62e0 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -9,5 +9,6 @@ void sub_80B0244(void);
void sub_807E3EC(void);
void sub_807F114(void);
void sub_807F204(u8 taskId);
+void sub_807DC00(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 96c1ce7cb..2709a7298 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -13,7 +13,7 @@ void DoCurrentWeather(void);
void SetSav1WeatherFromCurrMapHeader(void);
void sub_807B0C4(u16 *, u16 *, u32);
void PlayRainStoppingSoundEffect(void);
-bool8 field_weather_is_fade_finished(void);
+bool8 IsWeatherNotFadingIn(void);
void SetWeatherScreenFadeOut(void);
void sub_807B070(void);
u8 GetCurrentWeather(void);
diff --git a/include/fldeff.h b/include/fldeff.h
index 25d5b8d43..51287f400 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -7,7 +7,6 @@
gTasks[taskId].data[8] = (u32)func >> 16; \
gTasks[taskId].data[9] = (u32)func;
-extern u8 *gUnknown_203AAB0;
extern struct MapPosition gPlayerFacingPosition;
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
@@ -16,8 +15,10 @@ u8 oei_task_add(void);
// flash
u8 sub_80C9DCC(u8 lightLevel, u8 mapType);
u8 sub_80C9D7C(u8 mapType1, u8 mapType2);
+bool8 SetUpFieldMove_Flash(void);
// cut
+bool8 SetUpFieldMove_Cut(void);
// dig
bool8 SetUpFieldMove_Dig(void);
@@ -43,9 +44,9 @@ bool8 SetUpFieldMove_Teleport(void);
bool8 FldEff_UseTeleport(void);
// softboiled
-bool8 hm_prepare_dive_probably(void);
-void sub_80E56DC(u8 taskId);
-void sub_80E5724(u8 taskId);
+bool8 SetUpFieldMove_SoftBoiled(void);
+void ChooseMonForSoftboiled(u8 taskId);
+void Task_TryUseSoftboiledOnPartyMon(u8 taskId);
// sweetscent
bool8 SetUpFieldMove_SweetScent(void);
diff --git a/include/global.h b/include/global.h
index 744d23eb3..8e5d90964 100644
--- a/include/global.h
+++ b/include/global.h
@@ -206,26 +206,6 @@ struct LinkBattleRecords
#include "global.berry.h"
#include "pokemon.h"
-struct UnknownSaveBlock2Struct
-{
- u8 field_0;
- u8 field_1;
- u8 field_2[2];
- u8 field_4[8];
- u8 field_C[16];
- u16 field_1C[6];
- u16 field_28[6];
- u8 field_34[176];
- u8 field_E4;
- u8 field_E5;
- u8 field_E6;
- u8 field_E7;
- u8 field_E8;
- u8 field_E9;
- u8 field_EA;
- u8 field_EB;
-}; // sizeof = 0xEC
-
struct BattleTowerRecord // record mixing
{
/*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
@@ -742,7 +722,7 @@ struct SaveBlock1
/*0x000C*/ struct WarpData warp1;
/*0x0014*/ struct WarpData warp2;
/*0x001C*/ struct WarpData lastHealLocation;
- /*0x0024*/ struct WarpData warp4;
+ /*0x0024*/ struct WarpData escapeWarp;
/*0x002C*/ u16 savedMusic;
/*0x002E*/ u8 weather;
/*0x002F*/ u8 filler_2F;
diff --git a/include/graphics.h b/include/graphics.h
index 354339235..93efbd135 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3740,6 +3740,16 @@ extern const u8 gWeatherFog1Tiles[];
extern const u32 gBattleAnimFogTilemap[];
extern const u16 gUnknown_83C2CE0[];
+// party_menu
+extern const u32 gPartyMenuPokeball_Gfx[];
+extern const u32 gPartyMenuPokeball_Pal[];
+extern const u32 gPartyMenuPokeballSmall_Gfx[];
+extern const u32 gStatusGfx_Icons[];
+extern const u32 gStatusPal_Icons[];
+extern const u32 gPartyMenuBg_Gfx[];
+extern const u32 gPartyMenuBg_Tilemap[];
+extern const u32 gPartyMenuBg_Pal[];
+
// credits
extern const u32 gCreditsPokeballBgGfxTiles[];
extern const u32 gCreditsPokeballBgGfxMap[];
@@ -4239,4 +4249,7 @@ extern const u16 gUnknown_8E97DDC[];
extern const u32 gUnknown_8E97DFC[];
extern const u32 gUnknown_8E97EC4[];
+// battle_message
+extern const u16 gUnknown_8D2FBB4[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item.h b/include/item.h
index ccc9cd3bb..01d2a55e5 100644
--- a/include/item.h
+++ b/include/item.h
@@ -43,7 +43,6 @@ void ClearItemSlots(struct ItemSlot *itemSlots, u8 b);
u8 CountUsedPCItemSlots(void);
bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
-void RemovePCItem(u8 index, u16 count);
void SwapRegisteredBike(void);
const u8 *ItemId_GetName(u16 itemId);
u16 ItemId_GetId(u16 itemId);
@@ -75,7 +74,7 @@ u16 GetPcItemQuantity(u16 *);
void SetBagPocketsPointers(void);
void ItemPcCompaction(void);
-void RemoveItemFromPC(u16 itemId, u16 quantity);
+void RemovePCItem(u16 itemId, u16 quantity);
void SortAndCompactBagPocket(struct BagPocket * pocket);
u8 CountItemsInPC(void);
void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
diff --git a/include/item_menu.h b/include/item_menu.h
index d12b9f394..187674e83 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -25,7 +25,7 @@ extern u16 gSpecialVar_ItemId;
// Exported ROM declarations
void sub_81AAC50(void);
void sub_81AAC70(void);
-void sub_8108CF0(void);
+void CB2_SetUpReshowBattleScreenAfterMenu(void);
void sub_81089BC(void);
void sub_810B108(u8);
void CB2_BagMenuFromStartMenu(void);
@@ -39,6 +39,6 @@ void sub_8107ECC(void);
void sub_810AF74(void);
void sub_8108DC8(u8 pocketId);
void sub_81089F4(u8 pocketId);
-void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback);
+void GoToBagMenu(u8 menuType, u8 pocket, MainCallback callback);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_use.h b/include/item_use.h
index db98533f1..7e9f7a61d 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -40,5 +40,6 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId);
void ItemUseOutOfBattle_Itemfinder(u8 taskId);
void sub_80A1C44(u8 taskId);
u8 CanUseEscapeRopeOnCurrMap(void);
+u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
#endif //GUARD_ITEM_USE_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 671488be0..d1bc2b2bc 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -1,6 +1,9 @@
#ifndef GUARD_LINK_RFU_H
#define GUARD_LINK_RFU_H
+#include "global.h"
+#include "librfu.h"
+
struct Padded_U8
{
u8 value;
@@ -42,6 +45,7 @@ void sub_80F8DC0(void);
void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
+struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/list_menu.h b/include/list_menu.h
index df53bb529..e688c474f 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -53,8 +53,8 @@ struct ListMenuTemplate
struct ListMenu
{
struct ListMenuTemplate template;
- u16 scrollOffset;
- u16 selectedRow;
+ u16 cursorPos;
+ u16 itemsAbove;
u8 unk_1C;
u8 unk_1D;
u8 taskId;
@@ -73,12 +73,12 @@ struct ListMenuWindowRect
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
-u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
-u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow);
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove);
s32 ListMenu_ProcessInput(u8 listTaskId);
-void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void DestroyListMenuTask(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove);
void RedrawListMenu(u8 listTaskId);
-void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove);
u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 8d042825c..1e75b336c 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -5,6 +5,9 @@
#include "task.h"
#include "window.h"
+#define MENU_L_PRESSED 1
+#define MENU_R_PRESSED 2
+
struct YesNoFuncTable
{
TaskFunc yesFunc;
@@ -22,9 +25,9 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
u8 GetLRKeysState(void);
-u8 sub_80BF66C(void);
+u8 GetLRKeysPressedAndHeld(void);
bool8 itemid_link_can_give_berry(u16 itemId);
bool8 itemid_80BF6D8_mail_related(u16 itemId);
-void ClearVramOamPltt(void);
+void ResetVramOamAndBgCntRegs(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 644e65289..f20375675 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -15,8 +15,8 @@ void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 o
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void * MallocAndDecompress(const void * src, u32 * size);
-void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
void ResetBgPositions(void);
void InitStandardTextBoxWindows(void);
void FreeAllOverworldWindowBuffers(void);
diff --git a/include/overworld.h b/include/overworld.h
index 36c890eb5..ab20d9ff0 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -72,7 +72,7 @@ void Overworld_ChangeMusicTo(u16);
bool32 IsUpdateLinkStateCBActive(void);
void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
+const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16, u16);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void CB2_ReturnToField(void);
@@ -140,7 +140,7 @@ bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd
bool32 sub_8058318(void);
-void CB2_ReturnToStartMenu(void);
+void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_WhiteOut(void);
void c2_8056854(void);
void sub_8054F38(u32 newKey);
diff --git a/include/party_menu.h b/include/party_menu.h
index 19cdda1dc..e2aee442f 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -3,92 +3,85 @@
#include "main.h"
#include "task.h"
+#include "constants/party_menu.h"
-enum {
- AILMENT_NONE,
- AILMENT_PSN,
- AILMENT_PRZ,
- AILMENT_SLP,
- AILMENT_FRZ,
- AILMENT_BRN,
- AILMENT_PKRS,
- AILMENT_FNT
-};
-
-enum
-{
- PARTY_CHOOSE_MON,
- PARTY_MUST_CHOOSE_MON,
- PARTY_CANT_SWITCH,
- PARTY_USE_ITEM_ON,
- PARTY_ABILITY_PREVENTS,
- PARTY_GIVE_ITEM,
-};
-
-struct Struct203B0A0
+struct PartyMenu
{
MainCallback exitCallback;
- TaskFunc unk4;
- u8 unk8_0:4;
- u8 mode:2;
- u8 unk8_2:2;
- s8 unk9;
- s8 unkA;
- u8 unkB;
- u16 unkC;
- s16 unkE;
- s16 unk10;
+ TaskFunc task;
+ u8 menuType:4;
+ u8 layout:2;
+ u8 unk_8_6:2;
+ s8 slotId;
+ s8 slotId2;
+ u8 action;
+ u16 bagItem;
+ s16 data1; // used variously as a moveId, counter, moveSlotId, or cursorPos
+ s16 learnMoveState;
};
-extern struct Struct203B0A0 gUnknown_203B0A0;
-extern u8 gUnknown_203B0C0;
-extern u8 gUnknown_203B0C1;
-extern u8 gUnknown_203B0DC[3];
-extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
+extern struct PartyMenu gPartyMenu;
+extern bool8 gPartyMenuUseExitCallback;
+extern u8 gSelectedMonPartyId;
+extern MainCallback gPostMenuFieldCallback;
extern u8 gSelectedOrderFromParty[3];
+extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2];
-bool8 FieldCallback_PrepareFadeInFromMenu(void);
-bool8 MonKnowsMove(struct Pokemon *, u16);
-void sub_81B58A8(void);
-void DoWallyTutorialBagMenu(void);
-u8 pokemon_ailments_get_primary(u32 status);
-u16 ItemIdToBattleMoveId(u16 itemId);
-void sub_8125B40(u8 taskId, TaskFunc func);
-void sub_8124C8C(void);
-void sub_8126EDC(void);
-void c2_8123744(void);
-u8 GetCursorSelectionMonId(void);
-void sub_8128370(void);
-void sub_811F818(u8 monId, u8 a1);
-void sub_8121D0C(u8);
-void sub_811FB28(u8 taskId);
-void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc);
-void GetMonNickname(const struct Pokemon * mon, u8 * dest);
-void sub_81202F8(const u8 * src, u8 a1);
-bool8 sub_8120370(void);
-void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback);
-void sub_81252D0(u8 taskId, TaskFunc followUpFunc);
-void ItemUseCB_PpRestore(u8 taskId, TaskFunc followUpFunc);
-void dp05_pp_up(u8 taskId, TaskFunc followUpFunc);
-void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc);
-void sub_8126B60(u8 taskId, TaskFunc followUpFunc);
-void sub_8126894(u8 taskId, TaskFunc followUpFunc);
-void sub_81279E0(void);
-void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc);
-u8 GetItemEffectType(u16 itemId);
-u8 pokemon_order_func(u8);
-void sub_8127CAC(void);
-void sub_8127DA8(u8 battlerId, u8 multiplayerFlag);
-void OpenPartyMenuInBattle(u8 arg);
-void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex);
+extern void (*gItemUseCB)(u8, TaskFunc);
+
+void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCursorPos, u8 messageId, TaskFunc task, MainCallback callback);
+void AnimatePartySlot(u8 slot, u8 animNum);
bool8 IsMultiBattle(void);
-void sub_8126EDC(void);
-void sub_812256C(u8 *partyCount, u8 (*icons)[6], u8 side);
-void PartyMenuInit_FromPlayerPc(void);
-void CB2_PartyMenuFromStartMenu(void);
-void sub_8128198(void);
-void sub_8127FF4(u8 slot, u8 slot2);
+u8 GetCursorSelectionMonId(void);
+u8 GetPartyMenuType(void);
+void Task_HandleChooseMonInput(u8 taskId);
+u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
+u8 DisplayPartyMenuMessage(const u8 *str, bool8 keepOpen);
+bool8 IsPartyMenuTextPrinterActive(void);
+void PartyMenuModifyHP(u8 taskId, u8 slot, s8 hpIncrement, s16 hpDifference, TaskFunc task);
+u8 GetAilmentFromStatus(u32 status);
+u8 GetMonAilment(struct Pokemon *mon);
+void DisplayPartyMenuStdMessage(u32 stringId);
void LoadHeldItemIcons(void);
-void sub_8127968(void);
+void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty);
+void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum);
+void CB2_SelectBagItemToGive(void);
+void CB2_GiveHoldItem(void);
+bool8 FieldCallback_PrepareFadeInFromMenu(void);
+void CB2_ReturnToPartyMenuFromFlyMap(void);
+void sub_8124C1C(const u8 *healLocCtrlData);
+void CB2_ShowPartyMenuForItemUse(void);
+void ItemUseCB_Medicine(u8 taskId, TaskFunc func);
+void ItemUseCB_MedicineStep(u8 taskId, TaskFunc func);
+void ItemUseCB_PPRecovery(u8 taskId, UNUSED TaskFunc func);
+void ItemUseCB_PPUp(u8 taskId, UNUSED TaskFunc func);
+u16 ItemIdToBattleMoveId(u16 item);
+bool8 IsMoveHm(u16 move);
+bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
+void ItemUseCB_TMHM(u8 taskId, UNUSED TaskFunc func);
+void ItemUseCB_RareCandy(u8 taskId, TaskFunc func);
+void ItemUseCB_SacredAsh(u8 taskId, UNUSED TaskFunc func);
+void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc func);
+u8 GetItemEffectType(u16 item);
+void CB2_PartyMenuFromStartMenu(void);
+void CB2_ChooseMonToGiveItem(void);
+void ChooseMonToGiveMailFromMailbox(void);
+void InitChooseHalfPartyForBattle(u8 a1);
+void ClearSelectedPartyOrder(void);
+void sub_81277F4(u8 menuType, MainCallback callback);
+void ChooseMonForMoveTutor(void);
+void ChooseMonForWirelessMinigame(void);
+void OpenPartyMenuInTutorialBattle(u8 partyAction);
+void OpenPartyMenuInBattle(void);
+void ChooseMonForInBattleItem(void);
+void sub_81279E0(void);
+void BufferBattlePartyCurrentOrder(void);
+void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
+void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2);
+void SwitchPartyMonSlots(u8 slot, u8 slot2);
+u8 GetPartyIdFromBattlePartyId(u8 battlePartyId);
+void ShowPartyMenuToShowcaseMultiBattleParty(void);
+void ChooseMonForDaycare(void);
+void ChoosePartyMonByMenuType(u8 menuType);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
index a1ebcddaa..f62835911 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -8,8 +8,8 @@
struct PlayerPCItemPageStruct
{
- u16 selectedRow;
- u16 scrollOffset;
+ u16 cursorPos;
+ u16 itemsAbove;
u8 pageItems;
u8 count;
u8 filler_6[3];
@@ -25,5 +25,6 @@ extern struct PlayerPCItemPageStruct gPlayerPcMenuManager;
void sub_816B060(u8 taskId);
void NewGameInitPCItems(void);
+void Mailbox_ReturnToMailListAfterDeposit(void);
#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokemon.h b/include/pokemon.h
index c5ad89f41..7bc1239f1 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -582,7 +582,7 @@ void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
-bool8 PokemonUseItemEffects2(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
+bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId);
u8 GetNature(struct Pokemon *mon);
@@ -593,7 +593,7 @@ u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
-bool8 sub_80435E0(void);
+bool8 GetPlayerFlankId(void);
bool16 GetLinkTrainerFlankId(u8 linkPlayerId);
s32 GetBattlerMultiplayerId(u16 a1);
u8 GetTrainerEncounterMusicId(u16 trainer);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index cfc3c18f0..f0e5c8b9d 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -22,6 +22,6 @@ u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subprior
u8 UpdateMonIconFrame(struct Sprite * sprite);
void LoadMonIconPalette(u16 iconId);
void FreeMonIconPalette(u16 iconId);
-void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum);
+void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 62d0e610f..8623b223a 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -4,5 +4,6 @@
#include "main.h"
void ResetPokeJumpResults(void);
+bool32 IsSpeciesAllowedInPokemonJump(u16 species);
#endif // GUARD_POKEMON_JUMP_H
diff --git a/include/pokemon_special_anim.h b/include/pokemon_special_anim.h
index 8dbf0efa4..5cc567580 100644
--- a/include/pokemon_special_anim.h
+++ b/include/pokemon_special_anim.h
@@ -5,8 +5,12 @@
void sub_811E5B8(u16, u16, u16, u16, u16, u16);
bool8 sub_811E680(void);
-void GetMonLevelUpWindowStats(struct Pokemon *mon, u16 *currStats);
+void BufferMonStatsToTaskData(struct Pokemon *mon, u16 *currStats);
void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bgClr, u8 fgClr, u8 shadowClr);
void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 shadowClr);
+void sub_811C540(u8 slotId, u16 itemId, MainCallback callback);
+void sub_811C5AC(u8 slotId, u16 itemId, MainCallback callback);
+u32 sub_811D178(void);
+void sub_811C568(u8 slotId, u16 itemId, u16 moveId, MainCallback callback);
#endif // GUARD_POKEMON_SPECIAL_ANIM_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 2655405e5..3695d46df 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -32,7 +32,7 @@ enum PokemonSummaryScreenPage
PSS_PAGE_CONTEST_MOVES,
};
-s32 sub_8138B20(void);
+s32 GetLastViewedMonIndex(void);
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/quest_log.h b/include/quest_log.h
index 3f6c94de5..3dfd5f35c 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -47,7 +47,6 @@ void sub_81139BC(void);
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
void sub_8110840(void *oldSave);
-
-extern u8 gUnknown_203ADFA;
+void sub_8112F18(u8 windowId);
#endif //GUARD_QUEST_LOG_H
diff --git a/include/region_map.h b/include/region_map.h
index 394fee469..67287b6c4 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -94,7 +94,8 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
-void sub_80C4DF8(u8 *, u8);
+void GetMapNameGeneric(u8 *, u8);
void sub_80BFF50(u8 a0, void (*a1)(void));
+void MCB2_FlyMap(void);
#endif //GUARD_REGION_MAP_H
diff --git a/include/strings.h b/include/strings.h
index 7750b271c..e55cb02f5 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -181,19 +181,19 @@ extern const u8 gUnknown_8416644[];
extern const u8 gUnknown_841665C[];
extern const u8 gUnknown_8416690[];
extern const u8 gUnknown_84166A7[];
-extern const u8 gUnknown_84169DC[];
+extern const u8 gText_WontHaveEffect[];
extern const u8 gUnknown_841623D[];
extern const u8 gUnknown_84162BD[];
extern const u8 gUnknown_841D148[];
// pokemon
-extern const u8 BattleText_Rose[];
-extern const u8 BattleText_UnknownString3[];
-extern const u8 BattleText_GetPumped[];
-extern const u8 BattleText_MistShroud[];
+extern const u8 gBattleText_Rose[];
+extern const u8 gBattleText_UnknownString3[];
+extern const u8 gBattleText_GetPumped[];
+extern const u8 gBattleText_MistShroud[];
extern const u8 gText_BadEgg[];
extern const u8 gText_PkmnsXPreventsSwitching[];
-extern u8 *gUnknown_83FD5D0[];
+extern const u8 *const gStatNamesTable[];
// diploma
extern const u8 gUnknown_841B60E[];
@@ -265,6 +265,140 @@ extern const u8 gUnknown_81C6787[];
extern const u8 gUnknown_81C684B[];
extern const u8 gUnknown_81C686C[];
+// party_menu
+extern const u8 gText_ChoosePokemon[];
+extern const u8 gText_ChoosePokemonCancel[];
+extern const u8 gText_ChoosePokemonConfirm[];
+extern const u8 gText_MoveToWhere[];
+extern const u8 gText_TeachWhichPokemon[];
+extern const u8 gText_UseOnWhichPokemon[];
+extern const u8 gText_GiveToWhichPokemon[];
+extern const u8 gText_NothingToCut[];
+extern const u8 gText_CantSurfHere[];
+extern const u8 gText_AlreadySurfing[];
+extern const u8 gText_CurrentIsTooFast[];
+extern const u8 gText_EnjoyCycling[];
+extern const u8 gText_InUseAlready_PM[];
+extern const u8 gText_CantUseHere[];
+extern const u8 gText_NoPokemonForBattle[];
+extern const u8 gText_ChoosePokemon2[];
+extern const u8 gText_NotEnoughHp[];
+extern const u8 gText_ThreePkmnAreNeeded[];
+extern const u8 gText_TwoPokemonAreNeeded[];
+extern const u8 gText_PokemonCantBeSame[];
+extern const u8 gText_NoIdenticalHoldItems[];
+extern const u8 gString_Dummy[];
+extern const u8 gText_DoWhatWithPokemon[];
+extern const u8 gText_RestoreWhichMove[];
+extern const u8 gText_BoostPp[];
+extern const u8 gText_DoWhatWithItem[];
+extern const u8 gText_DoWhatWithMail[];
+extern const u8 gText_NoUse[];
+extern const u8 gText_Able[];
+extern const u8 gText_First_PM[];
+extern const u8 gText_Second_PM[];
+extern const u8 gText_Third_PM[];
+extern const u8 gText_NotAble[];
+extern const u8 gText_Able3[];
+extern const u8 gText_NotAble2[];
+extern const u8 gText_Learned[];
+extern const u8 gText_Able2[];
+extern const u8 gText_CutATreeOrGrass[];
+extern const u8 gText_FlyToAKnownTown[];
+extern const u8 gText_TravelOnWater[];
+extern const u8 gText_MoveHeavyBoulders[];
+extern const u8 gText_LightUpDarkness[];
+extern const u8 gText_ShatterACrackedRock[];
+extern const u8 gText_ClimbAWaterfall[];
+extern const u8 gText_EscapeFromHere[];
+extern const u8 gText_LureWildPokemon[];
+extern const u8 gText_ShareHp[];
+extern const u8 gText_ReturnToAHealingSpot[];
+extern const u8 gText_Summary5[];
+extern const u8 gText_Switch2[];
+extern const u8 gText_Item[];
+extern const u8 gText_Take[];
+extern const u8 gText_Mail[];
+extern const u8 gText_Take2[];
+extern const u8 gText_Read2[];
+extern const u8 gText_Shift[];
+extern const u8 gText_SendOut[];
+extern const u8 gText_Enter[];
+extern const u8 gText_NoEntry[];
+extern const u8 gText_Store[];
+extern const u8 gText_Register[];
+extern const u8 gText_Trade4[];
+extern const u8 gText_NotPkmnOtherTrainerWants[];
+extern const u8 gText_ThatIsntAnEgg[];
+extern const u8 gText_PkmnCantBeTradedNow[];
+extern const u8 gText_OtherTrainersPkmnCantBeTraded[];
+extern const u8 gText_EggCantBeTradedNow[];
+extern const u8 gText_OtherTrainerCantAcceptPkmn[];
+extern const u8 gText_CantTradeWithTrainer[];
+extern const u8 gUnknown_84176CF[];
+extern const u8 gText_PkmnWasGivenItem[];
+extern const u8 gText_ReceivedItemFromPkmn[];
+extern const u8 gText_PkmnAlreadyHoldingItemSwitch[];
+extern const u8 gText_SwitchedPkmnItem[];
+extern const u8 gText_BagFullCouldNotRemoveItem[];
+extern const u8 gText_PkmnCantParticipate[];
+extern const u8 gText_CancelParticipation[];
+extern const u8 gUnknown_8417494[];
+extern const u8 gMenuText_Confirm[];
+extern const u8 gText_Lv[];
+extern const u8 gText_MaleSymbol[];
+extern const u8 gText_FemaleSymbol[];
+extern const u8 gText_Slash[];
+extern const u8 gUnknown_8417457[];
+extern const u8 gText_PkmnNotHolding[];
+extern const u8 gText_PCMailboxFull[];
+extern const u8 gText_MailSentToPC[];
+extern const u8 gText_MailMessageWillBeLost[];
+extern const u8 gText_SendMailToPC[];
+extern const u8 gText_MailTakenFromPkmn[];
+extern const u8 gUnknown_8416B3E[];
+extern const u8 gUnknown_8416B16[];
+extern const u8 gText_PauseUntilPress[];
+extern const u8 gText_CantUseUntilNewBadge[];
+extern const u8 gText_ReturnToHealingSpot[];
+extern const u8 gText_EscapeFromHereAndReturnTo[];
+extern const u8 gText_PkmnCuredOfPoison[];
+extern const u8 gText_PkmnWokeUp2[];
+extern const u8 gText_PkmnBurnHealed[];
+extern const u8 gText_PkmnThawedOut[];
+extern const u8 gText_PkmnCuredOfParalysis[];
+extern const u8 gText_PkmnSnappedOutOfConfusion[];
+extern const u8 gText_PkmnGotOverInfatuation[];
+extern const u8 gText_PkmnBecameHealthy[];
+extern const u8 gText_HP3[];
+extern const u8 gText_Attack3[];
+extern const u8 gText_Defense3[];
+extern const u8 gText_Speed2[];
+extern const u8 gText_SpAtk3[];
+extern const u8 gText_SpDef3[];
+extern const u8 gText_PkmnBaseVar2StatIncreased[];
+extern const u8 gText_MovesPPIncreased[];
+extern const u8 gText_PPWasRestored[];
+extern const u8 gText_PkmnHPRestoredByVar2[];
+extern const u8 gText_PkmnNeedsToReplaceMove[];
+extern const u8 gText_PkmnCantLearnMove[];
+extern const u8 gText_PkmnAlreadyKnows[];
+extern const u8 gText_PkmnLearnedMove3[];
+extern const u8 gText_WhichMoveToForget[];
+extern const u8 gText_12PoofForgotMove[];
+extern const u8 gText_StopLearningMove2[];
+extern const u8 gText_MoveNotLearned[];
+extern const u8 gText_PkmnElevatedToLvVar2[];
+extern const u8 gText_PkmnHoldingItemCantHoldMail[];
+extern const u8 gText_MailTransferredFromMailbox[];
+extern const u8 gText_RemoveMailBeforeItem[];
+extern const u8 gText_CantSwitchWithAlly[];
+extern const u8 gText_PkmnHasNoEnergy[];
+extern const u8 gText_PkmnAlreadyInBattle[];
+extern const u8 gText_EggCantBattle[];
+extern const u8 gText_PkmnAlreadySelected[];
+extern const u8 gText_PkmnCantSwitchOut[];
+
// credits
extern const u8 gString_Dummy[];
extern const u8 gString_PokemonFireRed_Staff[]; // FR
@@ -390,7 +524,7 @@ extern const u8 gText_Pokedex[];
extern const u8 gTextJPDummy_Hiki[];
extern const u8 gText_Badges[];
extern const u8 gTextJPDummy_Ko[];
-extern const u8 gUnknown_841B6F4[];
+extern const u8 gText_Register[];
// mystery_gift_menu
extern const u8 gText_PickOKExit[];
@@ -703,9 +837,9 @@ extern const u8 gUnknown_841E16B[];
extern const u8 gUnknown_8417094[];
extern const u8 gUnknown_841E199[];
extern const u8 gUnknown_841E1C5[];
-extern const u8 gUnknown_84170BC[];
-extern const u8 gUnknown_84170E0[];
-extern const u8 gUnknown_84170FC[];
+extern const u8 gText_PkmnCantBeTradedNow[];
+extern const u8 gText_EggCantBeTradedNow[];
+extern const u8 gText_OtherTrainersPkmnCantBeTraded[];
extern const u8 gUnknown_841E09F[];
extern const u8 gEasyChatGroupName_Pokemon[];
diff --git a/include/trade.h b/include/trade.h
index 257357053..b3b1de23b 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -1,11 +1,17 @@
#ifndef GUARD_TRADE_H
#define GUARD_TRADE_H
+#include "global.h"
+#include "librfu.h"
+#include "constants/trade.h"
+
extern struct MailStruct gLinkPartnerMail[6];
extern u8 gSelectedTradeMonPositions[2];
extern const u16 gUnknown_826601C[];
void CB2_ReturnFromLinkTrade(void);
s32 sub_804FB34(void);
+s32 CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet); // TODO: currently in link_rfu_2.s. further file split needed?
+s32 GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct rfuPlayer, struct UnkLinkRfuStruct_02022B14Substruct rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet);
#endif //GUARD_TRADE_H
diff --git a/include/trainer_tower.h b/include/trainer_tower.h
index 810642a69..9c1ac0631 100644
--- a/include/trainer_tower.h
+++ b/include/trainer_tower.h
@@ -6,5 +6,7 @@ void InitTrainerTowerBattleStruct(void);
void FreeTrainerTowerBattleStruct(void);
u8 GetTrainerTowerTrainerFrontSpriteId(void);
void ResetTrainerTowerResults(void);
+void sub_815DA28(u8 *text);
+u8 sub_815DA10(void);
#endif //GUARD_TRAINER_TOWER_H
diff --git a/include/union_room.h b/include/union_room.h
index 2e97d87f4..03628441b 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -1,6 +1,9 @@
#ifndef GUARD_UNION_ROOM_H
#define GUARD_UNION_ROOM_H
+#include "global.h"
+#include "librfu.h"
+
struct UnkStruct_Shared
{
struct UnkLinkRfuStruct_02022B14 field_0;
@@ -146,4 +149,8 @@ struct TradeUnkStruct
u32 personality;
};
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_203B064;
+extern u16 gUnionRoomOfferedSpecies;
+extern u8 gUnionRoomRequestedMonType;
+
#endif //GUARD_UNION_ROOM_H