summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGriffinR <griffin.richards@comcast.net>2019-10-16 04:22:34 -0400
committerGitHub <noreply@github.com>2019-10-16 04:22:34 -0400
commitb4a9298205ee9355fadd4455a9b8f692dcd3e787 (patch)
tree156f18275a5187ae20fc5f5c3a72d61635f126ec /include
parent20fa13616f3ad2ec2f7d68668b9f386355a10fa7 (diff)
parent60a592a2c32d07d47c892204659a8576017584d1 (diff)
Merge branch 'master' into document-gyms2
Diffstat (limited to 'include')
-rw-r--r--include/battle_anim.h90
-rw-r--r--include/constants/battle_pike.h49
-rw-r--r--include/constants/battle_pyramid.h49
-rw-r--r--include/constants/cable_club.h15
-rwxr-xr-xinclude/constants/event_object_movement_constants.h4
-rw-r--r--include/constants/field_poison.h12
-rw-r--r--include/constants/flags.h14
-rw-r--r--include/constants/party_menu.h52
-rw-r--r--include/constants/pokemon.h1
-rw-r--r--include/constants/trade.h116
-rw-r--r--include/constants/trainer_hill.h2
-rw-r--r--include/constants/tv.h46
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/dodrio_berry_picking.h4
-rw-r--r--include/event_scripts.h6
-rw-r--r--include/field_poison.h8
-rw-r--r--include/field_screen_effect.h2
-rw-r--r--include/global.fieldmap.h41
-rw-r--r--include/global.tv.h47
-rw-r--r--include/graphics.h8
-rw-r--r--include/librfu.h10
-rw-r--r--include/link.h69
-rw-r--r--include/link_rfu.h6
-rw-r--r--include/party_menu.h68
-rw-r--r--include/pokeball.h2
-rw-r--r--include/pokemon_icon.h4
-rw-r--r--include/pokemon_jump.h6
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/trade.h27
-rw-r--r--include/trainer_hill.h2
-rw-r--r--include/union_room.h6
31 files changed, 522 insertions, 248 deletions
diff --git a/include/battle_anim.h b/include/battle_anim.h
index a7b71bd85..ea9dc356f 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -151,7 +151,7 @@ void sub_80A78AC(struct Sprite *sprite);
void sub_80A6BFC(struct BattleAnimBgData *unk, u8 unused);
u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
void sub_80A749C(struct Sprite *sprite);
-void sub_80A6DEC(struct Sprite *sprite);
+void TradeMenuBouncePartySprites(struct Sprite *sprite);
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId);
@@ -237,50 +237,50 @@ u32 UnpackSelectedBattleAnimPalettes(s16);
u8 GetBattlerSpriteFinal_Y(u8, u16, u8);
-extern const struct OamData gUnknown_08524944;
-extern const struct OamData gUnknown_08524A8C;
-extern const struct OamData gUnknown_08524904;
-extern const struct OamData gUnknown_085249C4;
-extern const struct OamData gUnknown_0852490C;
-extern const struct OamData gUnknown_08524934;
-extern const struct OamData gUnknown_08524974;
-extern const struct OamData gUnknown_0852499C;
-extern const struct OamData gUnknown_085249CC;
-extern const struct OamData gUnknown_08524914;
-extern const struct OamData gUnknown_0852496C;
-extern const struct OamData gUnknown_08524A34;
-extern const struct OamData gUnknown_08524A3C;
-extern const struct OamData gUnknown_08524A94;
-extern const struct OamData gUnknown_08524954;
-extern const struct OamData gUnknown_08524AE4;
-extern const struct OamData gUnknown_085249D4;
-extern const struct OamData gUnknown_08524A9C;
-extern const struct OamData gUnknown_08524ADC;
-extern const struct OamData gUnknown_08524B14;
-extern const struct OamData gUnknown_08524A54;
-extern const struct OamData gUnknown_08524A14;
-extern const struct OamData gUnknown_08524A1C;
-extern const struct OamData gUnknown_085249BC;
-extern const struct OamData gUnknown_08524AF4;
-extern const struct OamData gUnknown_085249DC;
-extern const struct OamData gUnknown_08524AFC;
-extern const struct OamData gUnknown_08524B1C;
-extern const struct OamData gUnknown_08524A04;
-extern const struct OamData gUnknown_08524A2C;
-extern const struct OamData gUnknown_08524AEC;
-extern const struct OamData gUnknown_08524964;
-extern const struct OamData gUnknown_08524B24;
-extern const struct OamData gUnknown_08524A24;
-extern const struct OamData gUnknown_08524AC4;
-extern const struct OamData gUnknown_08524A84;
-extern const struct OamData gUnknown_08524A64;
-extern const struct OamData gUnknown_0852491C;
-extern const struct OamData gUnknown_0852495C;
-extern const struct OamData gUnknown_0852497C;
-extern const struct OamData gUnknown_085249F4;
-extern const struct OamData gUnknown_0852493C;
-extern const struct OamData gUnknown_08524A5C;
-extern const struct OamData gUnknown_08524A74;
+extern const struct OamData gOamData_AffineOff_ObjNormal_8x16;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineOff_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x16;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_64x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_16x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineOff_ObjNormal_16x32;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x32;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_32x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_32x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_32x16;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_16x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_32x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_64x32;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_8x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_16x16;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_8x8;
+extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineOff_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineNormal_ObjBlend_8x8;
+extern const struct OamData gOamData_AffineOff_ObjBlend_8x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineOff_ObjNormal_32x64;
+extern const struct OamData gOamData_AffineNormal_ObjNormal_64x64;
+extern const struct OamData gOamData_AffineDouble_ObjNormal_32x16;
+extern const struct OamData gOamData_AffineOff_ObjNormal_64x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_64x32;
+extern const struct OamData gOamData_AffineOff_ObjBlend_16x32;
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h
new file mode 100644
index 000000000..e92c4a006
--- /dev/null
+++ b/include/constants/battle_pike.h
@@ -0,0 +1,49 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PIKE_H
+#define GUARD_CONSTANTS_BATTLE_PIKE_H
+
+#define PIKE_ROOM_SINGLE_BATTLE 0
+#define PIKE_ROOM_HEAL_FULL 1
+#define PIKE_ROOM_NPC 2
+#define PIKE_ROOM_STATUS 3
+#define PIKE_ROOM_HEAL_PART 4
+#define PIKE_ROOM_WILD_MONS 5
+#define PIKE_ROOM_HARD_BATTLE 6
+#define PIKE_ROOM_DOUBLE_BATTLE 7
+#define PIKE_ROOM_BRAIN 8
+
+// For the room with a status effect.
+#define PIKE_STATUS_KIRLIA 0
+#define PIKE_STATUS_DUSCLOPS 1
+
+// Function IDs for sBattlePikeFunctions / CallBattlePikeFunction
+#define BATTLE_PIKE_FUNC_SET_ROOM_TYPE 0
+#define BATTLE_PIKE_FUNC_GET_DATA 1
+#define BATTLE_PIKE_FUNC_SET_DATA 2
+#define BATTLE_PIKE_FUNC_IN_FINAL_ROOM 3
+#define BATTLE_PIKE_FUNC_SET_UP_ROOM_OBJECTS 4
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5
+#define BATTLE_PIKE_FUNC_6 6
+#define BATTLE_PIKE_FUNC_7 7
+#define BATTLE_PIKE_FUNC_8 8
+#define BATTLE_PIKE_FUNC_NULL_9 9
+#define BATTLE_PIKE_FUNC_NULL_10 10
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS 11
+#define BATTLE_PIKE_FUNC_GET_ROOM_STATUS_MON 12
+#define BATTLE_PIKE_FUNC_HEAL_ONE_TWO_MONS 13
+#define BATTLE_PIKE_FUNC_BUFFER_NPC_MSG 14
+#define BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE 15
+#define BATTLE_PIKE_FUNC_IS_IN 16
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17
+#define BATTLE_PIKE_FUNC_SET_HINT_ROOM_ID 18
+#define BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT 19
+#define BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS 20
+#define BATTLE_PIKE_FUNC_BUFFER_RECORD_MIX_MSG 21
+#define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22
+#define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23
+#define BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED 24
+#define BATTLE_PIKE_FUNC_CAN_PARTY_BE_HEALED 25
+#define BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS 26
+#define BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS 27
+#define BATTLE_PIKE_FUNC_INIT_CHALLENGE 28
+
+#endif // GUARD_CONSTANTS_BATTLE_PIKE_H
diff --git a/include/constants/battle_pyramid.h b/include/constants/battle_pyramid.h
new file mode 100644
index 000000000..0d59ae94d
--- /dev/null
+++ b/include/constants/battle_pyramid.h
@@ -0,0 +1,49 @@
+#ifndef GUARD_CONSTANTS_BATTLE_PYRAMID_H
+#define GUARD_CONSTANTS_BATTLE_PYRAMID_H
+
+#define TOTAL_ROUNDS 20
+#define PICKUP_ITEMS_PER_ROUND 10
+
+#define FLOOR_WALKABLE_METATILE 0x28D
+#define FLOOR_EXIT_METATILE 0x28E
+
+#define HINT_EXIT_DIRECTION 0
+#define HINT_REMAINING_ITEMS 1
+#define HINT_REMAINING_TRAINERS 2
+#define HINT_EXIT_SHORT_REMAINING_TRAINERS 3
+#define HINT_EXIT_SHORT_REMAINING_ITEMS 4
+#define HINT_EXIT_MEDIUM_REMAINING_TRAINERS 5
+#define HINT_EXIT_MEDIUM_REMAINING_ITEMS 6
+#define HINT_EXIT_FAR_REMAINING_TRAINERS 7
+#define HINT_EXIT_FAR_REMAINING_ITEMS 8
+
+#define OBJ_TRAINERS 0
+#define OBJ_ITEMS 1
+
+#define OBJ_POSITIONS_UNIFORM 0
+#define OBJ_POSITIONS_IN_AND_NEAR_ENTRANCE 1
+#define OBJ_POSITIONS_IN_AND_NEAR_EXIT 2
+#define OBJ_POSITIONS_NEAR_ENTRANCE 3
+#define OBJ_POSITIONS_NEAR_EXIT 4
+
+// Functions IDs for sBattlePyramidFunctions / CallBattlePyramidFunction
+#define BATTLE_PYRAMID_FUNC_INIT_CHALLENGE 0
+#define BATTLE_PYRAMID_FUNC_GET_DATA 1
+#define BATTLE_PYRAMID_FUNC_SET_DATA 2
+#define BATTLE_PYRAMID_FUNC_3 3
+#define BATTLE_PYRAMID_FUNC_SET_REWARD 4
+#define BATTLE_PYRAMID_FUNC_GIVE_REWARD 5
+#define BATTLE_PYRAMID_FUNC_SEED_FLOOR 6
+#define BATTLE_PYRAMID_FUNC_SET_ITEM 7
+#define BATTLE_PYRAMID_FUNC_HIDE_ITEM 8
+#define BATTLE_PYRAMID_FUNC_INIT_TRAINERS 9
+#define BATTLE_PYRAMID_FUNC_SHOW_HINT_TEXT 10
+#define BATTLE_PYRAMID_FUNC_UPDATE_STREAK 11
+#define BATTLE_PYRAMID_FUNC_IS_IN 12
+#define BATTLE_PYRAMID_FUNC_UPDATE_LIGHT 13
+#define BATTLE_PYRAMID_FUNC_CLEAR_HELD_ITEMS 14
+#define BATTLE_PYRAMID_FUNC_SET_FLOOR_PALETTE 15
+#define BATTLE_PYRAMID_FUNC_16 16
+#define BATTLE_PYRAMID_FUNC_RESTORE_PARTY 17
+
+#endif // GUARD_CONSTANTS_BATTLE_PYRAMID_H
diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h
new file mode 100644
index 000000000..f2aa4120c
--- /dev/null
+++ b/include/constants/cable_club.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_CONSTANTS_CABLE_CLUB_H
+#define GUARD_CONSTANTS_CABLE_CLUB_H
+
+// States for VAR_CABLE_CLUB_STATE
+#define USING_SINGLE_BATTLE 1
+#define USING_DOUBLE_BATTLE 2
+#define USING_TRADE_CENTER 3
+#define USING_RECORD_CORNER 4
+#define USING_MULTI_BATTLE 5
+#define USING_UNION_ROOM 6
+#define USING_BERRY_CRUSH 7
+#define USING_MINIGAME 8
+#define USING_BATTLE_TOWER 9
+
+#endif //GUARD_CONSTANTS_CABLE_CLUB_H
diff --git a/include/constants/event_object_movement_constants.h b/include/constants/event_object_movement_constants.h
index b1f9b4cb5..ed6f6c7fb 100755
--- a/include/constants/event_object_movement_constants.h
+++ b/include/constants/event_object_movement_constants.h
@@ -179,8 +179,8 @@
#define MOVEMENT_ACTION_CLEAR_FIXED_PRIORITY 0x5D
#define MOVEMENT_ACTION_INIT_AFFINE_ANIM 0x5E
#define MOVEMENT_ACTION_CLEAR_AFFINE_ANIM 0x5F
-#define MOVEMENT_ACTION_UNKNOWN1 0x60
-#define MOVEMENT_ACTION_UNKNOWN2 0x61
+#define MOVEMENT_ACTION_HIDE_REFLECTION 0x60
+#define MOVEMENT_ACTION_SHOW_REFLECTION 0x61
#define MOVEMENT_ACTION_WALK_DOWN_START_AFFINE 0x62
#define MOVEMENT_ACTION_WALK_DOWN_AFFINE 0x63
#define MOVEMENT_ACTION_ACRO_WHEELIE_FACE_DOWN 0x64
diff --git a/include/constants/field_poison.h b/include/constants/field_poison.h
new file mode 100644
index 000000000..19b91e7c2
--- /dev/null
+++ b/include/constants/field_poison.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_FIELD_POISON_H
+#define GUARD_CONSTANTS_FIELD_POISON_H
+
+#define FLDPSN_NONE 0
+#define FLDPSN_PSN 1
+#define FLDPSN_FNT 2
+
+#define FLDPSN_NO_WHITEOUT 0
+#define FLDPSN_WHITEOUT 1
+#define FLDPSN_FRONTIER_WHITEOUT 2
+
+#endif //GUARD_CONSTANTS_FIELD_POISON_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 3d43e0fe6..e9f9aa770 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -925,7 +925,7 @@
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8
#define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9
-#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3CA
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA
#define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB
#define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC
#define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD
@@ -936,14 +936,14 @@
#define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2
#define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3
#define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4
-#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3D5
-#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D6
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
+#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6
#define FLAG_HIDE_RUSTURF_TUNNEL_LOVER_WOMAN 0x3D7
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_LOVER_WOMAN 0x3D8
-#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3D9
-#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DA
-#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DB
-#define FLAG_HIDE_ROUTE_120_KECLEON_6 0x3DC
+#define FLAG_HIDE_ROUTE_120_KECLEON_2 0x3D9
+#define FLAG_HIDE_ROUTE_120_KECLEON_3 0x3DA
+#define FLAG_HIDE_ROUTE_120_KECLEON_4 0x3DB
+#define FLAG_HIDE_ROUTE_120_KECLEON_5 0x3DC
#define FLAG_HIDE_ROUTE_119_KECLEON_1 0x3DD
#define FLAG_HIDE_ROUTE_119_KECLEON_2 0x3DE
#define FLAG_HIDE_ROUTE_101_BOY 0x3DF
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
new file mode 100644
index 000000000..213263b47
--- /dev/null
+++ b/include/constants/party_menu.h
@@ -0,0 +1,52 @@
+#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 PARTY_CHOOSE_MON 0
+#define PARTY_MUST_CHOOSE_MON 1
+#define PARTY_CANT_SWITCH 2
+#define PARTY_USE_ITEM_ON 3
+#define PARTY_ABILITY_PREVENTS 4
+#define PARTY_GIVE_ITEM 5
+
+#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_DYNAMIC_PUNCH 15
+#define TUTOR_MOVE_ROLLOUT 16
+#define TUTOR_MOVE_PSYCH_UP 17
+#define TUTOR_MOVE_SNORE 18
+#define TUTOR_MOVE_ICY_WIND 19
+#define TUTOR_MOVE_ENDURE 20
+#define TUTOR_MOVE_MUD_SLAP 21
+#define TUTOR_MOVE_ICE_PUNCH 22
+#define TUTOR_MOVE_SWAGGER 23
+#define TUTOR_MOVE_SLEEP_TALK 24
+#define TUTOR_MOVE_SWIFT 25
+#define TUTOR_MOVE_DEFENSE_CURL 26
+#define TUTOR_MOVE_THUNDER_PUNCH 27
+#define TUTOR_MOVE_FIRE_PUNCH 28
+#define TUTOR_MOVE_FURY_CUTTER 29
+#define TUTOR_MOVE_COUNT 30
+
+#endif // GUARD_CONSTANTS_PARTY_MENU_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 52a4f0254..5cd98d3f3 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -177,6 +177,7 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
+#define MIN_LEVEL 1
#define MAX_LEVEL 100
#define OT_ID_PLAYER_ID 0
diff --git a/include/constants/trade.h b/include/constants/trade.h
new file mode 100644
index 000000000..4fb8966d0
--- /dev/null
+++ b/include/constants/trade.h
@@ -0,0 +1,116 @@
+#ifndef GUARD_CONSTANTS_TRADE_H
+#define GUARD_CONSTANTS_TRADE_H
+
+#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 CanTradeSelectedPartyMenuMon
+#define CAN_TRADE_MON 0
+#define CANT_TRADE_LAST_MON 1
+#define CANT_TRADE_NATIONAL 2
+#define CANT_TRADE_EGG 3
+#define CANT_TRADE_INVALID_MON 4
+#define CANT_TRADE_EGG2 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/trainer_hill.h b/include/constants/trainer_hill.h
index 4aae1dbbc..cab56a5ac 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -11,7 +11,7 @@
#define TRAINER_HILL_FUNC_7 7
#define TRAINER_HILL_FUNC_8 8
#define TRAINER_HILL_FUNC_9 9
-#define TRAINER_HILL_FUNC_10 10
+#define TRAINER_HILL_FUNC_IS_IN 10
#define TRAINER_HILL_FUNC_11 11
#define TRAINER_HILL_FUNC_12 12
#define TRAINER_HILL_FUNC_13 13
diff --git a/include/constants/tv.h b/include/constants/tv.h
new file mode 100644
index 000000000..c22bec9a3
--- /dev/null
+++ b/include/constants/tv.h
@@ -0,0 +1,46 @@
+#ifndef GUARD_CONSTANTS_TV_H
+#define GUARD_CONSTANTS_TV_H
+
+#define POKENEWS_NONE 0
+#define POKENEWS_SLATEPORT 1
+#define POKENEWS_GAME_CORNER 2
+#define POKENEWS_LILYCOVE 3
+#define POKENEWS_BLENDMASTER 4
+
+#define TVSHOW_OFF_AIR 0
+#define TVSHOW_FAN_CLUB_LETTER 1
+#define TVSHOW_RECENT_HAPPENINGS 2
+#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3
+#define TVSHOW_UNKN_SHOWTYPE_04 4
+#define TVSHOW_NAME_RATER_SHOW 5
+#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6
+#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7
+#define TVSHOW_CONTEST_LIVE_UPDATES 8
+#define TVSHOW_3_CHEERS_FOR_POKEBLOCKS 9
+#define TVSHOW_BATTLE_UPDATE 10
+#define TVSHOW_FAN_CLUB_SPECIAL 11
+#define TVSHOW_CONTEST_LIVE_UPDATES_2 12
+// //
+#define TVSHOW_POKEMON_TODAY_CAUGHT 21
+#define TVSHOW_SMART_SHOPPER 22
+#define TVSHOW_POKEMON_TODAY_FAILED 23
+#define TVSHOW_FISHING_ADVICE 24
+#define TVSHOW_WORLD_OF_MASTERS 25
+#define TVSHOW_TODAYS_RIVAL_TRAINER 26
+#define TVSHOW_TREND_WATCHER 27
+#define TVSHOW_TREASURE_INVESTIGATORS 28
+#define TVSHOW_FIND_THAT_GAMER 29
+#define TVSHOW_BREAKING_NEWS 30
+#define TVSHOW_SECRET_BASE_VISIT 31
+#define TVSHOW_LOTTO_WINNER 32
+#define TVSHOW_BATTLE_SEMINAR 33
+#define TVSHOW_TRAINER_FAN_CLUB 34
+#define TVSHOW_CUTIES 35
+#define TVSHOW_FRONTIER 36
+#define TVSHOW_NUMBER_ONE 37
+#define TVSHOW_SECRET_BASE_SECRETS 38
+#define TVSHOW_SAFARI_FAN_CLUB 39
+// //
+#define TVSHOW_MASS_OUTBREAK 41
+
+#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 3af9e3b7c..f9bfb2ad5 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -77,7 +77,7 @@
#define VAR_REGICE_STEPS_2 0x403C
#define VAR_REGICE_STEPS_3 0x403D
#define VAR_ALTERING_CAVE_WILD_SET 0x403E
-#define VAR_ALWAYS_ZERO_0x403F 0x403F // This var is read and written, but is always zero.
+#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing
#define VAR_DAYS 0x4040
#define VAR_FANCLUB_UNKNOWN_1 0x4041
#define VAR_FANCLUB_UNKNOWN_2 0x4042
diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h
index 55e8fa880..9995decc2 100644
--- a/include/dodrio_berry_picking.h
+++ b/include/dodrio_berry_picking.h
@@ -2,7 +2,7 @@
#define GUARD_DODRIO_BERRY_PICKING_H
void sub_802493C(u16 a0, void (*callback)(void));
-void sub_8027A5C(void);
-void sub_8027AAC(void);
+void IsDodrioInParty(void);
+void ShowDodrioBerryPickingRecords(void);
#endif // GUARD_DODRIO_BERRY_PICKING_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 02265413e..a0190ea9e 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -548,17 +548,17 @@ extern const u8 EventScript_UseDive[];
extern const u8 EventScript_UseDiveUnderwater[];
extern const u8 EventScript_FallDownHole[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8[];
-extern const u8 EventScript_Poison[];
+extern const u8 EventScript_FieldPoison[];
extern const u8 EventScript_EggHatch[];
extern const u8 UnusualWeather_EventScript_EndEventAndCleanup_1[];
extern const u8 IslandCave_EventScript_238EAF[];
extern const u8 MauvilleCity_EventScript_1DF7BA[];
extern const u8 Route119_EventScript_1F49EC[];
extern const u8 LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6[];
-extern const u8 RustboroCity_Gym_EventScript_21307B[];
+extern const u8 RustboroCity_Gym_EventScript_RegisterRoxanne[];
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224175[];
extern const u8 SSTidalCorridor_EventScript_23C050[];
-extern const u8 gUnknown_082A8350[];
+extern const u8 EventScript_FallDownHoleMtPyre[];
// Secret Base
extern const u8 SecretBase_EventScript_PC[];
diff --git a/include/field_poison.h b/include/field_poison.h
index a23a93ca5..e9de7878e 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -7,13 +7,7 @@
// Exported ROM declarations
-enum {
- FLDPSN_NONE,
- FLDPSN_PSN,
- FLDPSN_FNT
-};
-
-void ExecuteWhiteOut(void);
+void TryFieldPoisonWhiteOut(void);
s32 DoPoisonFieldEffect(void);
#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index e26188d47..af594611e 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -33,7 +33,7 @@ void sub_80AF8B8(void);
void sub_80AF948(void);
void sub_80AF9F8(void);
void sub_80AFC60(void);
-void sub_80B009C(u8 flashLevel);
+void AnimateFlash(u8 flashLevel);
void WriteBattlePyramidViewScanlineEffectBuffer(void);
void sub_80B0244(void);
void sub_80B0268(void);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a17180589..de08fd1ec 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -65,7 +65,7 @@ struct EventObjectTemplate
/*0x0E*/ u16 trainerRange_berryTreeId;
/*0x10*/ const u8 *script;
/*0x14*/ u16 flagId;
-}; /*size = 0x18*/
+};
struct WarpEvent
{
@@ -82,7 +82,6 @@ struct CoordEvent
u8 elevation;
u16 trigger;
u16 index;
- u8 filler_A[0x2];
u8 *script;
};
@@ -90,20 +89,14 @@ struct BgEvent
{
u16 x, y;
u8 elevation;
- u8 kind;
- union { // carried over from diego's FR/LG work, seems to be the same struct
- // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union.
+ u8 kind; // The "kind" field determines how to access bgUnion union below.
+ union {
u8 *script;
-
- // hidden item type
struct {
u16 item;
- u16 hiddenItemId; // flag offset to determine flag lookup
+ u16 hiddenItemId;
} hiddenItem;
-
- // secret base type
u32 secretBaseId;
-
} bgUnion;
};
@@ -113,7 +106,6 @@ struct MapEvents
u8 warpCount;
u8 coordEventCount;
u8 bgEventCount;
-
struct EventObjectTemplate *eventObjects;
struct WarpEvent *warps;
struct CoordEvent *coordEvents;
@@ -122,10 +114,10 @@ struct MapEvents
struct MapConnection
{
- /*0x00*/ u8 direction;
- /*0x01*/ u32 offset;
- /*0x05*/ u8 mapGroup;
- /*0x06*/ u8 mapNum;
+ u8 direction;
+ u32 offset;
+ u8 mapGroup;
+ u8 mapNum;
};
struct MapConnections
@@ -180,7 +172,7 @@ struct EventObject
/*0x03*/ u32 spriteAffineAnimPausedBackup:1;
u32 disableJumpLandingGroundEffect:1;
u32 fixedPriority:1;
- u32 unk3_3:1;
+ u32 hideReflection:1;
/*0x04*/ u8 spriteId;
/*0x05*/ u8 graphicsId;
/*0x06*/ u8 movementType;
@@ -267,7 +259,20 @@ enum
enum
{
- COLLISION_LEDGE_JUMP = 6
+ COLLISION_NONE,
+ COLLISION_OUTSIDE_RANGE,
+ COLLISION_IMPASSABLE,
+ COLLISION_ELEVATION_MISMATCH,
+ COLLISION_EVENT_OBJECT,
+ COLLISION_STOP_SURFING,
+ COLLISION_LEDGE_JUMP,
+ COLLISION_PUSHED_BOULDER,
+ COLLISION_ROTATING_GATE,
+ COLLISION_WHEELIE_HOP,
+ COLLISION_ISOLATED_VERTICAL_RAIL,
+ COLLISION_ISOLATED_HORIZONTAL_RAIL,
+ COLLISION_VERTICAL_RAIL,
+ COLLISION_HORIZONTAL_RAIL,
};
// player running states
diff --git a/include/global.tv.h b/include/global.tv.h
index 1cef057ae..34791d43c 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -1,45 +1,6 @@
#ifndef GUARD_GLOBAL_TV_H
#define GUARD_GLOBAL_TV_H
-enum
-{
- TVSHOW_OFF_AIR,
- TVSHOW_FAN_CLUB_LETTER,
- TVSHOW_RECENT_HAPPENINGS,
- TVSHOW_PKMN_FAN_CLUB_OPINIONS,
- TVSHOW_UNKN_SHOWTYPE_04,
- TVSHOW_NAME_RATER_SHOW,
- TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
- TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
- TVSHOW_CONTEST_LIVE_UPDATES,
- TVSHOW_3_CHEERS_FOR_POKEBLOCKS,
- TVSHOW_BATTLE_UPDATE,
- TVSHOW_FAN_CLUB_SPECIAL,
- TVSHOW_CONTEST_LIVE_UPDATES_2,
-
- TVSHOW_POKEMON_TODAY_CAUGHT = 21,
- TVSHOW_SMART_SHOPPER,
- TVSHOW_POKEMON_TODAY_FAILED,
- TVSHOW_FISHING_ADVICE,
- TVSHOW_WORLD_OF_MASTERS,
- TVSHOW_TODAYS_RIVAL_TRAINER,
- TVSHOW_TREND_WATCHER,
- TVSHOW_TREASURE_INVESTIGATORS,
- TVSHOW_FIND_THAT_GAMER,
- TVSHOW_BREAKING_NEWS,
- TVSHOW_SECRET_BASE_VISIT,
- TVSHOW_LOTTO_WINNER,
- TVSHOW_BATTLE_SEMINAR,
- TVSHOW_TRAINER_FAN_CLUB,
- TVSHOW_CUTIES,
- TVSHOW_FRONTIER,
- TVSHOW_NUMBER_ONE,
- TVSHOW_SECRET_BASE_SECRETS,
- TVSHOW_SAFARI_FAN_CLUB,
-
- TVSHOW_MASS_OUTBREAK = 41,
-};
-
typedef union // size = 0x24
{
// Common
@@ -495,14 +456,6 @@ typedef union // size = 0x24
} massOutbreak;
} TVShow;
-enum {
- POKENEWS_NONE,
- POKENEWS_SLATEPORT,
- POKENEWS_GAME_CORNER,
- POKENEWS_LILYCOVE,
- POKENEWS_BLENDMASTER
-};
-
typedef struct // 2b50
{
u8 kind;
diff --git a/include/graphics.h b/include/graphics.h
index 5f5c579d2..a08d3760f 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4848,13 +4848,13 @@ extern const u32 gCableCarCord_Gfx[];
extern const u16 gCableCar_Pal[];
// Trade
-extern const u16 gUnknown_08DDB3E4[];
-extern const u8 gUnknown_08DDB464[];
+extern const u16 gTradeMenu_Pal[];
+extern const u8 gTradeMenu_Gfx[];
extern const u16 gUnknown_08DDCF04[];
extern const u16 gTradeGba2_Pal[];
extern const u8 gTradeGba_Gfx[];
-extern const u16 gUnknown_08DDD704[];
-extern const u8 gUnknown_08DDC6E4[];
+extern const u16 gTradeMenuMonBox_Tilemap[];
+extern const u8 gTradeButtons_Gfx[];
extern const u16 gUnknown_08DDB444[];
// Party menu
diff --git a/include/librfu.h b/include/librfu.h
index 38c819835..55b5d264c 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -76,10 +76,10 @@ struct UnkLinkRfuStruct_02022B14Substruct
u16 unk_00_4:1;
u16 unk_00_5:1;
u16 unk_00_6:1;
- u16 unk_00_7:1;
- u16 unk_01_0:1;
- u16 unk_01_1:1;
- u16 unk_01_2:4;
+ u16 isChampion:1;
+ u16 hasNationalDex:1;
+ u16 gameClear:1; // never read, redundant with isChampion
+ u16 unk_01_2:4; // always 3?
u16 unk_01_6:2;
u8 playerTrainerId[2];
};
@@ -93,7 +93,7 @@ struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
u8 unk_0a_0:7;
u8 unk_0a_7:1;
u8 playerGender:1;
- u8 unk_0b_1:7;
+ u8 level:7;
u8 unk_0c;
};
diff --git a/include/link.h b/include/link.h
index c14084066..499405fc1 100644
--- a/include/link.h
+++ b/include/link.h
@@ -48,20 +48,52 @@
#define EXTRACT_LINK_ERRORS(status) \
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
-#define LINKCMD_SEND_LINK_TYPE 0x2222
-#define LINKCMD_0x2FFE 0x2FFE
-#define LINKCMD_SEND_HELD_KEYS 0x4444
-#define LINKCMD_0x5555 0x5555
-#define LINKCMD_0x5566 0x5566
-#define LINKCMD_0x5FFF 0x5FFF
-#define LINKCMD_0x6666 0x6666
-#define LINKCMD_0x7777 0x7777
-#define LINKCMD_CONT_BLOCK 0x8888
-#define LINKCMD_0xAAAA 0xAAAA
-#define LINKCMD_0xAAAB 0xAAAB
-#define LINKCMD_INIT_BLOCK 0xBBBB
-#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
-#define LINKCMD_0xCCCC 0xCCCC
+#define LINKCMD_SEND_LINK_TYPE 0x2222
+#define LINKCMD_0x2FFE 0x2FFE
+#define LINKCMD_SEND_HELD_KEYS 0x4444
+#define LINKCMD_0x5555 0x5555
+#define LINKCMD_0x5566 0x5566
+#define LINKCMD_0x5FFF 0x5FFF
+#define LINKCMD_0x6666 0x6666
+#define LINKCMD_0x7777 0x7777
+#define LINKCMD_CONT_BLOCK 0x8888
+#define LINKCMD_0xAAAA 0xAAAA
+#define LINKCMD_0xAAAB 0xAAAB
+#define LINKCMD_READY_TO_TRADE 0xAABB
+#define LINKCMD_READY_FINISH_TRADE 0xABCD
+#define LINKCMD_INIT_BLOCK 0xBBBB
+#define LINKCMD_READY_CANCEL_TRADE 0xBBCC
+#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
+#define LINKCMD_0xCCCC 0xCCCC
+#define LINKCMD_START_TRADE 0xCCDD
+#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA
+#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD
+#define LINKCMD_0xDDEE 0xDDEE
+#define LINKCMD_REQUEST_CANCEL 0xEEAA
+#define LINKCMD_CANCEL_TRADE 0xEEBB
+#define LINKCMD_0xEECC 0xEECC
+
+#define LINKTYPE_0x1111 0x1111 // trade
+#define LINKTYPE_0x1122 0x1122 // trade
+#define LINKTYPE_0x1133 0x1133 // trade
+#define LINKTYPE_0x1144 0x1144 // trade
+#define LINKTYPE_BATTLE 0x2211
+#define LINKTYPE_0x2222 0x2222 // unused battle?
+#define LINKTYPE_SINGLE_BATTLE 0x2233
+#define LINKTYPE_DOUBLE_BATTLE 0x2244
+#define LINKTYPE_MULTI_BATTLE 0x2255
+#define LINKTYPE_BATTLE_TOWER_50 0x2266
+#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
+#define LINKTYPE_0x2288 0x2288 // battle?
+#define LINKTYPE_0x3311 0x3311
+#define LINKTYPE_0x3322 0x3322
+#define LINKTYPE_0x4411 0x4411
+#define LINKTYPE_BERRY_BLENDER 0x4422
+#define LINKTYPE_0x5501 0x5501 // mystery event
+#define LINKTYPE_0x5502 0x5502 // unused?
+#define LINKTYPE_0x5503 0x5503 // eReader
+#define LINKTYPE_0x6601 0x6601
+#define LINKTYPE_0x6602 0x6602
struct LinkStatus
{
@@ -95,8 +127,8 @@ enum
EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS,
- EXCHANGE_STAT_4,
- EXCHANGE_STAT_5,
+ EXCHANGE_PLAYER_NOT_READY,
+ EXCHANGE_PARTNER_NOT_READY,
EXCHANGE_STAT_6,
EXCHANGE_STAT_7
};
@@ -120,7 +152,10 @@ struct LinkPlayer
/* 0x00 */ u16 version;
/* 0x02 */ u16 lp_field_2;
/* 0x04 */ u32 trainerId;
- /* 0x08 */ u8 name[11];
+ /* 0x08 */ u8 name[PLAYER_NAME_LENGTH + 1];
+ /* 0x10 */ u8 progressFlags; // (& 0x0F) is hasNationalDex, (& 0xF0) is hasClearedGame
+ /* 0x11 */ u8 neverRead;
+ /* 0x12 */ u8 progressFlagsCopy;
/* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
/* 0x18 */ u16 id; // battler id in battles
diff --git a/include/link_rfu.h b/include/link_rfu.h
index d6e1009e1..533e515c5 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -128,7 +128,7 @@ struct UnkRfuStruct_Sub_Unused
struct UnkRfuStruct_2
{
- /* 0x000 */ void (*unk_00)(void);
+ /* 0x000 */ void (*linkRfuCallback)(void);
/* 0x004 */ u16 unk_04;
/* 0x006 */ u8 filler_06[4];
/* 0x00a */ u16 unk_0a;
@@ -224,11 +224,11 @@ void sub_800F804(void);
void sub_800F850(void);
u8 sub_800FCD8(void);
bool32 sub_800FE84(const u8 *src, size_t size);
-void Rfu_set_zero(void);
+void ClearLinkRfuCallback(void);
u8 sub_80104F4(void);
u8 rfu_get_multiplayer_id(void);
bool8 sub_8010100(u8 a0);
-bool8 sub_8010500(void);
+bool8 IsLinkRfuTaskFinished(void);
bool8 Rfu_IsMaster(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
void sub_8010434(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index d76e50788..a26cdb4cd 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -4,62 +4,7 @@
#include "main.h"
#include "task.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,
-};
-
-enum
-{
- TUTOR_MOVE_MEGA_PUNCH,
- TUTOR_MOVE_SWORDS_DANCE,
- TUTOR_MOVE_MEGA_KICK,
- TUTOR_MOVE_BODY_SLAM,
- TUTOR_MOVE_DOUBLE_EDGE,
- TUTOR_MOVE_COUNTER,
- TUTOR_MOVE_SEISMIC_TOSS,
- TUTOR_MOVE_MIMIC,
- TUTOR_MOVE_METRONOME,
- TUTOR_MOVE_SOFT_BOILED,
- TUTOR_MOVE_DREAM_EATER,
- TUTOR_MOVE_THUNDER_WAVE,
- TUTOR_MOVE_EXPLOSION,
- TUTOR_MOVE_ROCK_SLIDE,
- TUTOR_MOVE_SUBSTITUTE,
- TUTOR_MOVE_DYNAMIC_PUNCH,
- TUTOR_MOVE_ROLLOUT,
- TUTOR_MOVE_PSYCH_UP,
- TUTOR_MOVE_SNORE,
- TUTOR_MOVE_ICY_WIND,
- TUTOR_MOVE_ENDURE,
- TUTOR_MOVE_MUD_SLAP,
- TUTOR_MOVE_ICE_PUNCH,
- TUTOR_MOVE_SWAGGER,
- TUTOR_MOVE_SLEEP_TALK,
- TUTOR_MOVE_SWIFT,
- TUTOR_MOVE_DEFENSE_CURL,
- TUTOR_MOVE_THUNDER_PUNCH,
- TUTOR_MOVE_FIRE_PUNCH,
- TUTOR_MOVE_FURY_CUTTER,
- TUTOR_MOVE_COUNT
-};
+#include "constants/party_menu.h"
struct Struct203CEC8
{
@@ -93,17 +38,17 @@ u8 GetCursorSelectionMonId(void);
u8 sub_81B1360(void);
void sub_81B1370(u8 taskId);
u8* GetMonNickname(struct Pokemon *mon, u8 *dest);
-u8 sub_81B1B5C(const u8* str, u8 b);
+u8 DisplayPartyMenuMessage(const u8* str, u8 b);
bool8 sub_81B1BD4(void);
void sub_81B1F18(u8 taskId, u8 slot, s8 c, s16 HPDifference, TaskFunc func);
u8 pokemon_ailments_get_primary(u32 status);
u8 GetMonAilment(struct Pokemon *mon);
-void display_pokemon_menu_message(u32 stringID);
+void DisplayPartyMenuStdMessage(u32 stringID);
void sub_81B47E0(u8 taskId);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
void sub_81B58A8(void);
void LoadHeldItemIcons(void);
-void sub_81B5D4C(u8 *a, u8 *b, u8 c);
+void DrawHeldItemIconsForTrade(u8 *a, u8 *b, u8 c);
void sub_81B617C(void);
void ItemUseCB_Medicine(u8 taskId, TaskFunc task);
void sub_81B67C8(u8 taskId, TaskFunc task);
@@ -123,8 +68,9 @@ void sub_81B8448(void);
void InitChooseHalfPartyForBattle(u8 unused);
void sub_81B8558(void);
void sub_81B8904(u8 initArg, MainCallback callback);
-void sub_81B892C(void);
-void sub_81B8958(void);
+void OpenPartyMenuForMoveTutor(void);
+void ChooseMonForWirelessMinigame(void);
+void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInBattle(u8 arg);
void sub_81B89F0(void);
void sub_81B8C68(void);
diff --git a/include/pokeball.h b/include/pokeball.h
index 8e1d8b8ec..12b9b1eff 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -25,7 +25,7 @@ extern const struct SpriteTemplate gBallSpriteTemplates[];
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battler, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species);
-u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
+u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
void sub_8076918(u8 battler);
void DoHitAnimHealthboxEffect(u8 battler);
void LoadBallGfx(u8 ballId);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 8af43c753..5018de37c 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -21,8 +21,8 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
-void sub_80D3014(struct Sprite *sprite);
-void sub_80D32C8(struct Sprite *sprite, u8 animNum);
+void UpdateTradeMonIconFrame(struct Sprite *sprite);
+void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 28b19f9b1..dde59aac5 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -4,10 +4,10 @@
#include "main.h"
void sub_802A9A8(u16 monId, MainCallback callback);
-bool32 sub_802C908(u16 species);
-void sub_802C920(void);
+bool32 IsSpeciesAllowedInPokemonJump(u16 species);
+void IsPokemonJumpSpeciesInParty(void);
void ResetPokeJumpResults(void);
-void sub_802E3C4(void);
+void ShowPokemonJumpRecords(void);
void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority);
bool32 sub_802EB84(void);
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 4c319e59d..7b6a38678 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -25,7 +25,7 @@ struct PokemonStorage
extern struct PokemonStorage *gPokemonStoragePtr;
-void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4);
+void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 bytesToBuffer);
u8 CountMonsInBox(u8 boxId);
s16 GetFirstFreeBoxSpot(u8 boxId);
u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore);
diff --git a/include/trade.h b/include/trade.h
index 0c95e1e81..42bfc1482 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -2,25 +2,26 @@
#define GUARD_TRADE_H
#include "link_rfu.h"
+#include "constants/trade.h"
// Exported type declarations
// Exported RAM declarations
-extern struct MailStruct gUnknown_020321C0[PARTY_SIZE];
-extern u8 gUnknown_02032298[2];
+extern struct MailStruct gTradeMail[PARTY_SIZE];
+extern u8 gSelectedTradeMonPositions[2];
// Exported ROM declarations
-extern const struct WindowTemplate gUnknown_0833900C;
+extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
-s32 sub_807A728(void);
-void sub_80773AC(void);
-void sub_807AE50(void);
-int sub_807A8D0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
-int sub_807A7E0(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
-int sub_807A918(struct Pokemon*, u16);
-void sub_807B140(void);
-void sub_807B154(void);
-void sub_807F19C(void);
-void sub_807F1A8(u8, const u8 *, u8);
+s32 GetGameProgressForLinkTrade(void);
+void CB2_StartCreateTradeMenu(void);
+void CB2_LinkTrade(void);
+int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
+int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
+int CanTradeSelectedPartyMenuMon(struct Pokemon*, u16);
+void InitTradeSequenceBgGpuRegs(void);
+void LinkTradeDrawWindow(void);
+void InitTradeBg(void);
+void DrawTextOnTradeWindow(u8, const u8 *, u8);
#endif //GUARD_TRADE_H
diff --git a/include/trainer_hill.h b/include/trainer_hill.h
index 31480287a..a592ef580 100644
--- a/include/trainer_hill.h
+++ b/include/trainer_hill.h
@@ -57,7 +57,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId);
void InitTrainerHillBattleStruct(void);
void FreeTrainerHillBattleStruct(void);
void CopyTrainerHillTrainerText(u8 which, u16 trainerId);
-bool8 sub_81D5C18(void);
+bool8 InTrainerHillChallenge(void);
void nullsub_129(void);
void PrintOnTrainerHillRecordsWindow(void);
void sub_81D5DF8(void);
diff --git a/include/union_room.h b/include/union_room.h
index facc63986..54f09cbeb 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -135,7 +135,7 @@ union UnkUnion_Main
struct UnkStruct_URoom *uRoom;
};
-struct TradeUnkStruct
+struct UnionRoomTrade
{
u16 field_0;
u16 type;
@@ -156,8 +156,8 @@ extern u8 gUnknown_02022C2C;
extern union UnkUnion_Main gUnknown_02022C30;
extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
-extern u16 gUnknown_02022C3C;
-extern u8 gUnknown_02022C3E;
+extern u16 gUnionRoomOfferedSpecies;
+extern u8 gUnionRoomRequestedMonType;
// Exported ROM declarations