summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/bag.h28
-rw-r--r--include/battle.h1
-rw-r--r--include/battle_controllers.h1
-rw-r--r--include/berry_crush.h6
-rw-r--r--include/cable_club.h1
-rw-r--r--include/constants/daycare.h27
-rw-r--r--include/constants/event_object_movement.h7
-rw-r--r--include/constants/flags.h18
-rw-r--r--include/constants/global.h3
-rw-r--r--include/constants/item_menu.h35
-rw-r--r--include/constants/layouts.h10
-rw-r--r--include/constants/map_groups.h12
-rw-r--r--include/constants/menu.h31
-rw-r--r--include/constants/metatile_labels.h6
-rw-r--r--include/constants/pokemon.h118
-rw-r--r--include/constants/region_map.h4
-rw-r--r--include/data.h2
-rw-r--r--include/daycare.h2
-rw-r--r--include/dodrio_berry_picking.h6
-rw-r--r--include/event_object_80688E4.h5
-rw-r--r--include/event_object_8097404.h2
-rw-r--r--include/event_object_lock.h1
-rw-r--r--include/event_object_movement.h4
-rw-r--r--include/event_scripts.h12
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/gflib.h18
-rw-r--r--include/global.fieldmap.h6
-rw-r--r--include/graphics.h15
-rw-r--r--include/item_menu.h33
-rw-r--r--include/item_menu_icons.h18
-rw-r--r--include/link.h1
-rw-r--r--include/link_rfu.h38
-rw-r--r--include/map_name_popup.h1
-rw-r--r--include/menu_helpers.h4
-rw-r--r--include/mevent.h3
-rw-r--r--include/mevent_server.h1
-rw-r--r--include/mystery_gift_menu.h3
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokemon.h150
-rw-r--r--include/pokemon_jump.h1
-rw-r--r--include/rfu_union_tool.h17
-rw-r--r--include/save_location.h1
-rw-r--r--include/strings.h29
-rw-r--r--include/teachy_tv.h10
-rw-r--r--include/tm_case.h12
-rw-r--r--include/union_room.h109
-rw-r--r--include/union_room_chat.h1
-rw-r--r--include/union_room_message.h114
53 files changed, 640 insertions, 299 deletions
diff --git a/include/bag.h b/include/bag.h
index f82531778..fec9f67bf 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -1,18 +1,20 @@
#ifndef GUARD_BAG_H
#define GUARD_BAG_H
-void sub_810B858(void);
-void sub_810B8F0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 colorIdx);
-void sub_810B958(const u8 * str);
-void sub_810B994(void);
-u8 sub_810B9DC(u8 a0, u8 a1);
-void sub_810BA3C(u8 a0);
-u8 sub_810BA70(u8 a0);
-void sub_810BA9C(u8 a0);
-u8 sub_810BAD8(u8 a0);
-void sub_810BAE8(u8 taskId, const struct YesNoFuncTable * ptrs);
-void sub_810BB14(u8 taskId, const struct YesNoFuncTable * ptrs);
-void sub_810BB40(void);
-void sub_810BB74(u8 windowId);
+#include "menu_helpers.h"
+
+void InitBagWindows(void);
+void BagPrintTextOnWindow(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+void BagPrintTextOnWin1CenteredColor0(const u8 * str, u8 unused);
+void BagDrawDepositItemTextBox(void);
+u8 ShowBagWindow(u8 whichWindow, u8 nItems);
+void HideBagWindow(u8 whichWindow);
+u8 OpenBagWindow(u8 whichWindow);
+void CloseBagWindow(u8 whichWindow);
+u8 GetBagWindow(u8 whichWindow);
+void BagCreateYesNoMenuBottomRight(u8 taskId, const struct YesNoFuncTable * ptrs);
+void BagCreateYesNoMenuTopRight(u8 taskId, const struct YesNoFuncTable * ptrs);
+void BagPrintMoneyAmount(void);
+void BagDrawTextBoxOnWindow(u8 windowId);
#endif //GUARD_BAG_H
diff --git a/include/battle.h b/include/battle.h
index bed12204f..c9534745d 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -45,7 +45,6 @@
#define B_ACTION_NONE 0xFF
#define MAX_TRAINER_ITEMS 4
-#define MAX_MON_MOVES 4
// array entries for battle communication
#define MULTIUSE_STATE 0x0
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 06a0e2957..412856353 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_CONTROLLERS_H
#include "global.h"
+#include "battle.h"
enum
{
diff --git a/include/berry_crush.h b/include/berry_crush.h
new file mode 100644
index 000000000..2583aba61
--- /dev/null
+++ b/include/berry_crush.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_CRUSH_H
+#define GUARD_BERRY_CRUSH_H
+
+void sub_814B754(MainCallback callback);
+
+#endif //GUARD_BERRY_CRUSH_H
diff --git a/include/cable_club.h b/include/cable_club.h
index 5375c2210..c1dbab1a5 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -10,5 +10,6 @@
// Exported ROM declarations
void sub_8081A90(u8 taskId);
u8 sub_8081150(void);
+void sub_8081668(void);
#endif //GUARD_CABLE_CLUB_H
diff --git a/include/constants/daycare.h b/include/constants/daycare.h
new file mode 100644
index 000000000..103f920f2
--- /dev/null
+++ b/include/constants/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_CONSTANTS_H
+#define GUARD_DAYCARE_CONSTANTS_H
+
+// Parent compatability scores
+#define PARENTS_INCOMPATIBLE 0
+#define PARENTS_LOW_COMPATIBILITY 20
+#define PARENTS_MED_COMPATABILITY 50
+#define PARENTS_MAX_COMPATABILITY 70
+
+// Daycare state
+#define DAYCARE_NO_MONS 0
+#define DAYCARE_EGG_WAITING 1
+#define DAYCARE_ONE_MON 2
+#define DAYCARE_TWO_MONS 3
+
+#define INHERITED_IV_COUNT 3
+#define EGG_HATCH_LEVEL 5
+#define EGG_GENDER_MALE 0x8000 // used to create a male egg from a female-only parent species (e.g. Nidoran)
+
+#define DAYCARE_LEVEL_MENU_EXIT 5
+#define DAYCARE_EXITED_LEVEL_MENU 2 // would be redundant with above if GF had used the same value
+
+// Array buffers
+#define EGG_MOVES_ARRAY_COUNT 10
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+
+#endif //GUARD_DAYCARE_CONSTANTS_H
diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h
index 6a4405b65..bf75a47cc 100644
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -1,6 +1,7 @@
#ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
#define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
+// FIXME: Different in FRLG
#define MOVEMENT_TYPE_NONE 0x0
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
#define MOVEMENT_TYPE_WANDER_AROUND 0x2
@@ -239,8 +240,10 @@
#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
#define MOVEMENT_ACTION_FIGURE_8 0x9B
-#define MOVEMENT_ACTION_FLY_UP 0x9C
-#define MOVEMENT_ACTION_FLY_DOWN 0x9D
+
+// These two are verified correct in FRLG
+#define MOVEMENT_ACTION_FLY_UP 0xA4
+#define MOVEMENT_ACTION_FLY_DOWN 0xA5
#define MOVEMENT_ACTION_STEP_END 0xFE
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 982c90fcc..26ffa8a7c 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -104,14 +104,14 @@
#define FLAG_HIDE_DOJO_HITMONLEE_BALL 0x060
#define FLAG_HIDE_DOJO_HITMONCHAN_BALL 0x061
#define FLAG_HIDE_CINNABAR_BILL 0x062
-#define FLAG_HIDE_UNION_ROOM_1 0x063
-#define FLAG_HIDE_UNION_ROOM_2 0x064
-#define FLAG_HIDE_UNION_ROOM_3 0x065
-#define FLAG_HIDE_UNION_ROOM_4 0x066
-#define FLAG_HIDE_UNION_ROOM_5 0x067
-#define FLAG_HIDE_UNION_ROOM_6 0x068
-#define FLAG_HIDE_UNION_ROOM_7 0x069
-#define FLAG_HIDE_UNION_ROOM_8 0x06A
+#define FLAG_HIDE_UNION_ROOM_PLAYER_1 0x063
+#define FLAG_HIDE_UNION_ROOM_PLAYER_2 0x064
+#define FLAG_HIDE_UNION_ROOM_PLAYER_3 0x065
+#define FLAG_HIDE_UNION_ROOM_PLAYER_4 0x066
+#define FLAG_HIDE_UNION_ROOM_PLAYER_5 0x067
+#define FLAG_HIDE_UNION_ROOM_PLAYER_6 0x068
+#define FLAG_HIDE_UNION_ROOM_PLAYER_7 0x069
+#define FLAG_HIDE_UNION_ROOM_PLAYER_8 0x06A
#define FLAG_HIDE_CINNABAR_SEAGALLOP 0x06B
#define FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT 0x06C
#define FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER 0x06D
@@ -450,7 +450,7 @@
#define FLAG_HIDE_CERULEAN_CAVE_2F_ULTRA_BALL 0x1B6
#define FLAG_HIDE_CERULEAN_CAVE_B1F_MAX_REVIVE 0x1B7
#define FLAG_HIDE_CERULEAN_CAVE_B1F_ULTRA_BALL 0x1B8
-#define FLAG_HIDE_FUCHSIA_CITY_BUILDING1_RARE_CANDY 0x1B9
+#define FLAG_HIDE_FUCHSIA_CITY_WARDENS_HOUSE_RARE_CANDY 0x1B9
#define FLAG_HIDE_TWO_ISLAND_REVIVE 0x1BA
#define FLAG_HIDE_THREE_ISLAND_ZINC 0x1BB
#define FLAG_0x1BC 0x1BC
diff --git a/include/constants/global.h b/include/constants/global.h
index 420a9da71..77ef6f203 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -36,6 +36,7 @@
#define MALE 0
#define FEMALE 1
+#define GENDER_COUNT 2
#define OPTIONS_BUTTON_MODE_HELP 0
#define OPTIONS_BUTTON_MODE_LR 1
@@ -59,6 +60,8 @@
#define NUM_BAG_POCKETS 5
+#define MAX_MON_MOVES 4
+
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
diff --git a/include/constants/item_menu.h b/include/constants/item_menu.h
new file mode 100644
index 000000000..d173b9212
--- /dev/null
+++ b/include/constants/item_menu.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_CONSTANTS_ITEM_MENU_H
+#define GUARD_CONSTANTS_ITEM_MENU_H
+
+#define OPEN_BAG_ITEMS 0
+#define OPEN_BAG_KEYITEMS 1
+#define OPEN_BAG_POKEBALLS 2
+#define OPEN_BAG_LAST 3
+
+#define ITEMMENULOCATION_FIELD 0
+#define ITEMMENULOCATION_PARTY 1
+#define ITEMMENULOCATION_SHOP 2
+#define ITEMMENULOCATION_ITEMPC 3
+#define ITEMMENULOCATION_PCBOX 4
+#define ITEMMENULOCATION_BATTLE 5
+#define ITEMMENULOCATION_OLD_MAN 6
+#define ITEMMENULOCATION_TTVSCR_STATUS 7
+#define ITEMMENULOCATION_TTVSCR_CATCHING 8
+#define ITEMMENULOCATION_TTVSCR_REGISTER 9
+#define ITEMMENULOCATION_TTVSCR_TMS 10
+#define ITEMMENULOCATION_LAST 11
+
+#define ITEMMENUACTION_USE 0
+#define ITEMMENUACTION_TOSS 1
+#define ITEMMENUACTION_REGISTER 2
+#define ITEMMENUACTION_GIVE 3
+#define ITEMMENUACTION_CANCEL 4
+#define ITEMMENUACTION_BATTLE_USE 5
+#define ITEMMENUACTION_CHECK 6
+#define ITEMMENUACTION_OPEN 7
+#define ITEMMENUACTION_OPEN_BERRIES 8
+#define ITEMMENUACTION_WALK 9
+#define ITEMMENUACTION_DESELECT 10
+#define ITEMMENUACTION_DUMMY 11
+
+#endif //GUARD_CONSTANTS_ITEM_MENU_H
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index a9d40220f..657d531e8 100644
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -180,10 +180,10 @@
#define LAYOUT_CELADON_CITY_DEPARTMENT_STORE_4F 195
#define LAYOUT_CELADON_CITY_DEPARTMENT_STORE_5F 196
#define LAYOUT_CELADON_CITY_DEPARTMENT_STORE_ROOF 197
-#define LAYOUT_SAFARI_ZONE_BUILDING 198
+#define LAYOUT_SAFARI_ZONE_REST_HOUSE 198
#define LAYOUT_SAFARI_ZONE_SECRET_HOUSE 199
-#define LAYOUT_FUCHSIA_CITY_ZOO_BUILDING 200
-#define LAYOUT_FUCHSIA_CITY_BUILDING1 201
+#define LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_OFFICE 200
+#define LAYOUT_FUCHSIA_CITY_WARDENS_HOUSE 201
#define LAYOUT_FUCHSIA_CITY_HOUSE2 202
#define LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE 203
#define LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_LOUNGE 204
@@ -260,8 +260,8 @@
#define LAYOUT_ROUTE5_POKEMON_DAY_CARE 275
#define LAYOUT_VIRIDIAN_CITY_HOUSE1 276
#define LAYOUT_FOUR_ISLAND_POKEMON_DAY_CARE 277
-#define LAYOUT_UNUSED_LAYOUT_833B6EC 278
-#define LAYOUT_UNUSED_LAYOUT_833BE30 279
+#define LAYOUT_SEAFOAM_ISLANDS_B3F_CURRENT_STOPPED 278
+#define LAYOUT_SEAFOAM_ISLANDS_B4F_CURRENT_STOPPED 279
#define LAYOUT_MT_EMBER_EXTERIOR 280
#define LAYOUT_MT_EMBER_SUMMIT 281
#define LAYOUT_MT_EMBER_SUMMIT_PATH_1F 282
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 4d37b0dc8..0cc1c27fb 100644
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -76,10 +76,10 @@
#define MAP_SAFARI_ZONE_EAST (64 | (1 << 8))
#define MAP_SAFARI_ZONE_NORTH (65 | (1 << 8))
#define MAP_SAFARI_ZONE_WEST (66 | (1 << 8))
-#define MAP_SAFARI_ZONE_BUILDING1 (67 | (1 << 8))
-#define MAP_SAFARI_ZONE_BUILDING2 (68 | (1 << 8))
-#define MAP_SAFARI_ZONE_BUILDING3 (69 | (1 << 8))
-#define MAP_SAFARI_ZONE_BUILDING4 (70 | (1 << 8))
+#define MAP_SAFARI_ZONE_CENTER_REST_HOUSE (67 | (1 << 8))
+#define MAP_SAFARI_ZONE_EAST_REST_HOUSE (68 | (1 << 8))
+#define MAP_SAFARI_ZONE_NORTH_REST_HOUSE (69 | (1 << 8))
+#define MAP_SAFARI_ZONE_WEST_REST_HOUSE (70 | (1 << 8))
#define MAP_SAFARI_ZONE_SECRET_HOUSE (71 | (1 << 8))
#define MAP_CERULEAN_CAVE_1F (72 | (1 << 8))
#define MAP_CERULEAN_CAVE_2F (73 | (1 << 8))
@@ -342,12 +342,12 @@
// Map Group 11
#define MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE (0 | (11 << 8))
#define MAP_FUCHSIA_CITY_MART (1 | (11 << 8))
-#define MAP_FUCHSIA_CITY_ZOO_BUILDING (2 | (11 << 8))
+#define MAP_FUCHSIA_CITY_SAFARI_ZONE_OFFICE (2 | (11 << 8))
#define MAP_FUCHSIA_CITY_GYM (3 | (11 << 8))
#define MAP_FUCHSIA_CITY_HOUSE1 (4 | (11 << 8))
#define MAP_FUCHSIA_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
#define MAP_FUCHSIA_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
-#define MAP_FUCHSIA_CITY_BUILDING1 (7 | (11 << 8))
+#define MAP_FUCHSIA_CITY_WARDENS_HOUSE (7 | (11 << 8))
#define MAP_FUCHSIA_CITY_HOUSE2 (8 | (11 << 8))
#define MAP_FUCHSIA_CITY_HOUSE3 (9 | (11 << 8))
diff --git a/include/constants/menu.h b/include/constants/menu.h
index 6d72787dc..aed98dec4 100644
--- a/include/constants/menu.h
+++ b/include/constants/menu.h
@@ -78,4 +78,35 @@
#define LISTMENU_BERRY_POWDER 5
#define LISTMENU_TRAINER_TOWER_FLOORS 6
+// Std String Ids
+#define STDSTRING_COOL 0
+#define STDSTRING_BEAUTY 1
+#define STDSTRING_CUTE 2
+#define STDSTRING_SMART 3
+#define STDSTRING_TOUGH 4
+#define STDSTRING_COOL2 5
+#define STDSTRING_BEAUTY2 6
+#define STDSTRING_CUTE2 7
+#define STDSTRING_SMART2 8
+#define STDSTRING_TOUGH2 9
+#define STDSTRING_ITEMS 10
+#define STDSTRING_KEY_ITEMS 11
+#define STDSTRING_POKEBALLS 12
+#define STDSTRING_TMHMS 13
+#define STDSTRING_BERRIES 14
+#define STDSTRING_BOULDER_BADGE 15
+#define STDSTRING_CASCADE_BADGE 16
+#define STDSTRING_THUNDER_BADGE 17
+#define STDSTRING_RAINBOW_BADGE 18
+#define STDSTRING_SOUL_BADGE 19
+#define STDSTRING_MARSH_BADGE 20
+#define STDSTRING_VOLCANO_BADGE 21
+#define STDSTRING_EARTH_BADGE 22
+#define STDSTRING_COINS 23
+#define STDSTRING_ITEMS_POCKET 24
+#define STDSTRING_KEY_ITEMS_POCKET 25
+#define STDSTRING_POKEBALLS_POCKET 26
+#define STDSTRING_TM_CASE 27
+#define STDSTRING_BERRY_POUCH 28
+
#endif //GUARD_CONSTANTS_MENU_H
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index c664290d5..f2bf4b865 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -1,6 +1,9 @@
#ifndef GUARD_METATILE_LABELS_H
#define GUARD_METATILE_LABELS_H
+// General
+#define METATILE_General_CalmWater 0x12B
+
// Pokemon Mansion
#define METATILE_PokemonMansion_Floor 0x284
#define METATILE_PokemonMansion_Floor_ShadeFull 0x285
@@ -34,4 +37,7 @@
#define METATILE_PokemonMansion_Statue_RedEyes_Shade 0x34E
#define METATILE_PokemonMansion_Statue_RedEyes_Basement 0x34F
+// gTileset_82D504C. Below metatile probably needs generic name
+#define METATILE_MtEmber_CaveEntrance 0x346
+
#endif // GUARD_METATILE_LABELS_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index e394a8fb4..a8009f1ff 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -1,6 +1,97 @@
#ifndef GUARD_CONSTANTS_POKEMON_H
#define GUARD_CONSTANTS_POKEMON_H
+// For (Set|Get)(Box)?MonData
+#define MON_DATA_PERSONALITY 0
+#define MON_DATA_OT_ID 1
+#define MON_DATA_NICKNAME 2
+#define MON_DATA_LANGUAGE 3
+#define MON_DATA_SANITY_IS_BAD_EGG 4
+#define MON_DATA_SANITY_HAS_SPECIES 5
+#define MON_DATA_SANITY_IS_EGG 6
+#define MON_DATA_OT_NAME 7
+#define MON_DATA_MARKINGS 8
+#define MON_DATA_CHECKSUM 9
+#define MON_DATA_ENCRYPT_SEPARATOR 10
+#define MON_DATA_SPECIES 11
+#define MON_DATA_HELD_ITEM 12
+#define MON_DATA_MOVE1 13
+#define MON_DATA_MOVE2 14
+#define MON_DATA_MOVE3 15
+#define MON_DATA_MOVE4 16
+#define MON_DATA_PP1 17
+#define MON_DATA_PP2 18
+#define MON_DATA_PP3 19
+#define MON_DATA_PP4 20
+#define MON_DATA_PP_BONUSES 21
+#define MON_DATA_COOL 22
+#define MON_DATA_BEAUTY 23
+#define MON_DATA_CUTE 24
+#define MON_DATA_EXP 25
+#define MON_DATA_HP_EV 26
+#define MON_DATA_ATK_EV 27
+#define MON_DATA_DEF_EV 28
+#define MON_DATA_SPEED_EV 29
+#define MON_DATA_SPATK_EV 30
+#define MON_DATA_SPDEF_EV 31
+#define MON_DATA_FRIENDSHIP 32
+#define MON_DATA_SMART 33
+#define MON_DATA_POKERUS 34
+#define MON_DATA_MET_LOCATION 35
+#define MON_DATA_MET_LEVEL 36
+#define MON_DATA_MET_GAME 37
+#define MON_DATA_POKEBALL 38
+#define MON_DATA_HP_IV 39
+#define MON_DATA_ATK_IV 40
+#define MON_DATA_DEF_IV 41
+#define MON_DATA_SPEED_IV 42
+#define MON_DATA_SPATK_IV 43
+#define MON_DATA_SPDEF_IV 44
+#define MON_DATA_IS_EGG 45
+#define MON_DATA_ABILITY_NUM 46
+#define MON_DATA_TOUGH 47
+#define MON_DATA_SHEEN 48
+#define MON_DATA_OT_GENDER 49
+#define MON_DATA_COOL_RIBBON 50
+#define MON_DATA_BEAUTY_RIBBON 51
+#define MON_DATA_CUTE_RIBBON 52
+#define MON_DATA_SMART_RIBBON 53
+#define MON_DATA_TOUGH_RIBBON 54
+#define MON_DATA_STATUS 55
+#define MON_DATA_LEVEL 56
+#define MON_DATA_HP 57
+#define MON_DATA_MAX_HP 58
+#define MON_DATA_ATK 59
+#define MON_DATA_DEF 60
+#define MON_DATA_SPEED 61
+#define MON_DATA_SPATK 62
+#define MON_DATA_SPDEF 63
+#define MON_DATA_MAIL 64
+#define MON_DATA_SPECIES2 65
+#define MON_DATA_IVS 66
+#define MON_DATA_CHAMPION_RIBBON 67
+#define MON_DATA_WINNING_RIBBON 68
+#define MON_DATA_VICTORY_RIBBON 69
+#define MON_DATA_ARTIST_RIBBON 70
+#define MON_DATA_EFFORT_RIBBON 71
+#define MON_DATA_GIFT_RIBBON_1 72
+#define MON_DATA_GIFT_RIBBON_2 73
+#define MON_DATA_GIFT_RIBBON_3 74
+#define MON_DATA_GIFT_RIBBON_4 75
+#define MON_DATA_GIFT_RIBBON_5 76
+#define MON_DATA_GIFT_RIBBON_6 77
+#define MON_DATA_GIFT_RIBBON_7 78
+#define MON_DATA_FATEFUL_ENCOUNTER 79
+#define MON_DATA_OBEDIENCE 80
+#define MON_DATA_KNOWN_MOVES 81
+#define MON_DATA_RIBBON_COUNT 82
+#define MON_DATA_RIBBONS 83
+#define MON_DATA_ATK2 84
+#define MON_DATA_DEF2 85
+#define MON_DATA_SPEED2 86
+#define MON_DATA_SPATK2 87
+#define MON_DATA_SPDEF2 88
+
// Pokemon types
#define TYPE_NORMAL 0x00
#define TYPE_FIGHTING 0x01
@@ -40,6 +131,8 @@
#define EGG_GROUP_DRAGON 14
#define EGG_GROUP_UNDISCOVERED 15
+#define EGG_GROUPS_PER_MON 2
+
// Pokemon natures
#define NATURE_HARDY 0
#define NATURE_LONELY 1
@@ -91,8 +184,33 @@
#define PLAYER_HAS_ONE_MON 0x1
#define PLAYER_HAS_ONE_USABLE_MON 0x2
+#define MAX_LEVEL 100
+
+#define OT_ID_RANDOM_NO_SHINY 2
+#define OT_ID_PRESET 1
+#define OT_ID_PLAYER_ID 0
+
+#define MON_GIVEN_TO_PARTY 0x0
+#define MON_GIVEN_TO_PC 0x1
+#define MON_CANT_GIVE 0x2
+
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
+#define PARTY_SIZE 6
+#define MAX_TOTAL_EVS 510
+#define UNOWN_FORM_COUNT 28
+#define MAX_MON_LEVEL 100
+
#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
index bd087bd60..78dab242c 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map.h
@@ -206,6 +206,8 @@
#define MAPSEC_SPECIAL_AREA 0xC4
#define MAPSEC_NONE 0xC5
-#define MAPSEC_IN_GAME_TRADE 0xFE
+#define METLOC_SPECIAL_EGG 0xFD
+#define METLOC_IN_GAME_TRADE 0xFE
+#define METLOC_FATEFUL_ENCOUNTER 0xFF
#endif //GUARD_CONSTANTS_REGION_MAP_H
diff --git a/include/data.h b/include/data.h
index 72e6b66fc..f308b044c 100644
--- a/include/data.h
+++ b/include/data.h
@@ -57,7 +57,7 @@ extern const struct SpriteFrameImage gUnknown_82346D8[];
extern const struct SpriteFrameImage gUnknown_82346F8[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Red[];
extern const struct SpriteFrameImage gTrainerBackPicTable_Leaf[];
-extern const struct SpriteFrameImage gTrainerBackPicTable_PokeDude[];
+extern const struct SpriteFrameImage gTrainerBackPicTable_Pokedude[];
extern const struct SpriteFrameImage gTrainerBackPicTable_OldMan[];
extern const struct SpriteFrameImage gTrainerBackPicTable_RSBrendan[];
extern const struct SpriteFrameImage gTrainerBackPicTable_RSMay[];
diff --git a/include/daycare.h b/include/daycare.h
index 08ca11187..71eada93e 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -3,8 +3,6 @@
#include "global.h"
-#define EGG_HATCH_LEVEL 5
-
u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h
new file mode 100644
index 000000000..59736ba7a
--- /dev/null
+++ b/include/dodrio_berry_picking.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_DODRIO_BERRY_PICKING_H
+#define GUARD_DODRIO_BERRY_PICKING_H
+
+void sub_81507FC(u16 species, MainCallback callback);
+
+#endif //GUARD_DODRIO_BERRY_PICKING_H
diff --git a/include/event_object_80688E4.h b/include/event_object_80688E4.h
index cee8ff707..36040e0a5 100644
--- a/include/event_object_80688E4.h
+++ b/include/event_object_80688E4.h
@@ -6,5 +6,10 @@
void FreezeObjectEvents(void);
void FreezeObjectEvent(struct ObjectEvent *);
void FreezeObjectEventsExceptOne(u8 objEventId);
+void sub_8069124(u8 a0, bool8 a1);
+u32 sub_806916C(u8 a0);
+void sub_80691A4(u8 a0, u8 a1);
+void sub_8069094(u8 a0, u8 a1);
+bool32 sub_8069294(u8 a0);
#endif // GUARD_EVENT_OBJECT_80688E4_H
diff --git a/include/event_object_8097404.h b/include/event_object_8097404.h
index 77781943e..23fce9576 100644
--- a/include/event_object_8097404.h
+++ b/include/event_object_8097404.h
@@ -14,7 +14,7 @@ extern void *gUnknown_020375B8;
// Exported ROM declarations
void sub_8097AC8(struct Sprite *);
-void npc_sync_anim_pause_bits(struct ObjectEvent *);
+void UnfreezeObjectEvent(struct ObjectEvent *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
u8 sub_8097F78(struct ObjectEvent *);
bool8 obj_npc_ministep(struct Sprite *sprite);
diff --git a/include/event_object_lock.h b/include/event_object_lock.h
index c5c32857b..5c65585b5 100644
--- a/include/event_object_lock.h
+++ b/include/event_object_lock.h
@@ -11,5 +11,6 @@ void sub_8098630(void);
bool8 sub_8098734(void);
void sub_80696C0(void);
bool8 walkrun_is_standing_still(void);
+void sub_80696F0(void);
#endif // GUARD_EVENT_OBJECT_LOCK_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index b81a61664..f2e7bd325 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -47,7 +47,7 @@ void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);
void SpawnObjectEventsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
-u8 show_sprite(u8, u8, u8);
+u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
@@ -82,7 +82,7 @@ bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
-void ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
+bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
void npc_coords_shift_still(struct ObjectEvent *);
void sub_805FE7C(struct ObjectEvent *, u8);
void SetTrainerMovementType(struct ObjectEvent *, u8);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index b5e355484..54eb2b2a9 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1148,10 +1148,10 @@ extern const u8 EventScript_FldEffStrength[];
extern const u8 EventScript_FailSweetScent[];
extern const u8 EventScript_FldEffRockSmash[];
-extern const u8 EventScript_SafariTimesUp[];
-extern const u8 EventScript_SafariRetire[];
-extern const u8 EventScript_SafariWarpOut[];
-extern const u8 EventScript_SafariOutOfBalls[];
+extern const u8 SafariZone_EventScript_TimesUp[];
+extern const u8 SafariZone_EventScript_RetirePrompt[];
+extern const u8 SafariZone_EventScript_OutOfBallsMidBattle[];
+extern const u8 SafariZone_EventScript_OutOfBalls[];
extern const u8 EventScript_ItemfinderDigUpUnderfootItem[];
@@ -1162,7 +1162,7 @@ extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
extern const u8 gUnknown_81A4EB4[];
-extern const u8 EventScript_1C555B[];
+extern const u8 Test_EventScript_Sign[];
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
@@ -1195,4 +1195,6 @@ extern const u8 Text_1A5D31[];
extern const u8 Text_1A5D6E[];
extern const u8 Text_1A5DB1[];
+extern const u8 EventScript_BagItemCanBeRegistered[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index ecb622de5..57a2fab66 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -7,5 +7,6 @@ extern u32 gUnknown_3005078;
void RestartWildEncounterImmunitySteps(void);
void ClearPoisonStepCounter(void);
+void SetCableClubWarp(void);
#endif //GUARD_FIELD_CONTROL_AVATAR_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 22849a37d..d27d0e54a 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -17,6 +17,8 @@ void FieldCallback_ReturnToEventScript2(void);
void sub_807DC00(void);
void FadeTransition_FadeInOnReturnToStartMenu(void);
+void sub_807DCE4(void);
+
bool32 sub_807E418(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index ec1a077be..a69ec6155 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -35,5 +35,6 @@ bool32 sub_805DAD0(void);
bool32 sub_805DC24(void);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerSurfingNorth(void);
+void player_get_pos_including_state_based_drift(s16 *x, s16 *y);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 2709a7298..de2543edb 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -3,7 +3,7 @@
#include "global.h"
-void fade_screen(u8, s8);
+void FadeScreen(u8, s8);
void SetSav1Weather(u32);
u8 GetSav1Weather(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 1560a0841..91a45d8c5 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -31,5 +31,6 @@ void sub_8059948(u8 a0, u8 a1);
void save_serialize_map(void);
u32 sub_8058F1C(u32 original, u8 bit);
u32 sub_8058F48(s16 x, s16 y, u8 z);
+void sub_8059024(s32 x, s32 y, bool32 arg2);
#endif //GUARD_FIELDMAP_H
diff --git a/include/gflib.h b/include/gflib.h
new file mode 100644
index 000000000..a6dfc62df
--- /dev/null
+++ b/include/gflib.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_GFLIB_H
+#define GUARD_GFLIB_H
+
+#include "global.h"
+
+#include "bg.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "dma3.h"
+#include "malloc.h"
+#include "sound.h"
+#include "text.h"
+#include "sprite.h"
+#include "window.h"
+#include "blit.h"
+#include "string_util.h"
+
+#endif //GUARD_GFLIB_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4402d5042..01cd992ec 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -275,9 +275,9 @@ enum
struct PlayerAvatar /* 0x202E858 */
{
/*0x00*/ u8 flags;
- /*0x01*/ u8 bike;
- /*0x02*/ u8 running2;
- /*0x03*/ u8 running1;
+ /*0x01*/ u8 unk1; // used to be bike, but it's not that in Emerald and probably isn't here either. maybe transition flags?
+ /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving.
+ /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning.
/*0x04*/ u8 spriteId;
/*0x05*/ u8 objectEventId;
/*0x06*/ u8 unk6;
diff --git a/include/graphics.h b/include/graphics.h
index a668364bd..e87acb556 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1,7 +1,3 @@
-//
-// Created by scott on 10/21/2017.
-//
-
#ifndef GUARD_GRAPHICS_H
#define GUARD_GRAPHICS_H
@@ -2656,7 +2652,7 @@ extern const u32 gTrainerPalette_RSBrendan1[];
extern const u32 gTrainerPalette_RSMay1[];
extern const u32 gTrainerPalette_LeafBackPic[];
extern const u32 gTrainerPalette_RedBackPic[];
-extern const u32 gTrainerPalette_PokeDudeBackPic[];
+extern const u32 gTrainerPalette_PokedudeBackPic[];
extern const u32 gTrainerPalette_OldManBackPic[];
extern const u32 gTrainerPalette_PokemonBreederM[];
extern const u32 gTrainerPalette_RSPokemonBreederF[];
@@ -4358,7 +4354,7 @@ extern const u8 gBerryPouchBg1Tilemap[];
extern const u8 gTrainerBackPic_Red[];
extern const u8 gTrainerBackPic_Leaf[];
-extern const u8 gTrainerBackPic_PokeDude[];
+extern const u8 gTrainerBackPic_Pokedude[];
extern const u8 gTrainerBackPic_OldMan[];
extern const u8 gTrainerBackPic_RSBrendan[];
extern const u8 gTrainerBackPic_RSMay[];
@@ -4861,4 +4857,11 @@ extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
extern const u16 gUnknown_8D12404[];
+// item_menu
+extern const u32 gUnknown_8E830CC[];
+extern const u32 gUnknown_8E832C0[];
+extern const u32 gUnknown_8E83444[];
+extern const u32 gBagBgPalette[];
+extern const u32 gBagBgPalette_FemaleOverride[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 187674e83..27bd73e72 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -3,6 +3,7 @@
#include "global.h"
#include "task.h"
+#include "constants/item_menu.h"
// Exported type declarations
@@ -10,15 +11,15 @@
struct BagStruct
{
- void (*bagCallback)(void);
+ MainCallback bagCallback;
u8 location;
- u8 pocket;
- u16 unk6;
- u8 cursorPosition[6];
- u8 scrollPosition[6];
+ bool8 bagOpen;
+ u16 pocket;
+ u16 itemsAbove[3];
+ u16 cursorPos[3];
};
-extern struct BagStruct gUnknown_203ACFC;
+extern struct BagStruct gBagMenuState;
extern u16 gSpecialVar_ItemId;
@@ -26,19 +27,19 @@ extern u16 gSpecialVar_ItemId;
void sub_81AAC50(void);
void sub_81AAC70(void);
void CB2_SetUpReshowBattleScreenAfterMenu(void);
-void sub_81089BC(void);
-void sub_810B108(u8);
+void ResetBagCursorPositions(void);
+void InitPokedudeBag(u8);
void CB2_BagMenuFromStartMenu(void);
-void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
+void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_);
void ItemMenu_StartFadeToExitCallback(u8 taskId);
-void sub_8108CB4(void);
+void Bag_BeginCloseWin0Animation(void);
void ItemMenu_SetExitCallback(void (*)(void));
-void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
-void sub_810A1F8(u8 taskId);
-void sub_8107ECC(void);
-void sub_810AF74(void);
-void sub_8108DC8(u8 pocketId);
-void sub_81089F4(u8 pocketId);
+void DisplayItemMessageInBag(u8 taskId, u8 fontId, const u8 * string, TaskFunc followUpFunc);
+void Task_ReturnToBagFromContextMenu(u8 taskId);
+void CB2_BagMenuFromBattle(void);
+void InitOldManBag(void);
+void Pocket_CalculateNItemsAndMaxShowed(u8 pocketId);
+void PocketCalculateInitialCursorPosAndItemsAbove(u8 pocketId);
void GoToBagMenu(u8 menuType, u8 pocket, MainCallback callback);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index b5b5c6b0b..fd66a9375 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -3,28 +3,26 @@
#include "global.h"
-extern void * gUnknown_2039884;
-
-extern const struct CompressedSpriteSheet gUnknown_83D41E4;
-extern const struct CompressedSpriteSheet gUnknown_83D41EC;
-extern const struct CompressedSpritePalette gUnknown_83D41F4;
+extern const struct CompressedSpriteSheet gSpriteSheet_Backpack;
+extern const struct CompressedSpriteSheet gSpriteSheet_Satchel;
+extern const struct CompressedSpritePalette gSpritePalette_BagOrSatchel;
extern const struct CompressedSpriteSheet gBagSwapSpriteSheet;
extern const struct CompressedSpritePalette gBagSwapSpritePalette;
void ResetItemMenuIconState(void);
-void sub_80985E4(void);
+void ItemMenuIcons_CreateInsertIndicatorBarHidden(void);
void DestroyItemMenuIcon(bool8 a0);
void CreateItemMenuIcon(u16 itemId, bool8 a0);
void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId);
u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
void sub_80989A0(u16 itemId, u8 idx);
-void sub_80986A8(s16 x, u16 y);
-void sub_8098660(u8);
+void ItemMenuIcons_MoveInsertIndicatorBar(s16 x, u16 y);
+void ItemMenuIcons_ToggleInsertIndicatorBarVisibility(bool8 invisible);
void sub_8098528(u8);
void sub_8098580(void);
-const void * sub_8098974(u16 itemId, u8 ptrId);
-void sub_80984FC(u8 animNum);
+const void * GetItemIconGfxPtr(u16 itemId, u8 ptrId);
+void CreateBagOrSatchelSprite(u8 animNum);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/link.h b/include/link.h
index 4175ac97f..770a60f44 100644
--- a/include/link.h
+++ b/include/link.h
@@ -278,5 +278,6 @@ bool8 HandleLinkConnection(void);
void sub_800B0B4(void);
void sub_800B110(u32 who);
void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
+u8 sub_800A8D4(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index bde20c555..790429870 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -233,9 +233,9 @@ void MG_DrawCheckerboardPattern(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
bool8 IsLinkRfuTaskFinished(void);
void DestroyWirelessStatusIndicatorSprite(void);
-void MEvent_CreateTask_CardOrNewsWithFriend(u8);
-void MEvent_CreateTask_CardOrNewsOverWireless(u8);
-void MEvent_CreateTask_Leader(u8);
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
+void MEvent_CreateTask_Leader(u32 arg0);
void sub_80F9E2C(void * data);
u8 sub_8116DE0(void);
void sub_80FBB4C(void);
@@ -288,13 +288,43 @@ bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);
void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
u8 sub_80FEA34(u8 a0, u16 a1);
void sub_80FDA30(u32 a0);
-void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
+void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3);
void LinkRfu_syncVBlank_(void);
s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));
void sub_80FEB3C(void);
void sub_80FAFE0(u8 a0);
bool32 sub_80FA44C(u32 a0);
bool8 sub_80FC1B0(void);
+bool8 sub_80F8F40(void);
+void sub_80F8F5C(void);
+bool32 sub_80FA5D4(void);
+bool32 sub_80FC1CC(void);
+bool32 sub_80F8F7C(bool32 a0);
+bool32 sub_80FA634(u16 a0, const u8 *a1);
+void sub_80FA670(u8 a0, u16 a1, const u8 *a2);
+u32 sub_80FA6FC(u16 a0, const u8 *a1);
+void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2);
+void sub_80FBB8C(u32 a0);
+void sub_80FBD4C(const u8 *ptr, u16 a1);
+void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
+void sub_80FBBD8(void);
+void sub_80FA6BC(void);
+void sub_80FBF54(const u8 *src, u16 trainerId);
+void sub_80FB008(u8 a0, u32 a1, u32 a2);
+void RecordMixTrainerNames(void);
+void sub_80F8CFC();
+void sub_80F8D14();
+void sub_80FAF74(bool32 a0, bool32 a1);
+void ClearAndInitHostRFUtgtGname(void);
+void sub_80F8FA0(void);
+void sub_80FAFA0(u32 type, u32 species, u32 level);
+bool32 sub_80FBB0C(void);
+void sub_80FBC00(void);
+void sub_80FBD6C(u32 a0);
+void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
+bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
+bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
+bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/map_name_popup.h b/include/map_name_popup.h
index c8ce02c30..a7c1234c6 100644
--- a/include/map_name_popup.h
+++ b/include/map_name_popup.h
@@ -4,5 +4,6 @@
#include "global.h"
void CreateMapNamePopupIfNotAlreadyRunning(bool32 palIntoFadedBuffer);
+void DismissMapNamePopup(void);
#endif //GUARD_MAP_NAME_POPUP_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 1e75b336c..d26f50483 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -20,14 +20,14 @@ bool8 sub_80BF748(void);
bool8 MenuHelpers_LinkSomething(void);
void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinatesAndBgCntRegs(void);
-u8 sub_80BF8E4(void);
+u8 GetDialogBoxFontId(void);
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 GetLRKeysPressedAndHeld(void);
bool8 itemid_link_can_give_berry(u16 itemId);
-bool8 itemid_80BF6D8_mail_related(u16 itemId);
+bool8 CanWriteMailHere(u16 itemId);
void ResetVramOamAndBgCntRegs(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/mevent.h b/include/mevent.h
index 81caeb42f..85782f20a 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -70,5 +70,8 @@ void sub_8143D24(void);
u16 sub_81445C0(u32 command);
void sub_8144714(u32 a0, u32 a1);
u16 *GetMEventProfileECWordsMaybe(void);
+void sub_81446C4(void);
+bool32 sub_81446D0(u16 a0);
+u16 GetWonderCardFlagId(void);
#endif //GUARD_MEVENT_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
index b691e9e1f..1e9ef7bef 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -86,6 +86,7 @@ struct mevent_server_cmd
#define SRV_SEND_NEWS {.instr = 14}
#define SRV_BUFFER_SEND {.instr = 15}
#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
+#define SRV_SENDSTR(x, y) {.instr = 20, .flag = x, .parameter = (void *)y}
#define SRV_BUFFER_CARD {.instr = 26}
#define SRV_BUFFER_NEWS {.instr = 27}
#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
index 32624d602..bd790b36e 100644
--- a/include/mystery_gift_menu.h
+++ b/include/mystery_gift_menu.h
@@ -7,5 +7,8 @@ void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);
void c2_mystery_gift(void);
void c2_mystery_gift_e_reader_run(void);
+s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str);
+void MG_DrawTextBorder(u8 windowId);
+u16 GetMysteryGiftBaseBlock(void);
#endif //GUARD_MYSTERY_GIFT_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index c24b63cf9..a7031e56d 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -62,7 +62,8 @@ extern struct WarpData gUnknown_2031DB4;
extern struct WarpData gUnknown_2031DBC;
extern u8 gUnknown_2031DE0;
-extern u8 gUnknown_300502C;
+extern u8 gFieldLinkPlayerCount;
+extern u8 gLocalLinkPlayerId;
void IncrementGameStat(u8 index);
diff --git a/include/party_menu.h b/include/party_menu.h
index cc8889137..a1b85e059 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -68,7 +68,7 @@ void CB2_ChooseMonToGiveItem(void);
void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 a1);
void ClearSelectedPartyOrder(void);
-void sub_81277F4(u8 menuType, MainCallback callback);
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInTutorialBattle(u8 partyAction);
diff --git a/include/pokemon.h b/include/pokemon.h
index 54ea44efd..be0a35877 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -5,144 +5,6 @@
#include "sprite.h"
#include "constants/pokemon.h"
-#define MON_DATA_PERSONALITY 0
-#define MON_DATA_OT_ID 1
-#define MON_DATA_NICKNAME 2
-#define MON_DATA_LANGUAGE 3
-#define MON_DATA_SANITY_IS_BAD_EGG 4
-#define MON_DATA_SANITY_HAS_SPECIES 5
-#define MON_DATA_SANITY_IS_EGG 6
-#define MON_DATA_OT_NAME 7
-#define MON_DATA_MARKINGS 8
-#define MON_DATA_CHECKSUM 9
-#define MON_DATA_ENCRYPT_SEPARATOR 10
-#define MON_DATA_SPECIES 11
-#define MON_DATA_HELD_ITEM 12
-#define MON_DATA_MOVE1 13
-#define MON_DATA_MOVE2 14
-#define MON_DATA_MOVE3 15
-#define MON_DATA_MOVE4 16
-#define MON_DATA_PP1 17
-#define MON_DATA_PP2 18
-#define MON_DATA_PP3 19
-#define MON_DATA_PP4 20
-#define MON_DATA_PP_BONUSES 21
-#define MON_DATA_COOL 22
-#define MON_DATA_BEAUTY 23
-#define MON_DATA_CUTE 24
-#define MON_DATA_EXP 25
-#define MON_DATA_HP_EV 26
-#define MON_DATA_ATK_EV 27
-#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPEED_EV 29
-#define MON_DATA_SPATK_EV 30
-#define MON_DATA_SPDEF_EV 31
-#define MON_DATA_FRIENDSHIP 32
-#define MON_DATA_SMART 33
-#define MON_DATA_POKERUS 34
-#define MON_DATA_MET_LOCATION 35
-#define MON_DATA_MET_LEVEL 36
-#define MON_DATA_MET_GAME 37
-#define MON_DATA_POKEBALL 38
-#define MON_DATA_HP_IV 39
-#define MON_DATA_ATK_IV 40
-#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPEED_IV 42
-#define MON_DATA_SPATK_IV 43
-#define MON_DATA_SPDEF_IV 44
-#define MON_DATA_IS_EGG 45
-#define MON_DATA_ABILITY_NUM 46
-#define MON_DATA_TOUGH 47
-#define MON_DATA_SHEEN 48
-#define MON_DATA_OT_GENDER 49
-#define MON_DATA_COOL_RIBBON 50
-#define MON_DATA_BEAUTY_RIBBON 51
-#define MON_DATA_CUTE_RIBBON 52
-#define MON_DATA_SMART_RIBBON 53
-#define MON_DATA_TOUGH_RIBBON 54
-#define MON_DATA_STATUS 55
-#define MON_DATA_LEVEL 56
-#define MON_DATA_HP 57
-#define MON_DATA_MAX_HP 58
-#define MON_DATA_ATK 59
-#define MON_DATA_DEF 60
-#define MON_DATA_SPEED 61
-#define MON_DATA_SPATK 62
-#define MON_DATA_SPDEF 63
-#define MON_DATA_MAIL 64
-#define MON_DATA_SPECIES2 65
-#define MON_DATA_IVS 66
-#define MON_DATA_CHAMPION_RIBBON 67
-#define MON_DATA_WINNING_RIBBON 68
-#define MON_DATA_VICTORY_RIBBON 69
-#define MON_DATA_ARTIST_RIBBON 70
-#define MON_DATA_EFFORT_RIBBON 71
-#define MON_DATA_GIFT_RIBBON_1 72
-#define MON_DATA_GIFT_RIBBON_2 73
-#define MON_DATA_GIFT_RIBBON_3 74
-#define MON_DATA_GIFT_RIBBON_4 75
-#define MON_DATA_GIFT_RIBBON_5 76
-#define MON_DATA_GIFT_RIBBON_6 77
-#define MON_DATA_GIFT_RIBBON_7 78
-#define MON_DATA_FATEFUL_ENCOUNTER 79
-#define MON_DATA_OBEDIENCE 80
-#define MON_DATA_KNOWN_MOVES 81
-#define MON_DATA_RIBBON_COUNT 82
-#define MON_DATA_RIBBONS 83
-#define MON_DATA_ATK2 84
-#define MON_DATA_DEF2 85
-#define MON_DATA_SPEED2 86
-#define MON_DATA_SPATK2 87
-#define MON_DATA_SPDEF2 88
-
-#define MAX_LEVEL 100
-
-#define OT_ID_RANDOM_NO_SHINY 2
-#define OT_ID_PRESET 1
-#define OT_ID_PLAYER_ID 0
-
-#define MON_GIVEN_TO_PARTY 0x0
-#define MON_GIVEN_TO_PC 0x1
-#define MON_CANT_GIVE 0x2
-
-#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
-#define FRIENDSHIP_EVENT_VITAMIN 0x1
-#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
-#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
-#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
-#define FRIENDSHIP_EVENT_WALKING 0x5
-#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
-#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
-#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
-
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-
-#define NUMBER_OF_MON_TYPES 0x12
-
-#define PARTY_SIZE 6
-#define MAX_TOTAL_EVS 510
-#define NUM_STATS 6
-#define UNOWN_FORM_COUNT 28
-#define MAX_MON_LEVEL 100
-
-
struct PokemonSubstruct0
{
u16 species;
@@ -335,18 +197,6 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
-enum
-{
- STAT_STAGE_HP, // 0
- STAT_STAGE_ATK, // 1
- STAT_STAGE_DEF, // 2
- STAT_STAGE_SPEED, // 3
- STAT_STAGE_SPATK, // 4
- STAT_STAGE_SPDEF, // 5
- STAT_STAGE_ACC, // 6
- STAT_STAGE_EVASION, // 7
-};
-
struct BaseStats
{
/* 0x00 */ u8 baseHP;
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 8623b223a..0e9094752 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -5,5 +5,6 @@
void ResetPokeJumpResults(void);
bool32 IsSpeciesAllowedInPokemonJump(u16 species);
+void sub_8147AA8(u16 species, MainCallback callback);
#endif // GUARD_POKEMON_JUMP_H
diff --git a/include/rfu_union_tool.h b/include/rfu_union_tool.h
new file mode 100644
index 000000000..b8b5cd664
--- /dev/null
+++ b/include/rfu_union_tool.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
+#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
+
+#include "union_room.h"
+
+void sub_811C1C8(void);
+void sub_811BAAC(u8 *spriteIds, s32 arg1);
+void sub_811BB40(u8 *spriteIds);
+void sub_811BB68(void);
+void sub_811BECC(struct UnkStruct_URoom *arg0);
+void sub_811BEDC(struct UnkStruct_URoom *arg0);
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
+u8 ZeroUnionObjWork(struct UnionObj * ptr);
+void sub_811BA78(void);
+
+#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
diff --git a/include/save_location.h b/include/save_location.h
index fb71ab728..c8e362231 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -6,6 +6,7 @@
#define POKECENTER_SAVEWARP (1 << 1)
#define LOBBY_SAVEWARP (1 << 2)
#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
+#define CHAMPION_SAVEWARP (1 << 7)
void TrySetMapSaveWarpStatus(void);
bool32 IsCurMapPokeCenter(void);
diff --git a/include/strings.h b/include/strings.h
index eace8d67e..a57493a9b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -112,8 +112,8 @@ extern const u8 gText_OhNoICantBuyThat[];
extern const u8 gText_HowManyWouldYouLikeToSell[];
extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[];
extern const u8 gText_TurnedOverItemsWorthYen[];
-extern const u8 gPokeDudeText_TMTypes[];
-extern const u8 gPokeDudeText_ReadTMDescription[];
+extern const u8 gPokedudeText_TMTypes[];
+extern const u8 gPokedudeText_ReadTMDescription[];
extern const u8 gFameCheckerText_Cancel[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gFameCheckerText_FameCheckerWillBeClosed[];
@@ -134,7 +134,7 @@ extern const u8 gTeachyTvString_CatchPkmn[];
extern const u8 gTeachyTvString_AboutTMs[];
extern const u8 gTeachyTvString_RegisterItem[];
extern const u8 gTeachyTvString_Cancel[];
-extern const u8 gTeachyTvText_PokeDudeSaysHello[];
+extern const u8 gTeachyTvText_PokedudeSaysHello[];
extern const u8 gTeachyTvText_BattleScript1[];
extern const u8 gTeachyTvText_StatusScript1[];
extern const u8 gTeachyTvText_MatchupsScript1[];
@@ -1038,4 +1038,27 @@ extern const u8 gText_SaveFailedScreen_CheckingBackupMemory[];
extern const u8 gText_SaveFailedScreen_BackupMemoryDamaged[];
extern const u8 gText_SaveFailedScreen_SaveCompleted[];
+// bag
+extern const u8 gText_DepositItem[];
+
+// item_menu
+extern const u8 gOtherText_Register[];
+extern const u8 gOtherText_Walk[];
+extern const u8 gOtherText_Check[];
+extern const u8 gOtherText_Open[];
+extern const u8 gOtherText_Deselect[];
+extern const u8 gText_Items2[];
+extern const u8 gText_PokeBalls2[];
+extern const u8 gText_KeyItems2[];
+extern const u8 gText_CloseBag[];
+extern const u8 gText_CantWriteMailHere[];
+extern const u8 gText_DepositHowManyStrVars1[];
+extern const u8 gText_DepositedStrVar2StrVar1s[];
+extern const u8 gText_NoRoomToStoreItems[];
+
+// union_room_battle
+extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
+extern const u8 gText_RefusedBattle[];
+extern const u8 gText_BattleWasRefused[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
index 36bac6a67..3484f88c1 100644
--- a/include/teachy_tv.h
+++ b/include/teachy_tv.h
@@ -1,6 +1,16 @@
#ifndef GUARD_TEACHY_TV_H
#define GUARD_TEACHY_TV_H
+enum TeachyTvScript
+{
+ TTVSCR_BATTLE,
+ TTVSCR_STATUS,
+ TTVSCR_MATCHUPS,
+ TTVSCR_CATCHING,
+ TTVSCR_TMS,
+ TTVSCR_REGISTER
+};
+
void InitTeachyTvController(u8 mode, void (*cb)());
void CB2_ReturnToTeachyTV(void);
void SetTeachyTvControllerModeToResume(void);
diff --git a/include/tm_case.h b/include/tm_case.h
index f77eae457..22fb021e0 100644
--- a/include/tm_case.h
+++ b/include/tm_case.h
@@ -1,8 +1,18 @@
#ifndef GUARD_TM_CASE_H
#define GUARD_TM_CASE_H
+enum TmCaseType
+{
+ TMCASE_FROMFIELD,
+ TMCASE_FROMPARTYGIVE,
+ TMCASE_FROMMARTSELL,
+ TMCASE_FROMPOKEMONSTORAGEPC,
+ TMCASE_FROMBATTLE,
+ TMCASE_NA
+};
+
void InitTMCase(u8 a0, void (* a1)(void), u8 a2);
void ResetTMCaseCursorPos(void);
-void PokeDude_InitTMCase(void);
+void Pokedude_InitTMCase(void);
#endif //GUARD_TM_CASE_H
diff --git a/include/union_room.h b/include/union_room.h
index d57683a8a..3cb8eb84a 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -2,11 +2,11 @@
#define GUARD_UNION_ROOM_H
#include "global.h"
-#include "librfu.h"
+#include "link_rfu.h"
struct UnkStruct_Shared
{
- struct GFtgtGname field_0;
+ struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];
};
@@ -28,26 +28,27 @@ struct UnkStruct_x20
u8 field_1F;
};
+// These arrays are dynamically allocated but must be
+// represented as structs to match.
+// Don't ask me why.
+
+// FIXME: Find a way around this.
+
struct UnkStruct_Main0
{
- struct UnkStruct_x20 arr[8];
+ struct UnkStruct_x20 arr[0];
};
struct UnkStruct_Main4
{
- struct UnkStruct_x1C arr[5];
-};
-
-struct UnkStruct_Main8
-{
- struct UnkStruct_x20 arr[5];
+ struct UnkStruct_x1C arr[0];
};
struct UnkStruct_Leader
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main8 *field_8;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
+ struct UnkStruct_Main0 * field_8;
u8 state;
u8 textState;
u8 field_E;
@@ -67,8 +68,8 @@ struct UnkStruct_Leader
struct UnkStruct_Group
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
u8 state;
u8 textState;
u8 field_A;
@@ -85,56 +86,56 @@ struct UnkStruct_Group
u8 field_15;
};
-struct UnkStruct_8019BA8
+struct UnionObj
{
- u8 field_0;
- u8 field_1;
- s8 field_2;
- u8 field_3;
+ u8 state;
+ u8 gfxId;
+ s8 animState;
+ u8 schedAnim;
};
struct UnkStruct_URoom
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main0 *field_8;
- struct UnkStruct_Main4 *field_C;
- u16 field_10;
- u16 field_12;
- u8 state;
- u8 stateAfterPrint;
- u8 textState;
- u8 field_17;
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 spriteIds[40];
- u8 field_49;
- u8 field_4A;
- u16 field_4C[6];
- u8 field_58[0x98 - 0x58];
- u16 field_98;
- u16 field_9A[3];
- struct UnkStruct_8019BA8 field_A0[8];
- u8 field_C0[12][15];
- u8 field_174[48];
- u8 field_1A4[200];
+ /* 0x000 */ struct UnkStruct_Main0 * field_0;
+ /* 0x004 */ struct UnkStruct_Main4 * field_4;
+ /* 0x008 */ struct UnkStruct_Main0 * field_8;
+ /* 0x00C */ struct UnkStruct_Main4 * field_C;
+ /* 0x010 */ u16 field_10;
+ /* 0x012 */ u16 field_12;
+ /* 0x014 */ u8 state;
+ /* 0x015 */ u8 stateAfterPrint;
+ /* 0x016 */ u8 textState;
+ /* 0x017 */ u8 field_17;
+ /* 0x018 */ u8 field_18;
+ /* 0x019 */ u8 field_19;
+ /* 0x01A */ u8 field_1A;
+ /* 0x01B */ u8 field_1B;
+ /* 0x01C */ u8 field_1C;
+ /* 0x01D */ u8 field_1D;
+ /* 0x01E */ u8 field_1E;
+ /* 0x01F */ u8 field_1F;
+ /* 0x020 */ u8 field_20;
+ /* 0x021 */ u8 spriteIds[40];
+ /* 0x049 */ u8 field_49;
+ /* 0x04A */ u8 field_4A;
+ /* 0x04C */ u16 field_4C[6];
+ /* 0x058 */ u8 field_58[4][11];
+ /* 0x084 */ u16 field_98;
+ /* 0x086 */ u16 field_9A[3];
+ /* 0x08C */ struct UnionObj unionObjs[8];
+ /* 0x0AC */ u8 trainerCardStrbufs[12][15];
+ /* 0x160 */ u8 field_174[48];
+ /* 0x190 */ u8 field_1A4[200];
};
union UnkUnion_Main
{
- struct UnkStruct_Leader *leader;
- struct UnkStruct_Group *group;
- struct UnkStruct_URoom *uRoom;
+ struct UnkStruct_Leader * leader;
+ struct UnkStruct_Group * group;
+ struct UnkStruct_URoom * uRoom;
};
-struct TradeUnkStruct
+struct UnionRoomTrade
{
u16 field_0;
u16 type;
@@ -153,4 +154,6 @@ extern struct GFtgtGnameSub gUnknown_203B064;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
+void sub_81173C0(u16 battleFlags);
+
#endif //GUARD_UNION_ROOM_H
diff --git a/include/union_room_chat.h b/include/union_room_chat.h
index 17e482525..66daac376 100644
--- a/include/union_room_chat.h
+++ b/include/union_room_chat.h
@@ -2,6 +2,7 @@
#define GUARD_UNION_ROOM_CHAT_H
void sub_801DD98(void);
+void sub_8128420(void);
void copy_strings_to_sav1(void);
#endif // GUARD_UNION_ROOM_CHAT_H
diff --git a/include/union_room_message.h b/include/union_room_message.h
new file mode 100644
index 000000000..b7de673ba
--- /dev/null
+++ b/include/union_room_message.h
@@ -0,0 +1,114 @@
+#ifndef GUARD_UNION_ROOM_MESSAGE_H
+#define GUARD_UNION_ROOM_MESSAGE_H
+
+#include "global.h"
+
+extern const u8 gUnknown_84571AC[];
+extern const u8 gUnknown_84571B0[];
+extern const u8 gUnknown_84571B4[];
+extern const u8 gUnknown_84571B8[];
+extern const u8 gUnknown_84571E0[];
+extern const u8 gUnknown_8457234[];
+extern const u8 gUnknown_8457264[];
+extern const u8 *const gUnknown_845742C[][5];
+extern const u8 gUnknown_845747C[];
+extern const u8 gUnknown_84574A0[];
+extern const u8 gUnknown_84574C4[];
+extern const u8 gUnknown_84574EC[];
+extern const u8 gUnknown_8457514[];
+extern const u8 gUnknown_8457530[];
+extern const u8 gUnknown_8457554[];
+extern const u8 *const gUnknown_8457608[];
+extern const u8 gUnknown_8457610[];
+extern const u8 *const gUnknown_845767C[];
+extern const u8 gUnknown_84576AC[];
+extern const u8 gUnknown_84576C4[];
+extern const u8 gUnknown_8457700[];
+extern const u8 gUnknown_845771C[];
+extern const u8 *const gUnknown_8457754[];
+extern const u8 gUnknown_845777C[];
+extern const u8 gUnknown_84577BC[];
+extern const u8 gUnknown_84577F8[];
+extern const u8 *const gUnknown_8457838[];
+extern const u8 gUnknown_84578BC[];
+extern const u8 *const gUnknown_8457A34[];
+extern const u8 *const gUnknown_8457B04[][2];
+extern const u8 *const gUnknown_8457BCC[];
+extern const u8 *const gUnknown_8457C20[];
+extern const u8 gUnknown_8457C48[];
+extern const u8 gUnknown_8457CA4[];
+extern const u8 gUnknown_8457CF8[];
+extern const u8 gUnknown_8457D44[];
+extern const u8 gUnknown_8457DB8[];
+extern const u8 gUnknown_8457E0C[];
+extern const u8 gUnknown_8457E28[];
+extern const u8 gUnknown_8457E44[];
+extern const u8 gUnknown_8457E60[];
+extern const u8 *const gUnknown_8457F80[][2];
+extern const u8 gUnknown_8457F90[];
+extern const u8 *const gUnknown_84580F4[][4];
+extern const u8 *const gUnknown_8458230[][2][3];
+extern const u8 *const gUnknown_8458314[];
+extern const u8 *const gUnknown_84583B4[];
+extern const u8 *const gUnknown_845842C[];
+extern const u8 gUnknown_8458434[];
+extern const u8 gUnknown_845847C[];
+extern const u8 gUnknown_84584C0[];
+extern const u8 *const gUnknown_8458548[];
+extern const u8 *const gUnknown_84585E8[];
+extern const u8 *const gUnknown_8458758[2][4];
+extern const u8 *const gUnknown_84588BC[2][4];
+extern const u8 *const gUnknown_84589AC[2][2];
+extern const u8 *const gUnknown_8458A78[2][4];
+extern const u8 gUnknown_8458A98[];
+extern const u8 gUnknown_8458AB8[];
+extern const u8 gUnknown_8458B44[];
+extern const u8 gUnknown_8458CD4[];
+extern const u8 gUnknown_8458D1C[];
+extern const u8 gUnknown_8458D54[];
+extern const u8 gUnknown_8458D78[];
+extern const u8 gUnknown_8458D9C[];
+extern const u8 gUnknown_8458DBC[];
+extern const u8 gUnknown_8458DE8[];
+extern const u8 gUnknown_8458E10[];
+extern const u8 gUnknown_8458E70[];
+extern const u8 gUnknown_8458ED0[];
+extern const u8 gUnknown_8458F04[];
+extern const u8 gUnknown_8458F9C[];
+extern const u8 gUnknown_8458FBC[];
+extern const u8 gUnknown_8458FC8[];
+extern const u8 gUnknown_8458FE4[];
+extern const u8 gUnknown_84591DC[];
+extern const u8 *const gUnknown_84591B8[];
+extern const u8 gUnknown_8459238[];
+extern const u8 gUnknown_8459250[];
+extern const u8 gUnknown_845928C[];
+extern const u8 *const gUnknown_845933C[];
+extern const u8 gUnknown_8459344[];
+extern const u8 gUnknown_845934C[];
+extern const u8 gUnknown_8459354[];
+extern const u8 gUnknown_8459360[];
+extern const u8 gUnknown_8459368[];
+extern const u8 gUnknown_8459370[];
+extern const u8 gUnknown_8459378[];
+extern const u8 gUnknown_8459394[];
+extern const u8 gUnknown_84593A4[];
+extern const u8 gUnknown_84593B4[];
+extern const u8 gUnknown_84593C4[];
+extern const u8 gUnknown_84593D4[];
+extern const u8 gUnknown_84593E4[];
+extern const u8 gUnknown_84593F4[];
+extern const u8 gUnknown_84593DC[];
+extern const u8 gUnknown_8459400[];
+extern const u8 gUnknown_8459410[];
+extern const u8 gUnknown_845941C[];
+extern const u8 gUnknown_845942C[];
+extern const u8 gUnknown_8459434[];
+extern const u8 gUnknown_8459440[];
+extern const u8 *const gUnknown_84594B0[];
+extern const u8 gUnknown_84594C4[];
+extern const u8 gUnknown_8459504[];
+extern const u8 *const gUnknown_8459580[];
+extern const u8 gUnknown_8459588[];
+
+#endif //GUARD_UNION_ROOM_MESSAGE_H