summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPhlosioneer <mattmdrr2@gmail.com>2019-03-15 01:19:00 -0400
committerPhlosioneer <mattmdrr2@gmail.com>2019-03-15 01:19:00 -0400
commit31ded7cc6f40876421c7186e15f8a9fa606ff569 (patch)
tree831d96edb6d2b4d239affc57ef98d6ccb2f1bccb /include
parent2e789dbbdc18f56cba62aef51156d44136b20632 (diff)
parent8e1537fb57dc7ed17079b30f7a3851132cf462bd (diff)
Merge branch 'master' into pokenav-decomp-again
Diffstat (limited to 'include')
-rw-r--r--include/agb_flash.h2
-rw-r--r--include/bard_music.h1
-rw-r--r--include/battle.h2
-rw-r--r--include/battle_anim.h16
-rw-r--r--include/battle_scripts.h6
-rw-r--r--include/battle_tent.h2
-rw-r--r--include/battle_util.h4
-rw-r--r--include/cable_club.h2
-rw-r--r--include/constants/battle_frontier.h2
-rw-r--r--include/constants/easy_chat.h29
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/map_scripts.h12
-rwxr-xr-xinclude/constants/map_types.h6
-rw-r--r--include/constants/trainer_hill.h29
-rw-r--r--include/constants/vars.h494
-rw-r--r--include/constants/weather.h28
-rw-r--r--include/contest.h1
-rw-r--r--include/dewford_trend.h2
-rw-r--r--include/easy_chat.h130
-rw-r--r--include/event_data.h2
-rw-r--r--include/event_obj_lock.h1
-rw-r--r--include/event_object_movement.h3
-rw-r--r--include/event_scripts.h2
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_effect.h5
-rw-r--r--include/field_effect_helpers.h1
-rw-r--r--include/field_player_avatar.h10
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/field_special_scene.h1
-rw-r--r--include/field_specials.h15
-rw-r--r--include/field_weather.h10
-rw-r--r--include/fieldmap.h11
-rw-r--r--include/global.fieldmap.h11
-rw-r--r--include/global.h29
-rw-r--r--include/graphics.h19
-rw-r--r--include/hall_of_fame.h3
-rw-r--r--include/item_menu.h7
-rw-r--r--include/link.h12
-rw-r--r--include/link_rfu.h6
-rw-r--r--include/main.h6
-rw-r--r--include/match_call.h4
-rw-r--r--include/menu.h20
-rw-r--r--include/overworld.h45
-rw-r--r--include/party_menu.h4
-rw-r--r--include/pokedex.h2
-rw-r--r--include/pokemon.h8
-rw-r--r--include/pokemon_icon.h1
-rwxr-xr-xinclude/pokemon_summary_screen.h2
-rw-r--r--include/pokenav.h1
-rw-r--r--include/record_mixing.h2
-rw-r--r--include/rom_8011DC0.h2
-rw-r--r--include/save.h9
-rw-r--r--include/script.h23
-rw-r--r--include/script_menu.h2
-rw-r--r--include/secret_base.h2
-rw-r--r--include/siirtc.h8
-rw-r--r--include/slot_machine.h14
-rw-r--r--include/strings.h125
-rw-r--r--include/task.h3
-rw-r--r--include/text.h4
-rw-r--r--include/trainer_card.h2
-rw-r--r--include/trainer_hill.h2
-rw-r--r--include/tv.h9
-rw-r--r--include/window.h4
64 files changed, 855 insertions, 371 deletions
diff --git a/include/agb_flash.h b/include/agb_flash.h
index 27e45e8fa..ba5820f01 100644
--- a/include/agb_flash.h
+++ b/include/agb_flash.h
@@ -8,5 +8,7 @@
// Exported ROM declarations
u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
+u16 IdentifyFlash(void);
+u32 ProgramFlashSectorAndVerify(u16 sectorNum, u8 *src);
#endif //GUARD_AGB_FLASH_H
diff --git a/include/bard_music.h b/include/bard_music.h
index 9d3d0ad22..488205405 100644
--- a/include/bard_music.h
+++ b/include/bard_music.h
@@ -39,6 +39,7 @@ struct BardSong
// Exported ROM declarations
extern const u16 gUnknown_085F5490;
+extern const u16 gUnknown_085FA1D4;
const struct BardSound *GetWordSounds(u16 word);
void GetWordPhonemes(struct BardSong *song, u16 word);
diff --git a/include/battle.h b/include/battle.h
index 94596c75e..d155ca5a0 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -175,7 +175,7 @@ struct ProtectStruct
u32 targetNotAffected:1;
u32 chargingTurn:1;
u32 fleeFlag:2; // For RunAway and Smoke Ball.
- u32 usedImprisionedMove:1;
+ u32 usedImprisonedMove:1;
u32 loveImmobility:1;
u32 usedDisabledMove:1;
u32 usedTauntedMove:1;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index d0d323216..b3350f893 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -204,6 +204,9 @@ void sub_80A718C(struct Sprite *sprite);
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
+// battle_anim_8170478.c
+void sub_8172EF0(u8 battler, struct Pokemon *mon);
+
// ground.c
void sub_81152DC(u8 taskId);
@@ -216,6 +219,19 @@ u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes,
void sub_8116EB4(u8);
void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *arg8, const u32 *arg9, const u32 *palette);
+// battle_anim_effects_1.c
+void sub_810310C(u8 battler, struct Sprite* sprite);
+void AnimMoveTwisterParticle(struct Sprite* sprite);
+
+// water.c
+void sub_8108C94(struct Sprite *sprite);
+
+// flying.c
+void sub_810E2C8(struct Sprite *sprite);
+
+// smokescreen.c
+u8 sub_807521C(s16 x, s16 y, u8 a3);
+
u32 UnpackSelectedBattleAnimPalettes(s16);
u8 GetBattlerSpriteFinal_Y(u8, u16, u8);
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index a23fa6948..cac3a7652 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -88,8 +88,8 @@ extern const u8 BattleScript_IngrainTurnHeal[];
extern const u8 BattleScript_AtkDefDown[];
extern const u8 BattleScript_KnockedOff[];
extern const u8 BattleScript_MoveUsedIsImprisoned[];
-extern const u8 BattleScript_SelectingImprisionedMove[];
-extern const u8 BattleScript_SelectingImprisionedMoveInPalace[];
+extern const u8 BattleScript_SelectingImprisonedMove[];
+extern const u8 BattleScript_SelectingImprisonedMoveInPalace[];
extern const u8 BattleScript_GrudgeTakesPp[];
extern const u8 BattleScript_MagicCoatBounce[];
extern const u8 BattleScript_SnatchedMove[];
@@ -115,7 +115,7 @@ extern const u8 BattleScript_PrintPayDayMoneyString[];
extern const u8 BattleScript_WrapTurnDmg[];
extern const u8 BattleScript_WrapEnds[];
extern const u8 BattleScript_MoveUsedIsInLove[];
-extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[];
+extern const u8 BattleScript_MoveUsedIsInLoveCantAttack[];
extern const u8 BattleScript_NightmareTurnDmg[];
extern const u8 BattleScript_CurseTurnDmg[];
extern const u8 BattleScript_TargetPRLZHeal[];
diff --git a/include/battle_tent.h b/include/battle_tent.h
index a894d4cfb..ca3faa4a6 100644
--- a/include/battle_tent.h
+++ b/include/battle_tent.h
@@ -1,6 +1,6 @@
#ifndef GUARD_BATTLE_TENT_H
#define GUARD_BATTLE_TENT_H
-bool8 sub_81B9E94(void);
+bool8 InSlateportBattleTent(void);
#endif //GUARD_BATTLE_TENT_H
diff --git a/include/battle_util.h b/include/battle_util.h
index 71bb22a00..0756a387a 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -6,7 +6,7 @@
#define MOVE_LIMITATION_DISABLED (1 << 2)
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
-#define MOVE_LIMITATION_IMPRISION (1 << 5)
+#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define ABILITYEFFECT_ON_SWITCHIN 0x0
#define ABILITYEFFECT_ENDTURN 0x1
@@ -44,7 +44,7 @@
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 target, u8 attacker, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 attacker);
-void PressurePPLoseOnUsingImprision(u8 attacker);
+void PressurePPLoseOnUsingImprison(u8 attacker);
void MarkAllBattlersForControllerExec(void); // unused
void MarkBattlerForControllerExec(u8 battlerId);
void sub_803F850(u8 arg0);
diff --git a/include/cable_club.h b/include/cable_club.h
index 60d56460d..c2849ca3e 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -15,6 +15,6 @@ void sub_80B360C(void);
bool32 sub_80B2AF4(u16 *arg0, u16 *arg1);
void sub_80B3AF8(u8 taskId);
void task00_08081A90(u8 taskId);
-bool32 sub_80B39D4(u8 linkPlayerIndex);
+bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex);
#endif //GUARD_CABLE_CLUB_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index ca9e3bc9f..1224c0f31 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -10,6 +10,8 @@
#define FRONTIER_FACILITY_PIKE 5
#define FRONTIER_FACILITY_PYRAMID 6
#define NUM_FRONTIER_FACILITIES 7
+// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY.
+#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9
#define TENT_VERDANTURF 2
#define TENT_FALLARBOR 3
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 2c437c88e..50f5994f4 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -1,6 +1,33 @@
#ifndef GUARD_CONSTANTS_EASY_CHAT_H
#define GUARD_CONSTANTS_EASY_CHAT_H
+#define EASY_CHAT_TYPE_PROFILE 0
+#define EASY_CHAT_TYPE_BATTLE_START 1
+#define EASY_CHAT_TYPE_BATTLE_WON 2
+#define EASY_CHAT_TYPE_BATTLE_LOST 3
+#define EASY_CHAT_TYPE_MAIL 4
+#define EASY_CHAT_TYPE_INTERVIEW 5
+#define EASY_CHAT_TYPE_BARD_SONG 6
+#define EASY_CHAT_TYPE_FAN_CLUB 7
+#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
+#define EASY_CHAT_TYPE_GABBY_AND_TY 10
+#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
+#define EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW 12
+#define EASY_CHAT_TYPE_GOOD_SAYING 13
+#define EASY_CHAT_TYPE_FAN_QUESTION 14
+#define EASY_CHAT_TYPE_QUIZ_ANSWER 15
+#define EASY_CHAT_TYPE_QUIZ_QUESTION 16
+#define EASY_CHAT_TYPE_QUIZ_SET_QUESTION 17
+#define EASY_CHAT_TYPE_QUIZ_SET_ANSWER 18
+#define EASY_CHAT_TYPE_APPRENTICE 19
+#define EASY_CHAT_TYPE_QUESTIONNAIRE 20
+
+#define EASY_CHAT_PERSON_REPORTER_MALE 0
+#define EASY_CHAT_PERSON_REPORTER_FEMALE 1
+#define EASY_CHAT_PERSON_BOY 2
+#define EASY_CHAT_PERSON_DISPLAY_NONE 3
+
#define EC_GROUP_POKEMON 0x0
#define EC_GROUP_TRAINER 0x1
#define EC_GROUP_STATUS 0x2
@@ -23,6 +50,7 @@
#define EC_GROUP_MOVE_2 0x13
#define EC_GROUP_TRENDY_SAYING 0x14
#define EC_GROUP_POKEMON_2 0x15
+#define EC_NUM_GROUPS 0x16
// TRAINER
#define EC_WORD_I_CHOOSE_YOU (EC_GROUP_TRAINER << 9) | 0x0
@@ -1075,5 +1103,6 @@
#define EC_GROUP(word) ((word) >> 9)
#define EC_INDEX(word) ((word) & 0x1FF)
+#define EC_WORD(group, index) ((((group) & 0x7F) << 9) | ((index) & 0x1FF))
#endif // GUARD_CONSTANTS_EASY_CHAT_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index b440ba78b..230fbabaf 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -236,7 +236,7 @@
#define FLAG_MET_WAILMER_TRAINER 0xDA
#define FLAG_EVIL_LEADER_PLEASE_STOP 0xDB
-#define FLAG_UNUSED_0x0DC 0xDC // Unused Flag
+#define FLAG_NEVER_SET_0x0DC 0xDC // This flag is read, but never written to
#define FLAG_RECEIVED_GO_GOGGLES 0xDD
#define FLAG_WINGULL_SENT_ON_ERRAND 0xDE
@@ -1548,7 +1548,7 @@
// Special Flags (Unknown)
#define SPECIAL_FLAGS_START 0x4000
-#define FLAG_SPECIAL_FLAG_0x4000 0x4000
+#define FLAG_HIDE_MAP_NAME_POPUP 0x4000
#define FLAG_SPECIAL_FLAG_0x4001 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
diff --git a/include/constants/map_scripts.h b/include/constants/map_scripts.h
new file mode 100644
index 000000000..d5fd40156
--- /dev/null
+++ b/include/constants/map_scripts.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_CONSTANTS_MAP_SCRIPTS_H
+#define GUARD_CONSTANTS_MAP_SCRIPTS_H
+
+#define MAP_SCRIPT_ON_LOAD 1
+#define MAP_SCRIPT_ON_FRAME_TABLE 2
+#define MAP_SCRIPT_ON_TRANSITION 3
+#define MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE 4
+#define MAP_SCRIPT_ON_RESUME 5
+#define MAP_SCRIPT_ON_DIVE_WARP 6
+#define MAP_SCRIPT_ON_RETURN_TO_FIELD 7
+
+#endif // GUARD_CONSTANTS_MAP_SCRIPTS_H \ No newline at end of file
diff --git a/include/constants/map_types.h b/include/constants/map_types.h
index 504575859..8d071fd41 100755
--- a/include/constants/map_types.h
+++ b/include/constants/map_types.h
@@ -1,14 +1,14 @@
#ifndef GUARD_CONSTANTS_MAP_TYPES_H
#define GUARD_CONSTANTS_MAP_TYPES_H
-#define MAP_TYPE_0 0
+#define MAP_TYPE_UNUSED_1 0
#define MAP_TYPE_TOWN 1
#define MAP_TYPE_CITY 2
#define MAP_TYPE_ROUTE 3
#define MAP_TYPE_UNDERGROUND 4
#define MAP_TYPE_UNDERWATER 5
-#define MAP_TYPE_6 6
-#define MAP_TYPE_7 7
+#define MAP_TYPE_OCEAN_ROUTE 6
+#define MAP_TYPE_UNUSED_2 7
#define MAP_TYPE_INDOOR 8
#define MAP_TYPE_SECRET_BASE 9
diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h
new file mode 100644
index 000000000..e231a6043
--- /dev/null
+++ b/include/constants/trainer_hill.h
@@ -0,0 +1,29 @@
+#ifndef GUARD_CONSTANTS_TRAINER_HILL_H
+#define GUARD_CONSTANTS_TRAINER_HILL_H
+
+#define TRAINER_HILL_FUNC_START 0
+#define TRAINER_HILL_FUNC_1 1
+#define TRAINER_HILL_FUNC_2 2
+#define TRAINER_HILL_FUNC_3 3
+#define TRAINER_HILL_FUNC_RESUME_TIMER 4
+#define TRAINER_HILL_FUNC_SET_LOST 5
+#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS 6
+#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_11 11
+#define TRAINER_HILL_FUNC_12 12
+#define TRAINER_HILL_FUNC_13 13
+#define TRAINER_HILL_FUNC_14 14
+#define TRAINER_HILL_FUNC_15 15
+#define TRAINER_HILL_FUNC_16 16
+#define TRAINER_HILL_FUNC_SET_TAG 17
+
+// Values returned by the TrainerHillGetChallengeStatus
+// function.
+#define TRAINER_HILL_PLAYER_STATUS_LOST 0
+#define TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED 1
+#define TRAINER_HILL_PLAYER_STATUS_NORMAL 2
+
+#endif \ No newline at end of file
diff --git a/include/constants/vars.h b/include/constants/vars.h
index fedc85657..c025d62fc 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONSTANTS_VARS_H
#define GUARD_CONSTANTS_VARS_H
-#define VAR_0x3F20 0x3F20
+#define UNKNOWN_VAR_OFFSET_3F20 0x3F20
#define VARS_START 0x4000
@@ -46,257 +46,257 @@
#define VAR_OBJ_GFX_ID_F 0x401F
// general purpose vars
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
-#define VAR_ICE_STEP_COUNT 0x4022
-#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
-#define VAR_MIRAGE_RND_H 0x4024
-#define VAR_MIRAGE_RND_L 0x4025
-#define VAR_SECRET_BASE_MAP 0x4026
-#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027
-#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028
-#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029
-#define VAR_HAPPINESS_STEP_COUNTER 0x402A
-#define VAR_POISON_STEP_COUNTER 0x402B
-#define VAR_RESET_RTC_ENABLE 0x402C
-#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
-#define VAR_0x402E 0x402E
+#define VAR_RECYCLE_GOODS 0x4020
+#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_ICE_STEP_COUNT 0x4022
+#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
+#define VAR_MIRAGE_RND_H 0x4024
+#define VAR_MIRAGE_RND_L 0x4025
+#define VAR_SECRET_BASE_MAP 0x4026
+#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027
+#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028
+#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
+#define VAR_UNUSED_0x402E 0x402E // Unused Var
-#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
-#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
-#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
-#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
-#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
+#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
+#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
+#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
+#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
+#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
-#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034
-#define VAR_DEOXYS_ROCK_LEVEL 0x4035
-#define VAR_STORAGE_UNKNOWN 0x4036
-#define VAR_0x4037 0x4037
-#define VAR_0x4038 0x4038
-#define VAR_0x4039 0x4039
-#define VAR_0x403A 0x403A
-#define VAR_REGICE_STEPS_1 0x403B
-#define VAR_REGICE_STEPS_2 0x403C
-#define VAR_REGICE_STEPS_3 0x403D
-#define VAR_ALTERING_CAVE_WILD_SET 0x403E
-#define VAR_0x403F 0x403F
-#define VAR_DAYS 0x4040
-#define VAR_FANCLUB_UNKNOWN_1 0x4041
-#define VAR_FANCLUB_UNKNOWN_2 0x4042
-#define VAR_DEPT_STORE_FLOOR 0x4043
-#define VAR_0x4044 0x4044
-#define VAR_POKELOT_PRIZE 0x4045
-#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
-#define VAR_ASH_GATHER_COUNT 0x4048
-#define VAR_BIRCH_STATE 0x4049
-#define VAR_CRUISE_STEP_COUNT 0x404A
-#define VAR_POKELOT_RND1 0x404B
-#define VAR_POKELOT_RND2 0x404C
-#define VAR_0x404D 0x404D
-#define VAR_0x404E 0x404E
-#define VAR_LOTAD_SIZE_RECORD 0x404F
-#define VAR_0x4050 0x4050
-#define VAR_0x4051 0x4051
-#define VAR_0x4052 0x4052
-#define VAR_0x4053 0x4053
-#define VAR_CURRENT_SECRET_BASE 0x4054
-#define VAR_0x4055 0x4055
-#define VAR_0x4056 0x4056
-#define VAR_0x4057 0x4057
-#define VAR_0x4058 0x4058
-#define VAR_0x4059 0x4059
-#define VAR_0x405A 0x405A
-#define VAR_0x405B 0x405B
-#define VAR_0x405C 0x405C
-#define VAR_0x405D 0x405D
-#define VAR_0x405E 0x405E
-#define VAR_0x405F 0x405F
-#define VAR_0x4060 0x4060
-#define VAR_0x4061 0x4061
-#define VAR_0x4062 0x4062
-#define VAR_0x4063 0x4063
-#define VAR_0x4064 0x4064
-#define VAR_0x4065 0x4065
-#define VAR_0x4066 0x4066
-#define VAR_0x4067 0x4067
-#define VAR_0x4068 0x4068
-#define VAR_0x4069 0x4069
-#define VAR_0x406A 0x406A
-#define VAR_0x406B 0x406B
-#define VAR_0x406C 0x406C
-#define VAR_0x406D 0x406D
-#define VAR_0x406E 0x406E
-#define VAR_0x406F 0x406F
-#define VAR_0x4070 0x4070
-#define VAR_0x4071 0x4071
-#define VAR_0x4072 0x4072
-#define VAR_0x4073 0x4073
-#define VAR_0x4074 0x4074
-#define VAR_0x4075 0x4075
-#define VAR_0x4076 0x4076
-#define VAR_0x4077 0x4077
-#define VAR_0x4078 0x4078
-#define VAR_0x4079 0x4079
-#define VAR_0x407A 0x407A
-#define VAR_0x407B 0x407B
-#define VAR_0x407C 0x407C
-#define VAR_0x407D 0x407D
-#define VAR_0x407E 0x407E
-#define VAR_0x407F 0x407F
-#define VAR_0x4080 0x4080
-#define VAR_0x4081 0x4081
-#define VAR_0x4082 0x4082
-#define VAR_0x4083 0x4083
-#define VAR_0x4084 0x4084
-#define VAR_0x4085 0x4085
-#define VAR_0x4086 0x4086
-#define VAR_0x4087 0x4087
-#define VAR_0x4088 0x4088
-#define VAR_0x4089 0x4089
-#define VAR_0x408A 0x408A
-#define VAR_0x408B 0x408B
-#define VAR_0x408C 0x408C
-#define VAR_0x408D 0x408D
-#define VAR_0x408E 0x408E
-#define VAR_0x408F 0x408F
-#define VAR_0x4090 0x4090
-#define VAR_0x4091 0x4091
-#define VAR_0x4092 0x4092
-#define VAR_0x4093 0x4093
-#define VAR_0x4094 0x4094
-#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095
-#define VAR_0x4096 0x4096
-#define VAR_0x4097 0x4097
-#define VAR_0x4098 0x4098
-#define VAR_0x4099 0x4099
-#define VAR_RUSTURF_TUNNEL_STATE 0x409A
-#define VAR_0x409B 0x409B
-#define VAR_0x409C 0x409C
-#define VAR_0x409D 0x409D
-#define VAR_0x409E 0x409E
-#define VAR_0x409F 0x409F
-#define VAR_0x40A0 0x40A0
-#define VAR_0x40A1 0x40A1
-#define VAR_0x40A2 0x40A2
-#define VAR_0x40A3 0x40A3
-#define VAR_0x40A4 0x40A4
-#define VAR_0x40A5 0x40A5
-#define VAR_0x40A6 0x40A6
-#define VAR_0x40A7 0x40A7
-#define VAR_0x40A8 0x40A8
-#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
-#define VAR_0x40AA 0x40AA
-#define VAR_0x40AB 0x40AB
-#define VAR_0x40AC 0x40AC
-#define VAR_0x40AD 0x40AD
-#define VAR_0x40AE 0x40AE
-#define VAR_0x40AF 0x40AF
-#define VAR_0x40B0 0x40B0
-#define VAR_0x40B1 0x40B1
-#define VAR_0x40B2 0x40B2
-#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
-#define VAR_PORTHOLE_STATE 0x40B4
-#define VAR_0x40B5 0x40B5
-#define VAR_0x40B6 0x40B6
-#define VAR_0x40B7 0x40B7
-#define VAR_0x40B8 0x40B8
-#define VAR_0x40B9 0x40B9
-#define VAR_0x40BA 0x40BA
-#define VAR_0x40BB 0x40BB
-#define VAR_0x40BC 0x40BC
-#define VAR_0x40BD 0x40BD
-#define VAR_0x40BE 0x40BE
-#define VAR_0x40BF 0x40BF
-#define VAR_0x40C0 0x40C0
-#define VAR_0x40C1 0x40C1
-#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2
-#define VAR_0x40C3 0x40C3
-#define VAR_0x40C4 0x40C4
-#define VAR_0x40C5 0x40C5
-#define VAR_0x40C6 0x40C6
-#define VAR_0x40C7 0x40C7
-#define VAR_0x40C8 0x40C8
-#define VAR_0x40C9 0x40C9
-#define VAR_0x40CA 0x40CA
-#define VAR_0x40CB 0x40CB
-#define VAR_0x40CC 0x40CC
-#define VAR_0x40CD 0x40CD
-#define VAR_FRONTIER_BATTLE_MODE 0x40CE
-#define VAR_FRONTIER_FACILITY 0x40CF
-#define VAR_0x40D0 0x40D0
-#define VAR_0x40D1 0x40D1
-#define VAR_0x40D2 0x40D2
-#define VAR_0x40D3 0x40D3
-#define VAR_0x40D4 0x40D4
-#define VAR_0x40D5 0x40D5
-#define VAR_0x40D6 0x40D6
-#define VAR_0x40D7 0x40D7
-#define VAR_0x40D8 0x40D8
-#define VAR_0x40D9 0x40D9
-#define VAR_0x40DA 0x40DA
-#define VAR_0x40DB 0x40DB
-#define VAR_0x40DC 0x40DC
-#define VAR_EVENT_PICHU_SLOT 0x40DD
-#define VAR_0x40DE 0x40DE
-#define VAR_0x40DF 0x40DF
-#define VAR_0x40E0 0x40E0
-#define VAR_0x40E1 0x40E1
-#define VAR_0x40E2 0x40E2
-#define VAR_0x40E3 0x40E3
-#define VAR_0x40E4 0x40E4
-#define VAR_0x40E5 0x40E5
-#define VAR_DAILY_SLOTS 0x40E6
-#define VAR_DAILY_WILDS 0x40E7
-#define VAR_DAILY_BLENDER 0x40E8
-#define VAR_DAILY_PLANTED_BERRIES 0x40E9
-#define VAR_DAILY_PICKED_BERRIES 0x40EA
-#define VAR_DAILY_ROULETTE 0x40EB
-#define VAR_0x40EC 0x40EC
-#define VAR_0x40ED 0x40ED
-#define VAR_0x40EE 0x40EE
-#define VAR_0x40EF 0x40EF
-#define VAR_0x40F0 0x40F0
-#define VAR_DAILY_BP 0x40F1
-#define VAR_0x40F2 0x40F2
-#define VAR_0x40F3 0x40F3
-#define VAR_0x40F4 0x40F4
-#define VAR_0x40F5 0x40F5
-#define VAR_0x40F6 0x40F6
-#define VAR_0x40F7 0x40F7
-#define VAR_0x40F8 0x40F8
-#define VAR_0x40F9 0x40F9
-#define VAR_0x40FA 0x40FA
-#define VAR_0x40FB 0x40FB
-#define VAR_0x40FC 0x40FC
-#define VAR_0x40FD 0x40FD
-#define VAR_0x40FE 0x40FE
-#define VAR_0x40FF 0x40FF
+#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034
+#define VAR_DEOXYS_ROCK_LEVEL 0x4035
+#define VAR_STORAGE_UNKNOWN 0x4036
+#define VAR_UNUSUAL_WEATHER_LOCATION 0x4037
+#define VAR_UNUSUAL_WEATHER_STEP_COUNTER 0x4038
+#define VAR_SHOULD_END_UNUSUAL_WEATHER 0x4039
+#define VAR_NEVER_READ_0x403A 0x403A // Var is written to, but never checked
+#define VAR_REGICE_STEPS_1 0x403B
+#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_DAYS 0x4040
+#define VAR_FANCLUB_UNKNOWN_1 0x4041
+#define VAR_FANCLUB_UNKNOWN_2 0x4042
+#define VAR_DEPT_STORE_FLOOR 0x4043
+#define VAR_0x4044 0x4044
+#define VAR_POKELOT_PRIZE_ITEM 0x4045
+#define VAR_NATIONAL_DEX 0x4046
+#define VAR_SEEDOT_SIZE_RECORD 0x4047
+#define VAR_ASH_GATHER_COUNT 0x4048
+#define VAR_BIRCH_STATE 0x4049
+#define VAR_CRUISE_STEP_COUNT 0x404A
+#define VAR_POKELOT_RND1 0x404B
+#define VAR_POKELOT_RND2 0x404C
+#define VAR_POKELOT_PRIZE_PLACE 0x404D
+#define VAR_UNUSED_0x404E 0x404E // Unused Var
+#define VAR_LOTAD_SIZE_RECORD 0x404F
+#define VAR_0x4050 0x4050
+#define VAR_ROUTE102_ACCESSIBLE 0x4051
+#define VAR_UNUSED_0x4052 0x4052 // Unused Var
+#define VAR_LAVARIDGE_RIVAL_STATE 0x4053
+#define VAR_CURRENT_SECRET_BASE 0x4054
+#define VAR_UNUSED_0x4055 0x4055 // Unused Var
+#define VAR_UNUSED_0x4056 0x4056 // Unused Var
+#define VAR_PETALBURG_STATE 0x4057
+#define VAR_SLATEPORT_STATE 0x4058
+#define VAR_UNUSED_0x4059 0x4059 // Unused Var
+#define VAR_RUSTBORO_STATE 0x405A
+#define VAR_UNUSED_0x405B 0x405B // Unused Var
+#define VAR_UNUSED_0x405C 0x405C // Unused Var
+#define VAR_MOSSDEEP_STATE 0x405D
+#define VAR_RAYQUAZA_STATE 0x405E
+#define VAR_UNUSED_0x405F 0x405F // Unused Var
+#define VAR_ROUTE101_STATE 0x4060
+#define VAR_UNUSED_0x4061 0x4061 // Unused Var
+#define VAR_UNUSED_0x4062 0x4062 // Unused Var
+#define VAR_0x4063 0x4063
+#define VAR_UNUSED_0x4064 0x4064 // Unused Var
+#define VAR_UNUSED_0x4065 0x4065 // Unused Var
+#define VAR_UNUSED_0x4066 0x4066 // Unused Var
+#define VAR_UNUSED_0x4067 0x4067 // Unused Var
+#define VAR_UNUSED_0x4068 0x4068 // Unused Var
+#define VAR_ROUTE110_STATE 0x4069
+#define VAR_UNUSED_0x406A 0x406A // Unused Var
+#define VAR_UNUSED_0x406B 0x406B // Unused Var
+#define VAR_UNUSED_0x406C 0x406C // Unused Var
+#define VAR_UNUSED_0x406D 0x406D // Unused Var
+#define VAR_UNUSED_0x406E 0x406E // Unused Var
+#define VAR_ROUTE116_STATE 0x406F
+#define VAR_UNUSED_0x4070 0x4070 // Unused Var
+#define VAR_ROUTE118_STATE 0x4071
+#define VAR_ROUTE119_STATE 0x4072
+#define VAR_UNUSED_0x4073 0x4073 // Unused Var
+#define VAR_ROUTE121_STATE 0x4074
+#define VAR_UNUSED_0x4075 0x4075 // Unused Var
+#define VAR_UNUSED_0x4076 0x4076 // Unused Var
+#define VAR_UNUSED_0x4077 0x4077 // Unused Var
+#define VAR_UNUSED_0x4078 0x4078 // Unused Var
+#define VAR_UNUSED_0x4079 0x4079 // Unused Var
+#define VAR_UNUSED_0x407A 0x407A // Unused Var
+#define VAR_ROUTE128_STATE 0x407B
+#define VAR_UNUSED_0x407C 0x407C // Unused Var
+#define VAR_UNUSED_0x407D 0x407D // Unused Var
+#define VAR_UNUSED_0x407E 0x407E // Unused Var
+#define VAR_UNUSED_0x407F 0x407F // Unused Var
+#define VAR_UNUSED_0x4080 0x4080 // Unused Var
+#define VAR_UNUSED_0x4081 0x4081 // Unused Var
+#define VAR_LITTLEROOT_HOUSES_STATE 0x4082
+#define VAR_UNUSED_0x4083 0x4083 // Unused Var
+#define VAR_BIRCH_LAB_STATE 0x4084
+#define VAR_PETALBURG_GYM_STATE 0x4085
+#define VAR_LINK_CONTEST_ROOM_STATE 0x4086
+#define VAR_CABLE_CLUB_STATE 0x4087
+#define VAR_CONTEST_LOCATION 0x4088
+#define VAR_SECRET_BASE_INITIALIZED 0x4089
+#define VAR_CONTEST_PRIZE_PICKUP 0x408A
+#define VAR_UNUSED_0x408B 0x408B // Unused Var
+#define VAR_LITTLEROOT_HOUSES_STATE_2 0x408C
+#define VAR_LITTLEROOT_RIVAL_STATE 0x408D
+#define VAR_BOARD_BRINEY_BOAT_ROUTE104_STATE 0x408E
+#define VAR_DEVON_CORP_3F_STATE 0x408F
+#define VAR_BRINEY_HOUSE_STATE 0x4090
+#define VAR_UNUSED_0x4091 0x4091 // Unused Var
+#define VAR_LITTLEROOT_INTRO_STATE 0x4092
+#define VAR_MAUVILLE_GYM_STATE 0x4093
+#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094
+#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095
+#define VAR_BRINEY_LOCATION 0x4096
+#define VAR_INIT_SECRET_BASE 0x4097
+#define VAR_PETALBURG_WOODS_STATE 0x4098
+#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099
+#define VAR_RUSTURF_TUNNEL_STATE 0x409A
+#define VAR_UNUSED_0x409B 0x409B // Unused Var
+#define VAR_ELITE_4_STATE 0x409C
+#define VAR_UNUSED_0x409D 0x409D // Unused Var
+#define VAR_MOSSDEEP_SPACE_CENTER_STATE_1 0x409E
+#define VAR_MOSSDEEP_SPACE_CENTER_STATE_2 0x409F
+#define VAR_SLATEPORT_HARBOR_STATE 0x40A0
+#define VAR_UNUSED_0x40A1 0x40A1 // Unused var
+#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2
+#define VAR_CABLE_CAR_STATION_STATE 0x40A3
+#define VAR_SAFARI_ZONE_STATE 0x40A4
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE_1 0x40A5
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE_2 0x40A6
+#define VAR_TRICK_HOUSE_ENTRANCE_STATE_3 0x40A7
+#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var
+#define VAR_CYCLING_CHALLENGE_STATE 0x40A9
+#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA
+#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB
+#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC
+#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD
+#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE
+#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF
+#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0
+#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1
+#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2
+#define VAR_WEATHER_INSTITUTE_STATE 0x40B3
+#define VAR_PORTHOLE_STATE 0x40B4
+#define VAR_TRICK_HOUSE_STATE 0x40B5 // TODO: needs some further investigation
+#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6
+#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7
+#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var
+#define VAR_MT_PYRE_STATE 0x40B9
+#define VAR_NEW_MAUVILLE_STATE 0x40BA
+#define VAR_UNUSED_0x40BB 0x40BB // Unused Var
+#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC
+#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD
+#define VAR_GLASS_WORKSHOP_STATE 0x40BE
+#define VAR_METEOR_FALLS_STATE 0x40BF
+#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE 0x40C0
+#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1
+#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2
+#define VAR_VICTORY_ROAD_1F_STATE 0x40C3
+#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4
+#define VAR_WHICH_FOSSIL_REVIVED 0x40C5
+#define VAR_STEVENS_HOUSE_STATE 0x40C6
+#define VAR_OLDALE_STATE 0x40C7
+#define VAR_JAGGED_PASS_STATE 0x40C8
+#define VAR_SCOTT_PETALBURG_ENCOUNTER 0x40C9
+#define VAR_SKY_PILLAR_STATE 0x40CA
+#define VAR_ROUTE_111_STATE 0x40CB
+#define VAR_FOSSIL_MANIAC_STATE 0x40CC
+#define VAR_CABLE_CLUB_TUTORIAL_STATE 0x40CD
+#define VAR_FRONTIER_BATTLE_MODE 0x40CE
+#define VAR_FRONTIER_FACILITY 0x40CF
+#define VAR_HAS_ENTERED_BATTLE_FRONTIER 0x40D0 // Var is used like a flag.
+#define VAR_SCOTT_STATE 0x40D1
+#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE 0x40D2
+#define VAR_0x40D3 0x40D3
+#define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL
+#define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios
+#define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6
+#define VAR_SKY_PILLAR_RAQUAZA_CRY_DONE 0x40D7
+#define VAR_SOOTOPOLIS_STATE 0x40D8
+#define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9
+#define VAR_0x40DA 0x40DA
+#define VAR_UNUSED_0x40DB 0x40DB // Unused Var
+#define VAR_UNUSED_0x40DC 0x40DC // Unused Var
+#define VAR_EVENT_PICHU_SLOT 0x40DD
+#define VAR_NEVER_READ_0x40DE 0x40DE // Var is written to, but never read
+#define VAR_NEVER_READ_0x40DF 0x40DF // Var is written to, but never read
+#define VAR_NEVER_READ_0x40E0 0x40E0 // Var is written to, but never read
+#define VAR_NEVER_READ_0x40E1 0x40E1 // Var is written to, but never read
+#define VAR_NEVER_READ_0x40E2 0x40E2 // Var is written to, but never read
+#define VAR_NEVER_READ_0x40E3 0x40E3 // Var is written to, but never read
+#define VAR_NEVER_READ_0x40E4 0x40E4 // var is written to, but never read
+#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var
+#define VAR_DAILY_SLOTS 0x40E6
+#define VAR_DAILY_WILDS 0x40E7
+#define VAR_DAILY_BLENDER 0x40E8
+#define VAR_DAILY_PLANTED_BERRIES 0x40E9
+#define VAR_DAILY_PICKED_BERRIES 0x40EA
+#define VAR_DAILY_ROULETTE 0x40EB
+#define VAR_SECRET_BASE_STEP_COUNTER 0x40EC // Used by Secret Base TV programs
+#define VAR_SECRET_BASE_LAST_ITEM_USED 0x40ED // Used by Secret Base TV programs
+#define VAR_SECRET_BASE_LOW_TV_FLAGS 0x40EE // Used by Secret Base TV programs
+#define VAR_SECRET_BASE_HIGH_TV_FLAGS 0x40EF // Used by Secret Base TV programs
+#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base.
+#define VAR_DAILY_BP 0x40F1
+#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2
+#define VAR_WINONA_CALL_STEP_COUNTER 0x40F3
+#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4
+#define VAR_SCOTT_CALL_STEP_COUNTER 0x40F5
+#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6
+#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var
+#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var
+#define VAR_UNUSED_0x40F9 0x40F9 // Unused Var
+#define VAR_UNUSED_0x40FA 0x40FA // Unused Var
+#define VAR_UNUSED_0x40FB 0x40FB // Unused Var
+#define VAR_UNUSED_0x40FC 0x40FC // Unused Var
+#define VAR_UNUSED_0x40FD 0x40FD // Unused Var
+#define VAR_UNUSED_0x40FE 0x40FE // Unused Var
+#define VAR_UNUSED_0x40FF 0x40FF // Unused Var
#define SPECIAL_VARS_START 0x8000
// special vars
// They are commonly used as parameters to commands, or return values from commands.
-#define VAR_0x8000 0x8000
-#define VAR_0x8001 0x8001
-#define VAR_0x8002 0x8002
-#define VAR_0x8003 0x8003
-#define VAR_0x8004 0x8004
-#define VAR_0x8005 0x8005
-#define VAR_0x8006 0x8006
-#define VAR_0x8007 0x8007
-#define VAR_0x8008 0x8008
-#define VAR_0x8009 0x8009
-#define VAR_0x800A 0x800A
-#define VAR_0x800B 0x800B
-#define VAR_FACING 0x800C
-#define VAR_RESULT 0x800D
-#define VAR_ITEM_ID 0x800E
-#define VAR_LAST_TALKED 0x800F
-#define VAR_CONTEST_RANK 0x8010
-#define VAR_CONTEST_CATEGORY 0x8011
-#define VAR_MON_BOX_ID 0x8012
-#define VAR_MON_BOX_POS 0x8013
-#define VAR_0x8014 0x8014
-#define VAR_0x8015 0x8015
+#define VAR_0x8000 0x8000
+#define VAR_0x8001 0x8001
+#define VAR_0x8002 0x8002
+#define VAR_0x8003 0x8003
+#define VAR_0x8004 0x8004
+#define VAR_0x8005 0x8005
+#define VAR_0x8006 0x8006
+#define VAR_0x8007 0x8007
+#define VAR_0x8008 0x8008
+#define VAR_0x8009 0x8009
+#define VAR_0x800A 0x800A
+#define VAR_0x800B 0x800B
+#define VAR_FACING 0x800C
+#define VAR_RESULT 0x800D
+#define VAR_ITEM_ID 0x800E
+#define VAR_LAST_TALKED 0x800F
+#define VAR_CONTEST_RANK 0x8010
+#define VAR_CONTEST_CATEGORY 0x8011
+#define VAR_MON_BOX_ID 0x8012
+#define VAR_MON_BOX_POS 0x8013
+#define VAR_UNUSED_0x8014 0x8014
+#define VAR_TRAINER_BATTLE_OPPONENT_A 0x8015 // Alias of gTrainerBattleOpponent_A
#endif // GUARD_CONSTANTS_VARS_H
diff --git a/include/constants/weather.h b/include/constants/weather.h
index d0a81c34c..b01cfb390 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -16,7 +16,7 @@
#define WEATHER_DROUGHT 12
#define WEATHER_RAIN_HEAVY 13
#define WEATHER_BUBBLES 14
-#define WEATHER_15 15
+#define WEATHER_ALTERNATING 15
#define WEATHER_ROUTE119_CYCLE 20
#define WEATHER_ROUTE123_CYCLE 21
@@ -37,4 +37,30 @@
#define COORD_EVENT_WEATHER_ROUTE119_CYCLE 20
#define COORD_EVENT_WEATHER_ROUTE123_CYCLE 21
+// These are the "unusual weather events" that are used
+// to find Kyogre and Groudon.
+#define UNUSUAL_WEATHER_COUNT_PER_LEGENDARY 8
+#define UNUSUAL_WEATHER_GROUDON_LOCATIONS_START 1
+#define UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START 1 + UNUSUAL_WEATHER_COUNT_PER_LEGENDARY
+
+#define UNUSUAL_WEATHER_NONE 0
+// Groudon locations
+#define UNUSUAL_WEATHER_ROUTE_114_NORTH 1
+#define UNUSUAL_WEATHER_ROUTE_114_SOUTH 2
+#define UNUSUAL_WEATHER_ROUTE_115_WEST 3
+#define UNUSUAL_WEATHER_ROUTE_115_EAST 4
+#define UNUSUAL_WEATHER_ROUTE_116_NORTH 5
+#define UNUSUAL_WEATHER_ROUTE_116_SOUTH 6
+#define UNUSUAL_WEATHER_ROUTE_118_EAST 7
+#define UNUSUAL_WEATHER_ROUTE_118_WEST 8
+// Kyogre locations
+#define UNUSUAL_WEATHER_ROUTE_105_NORTH 9
+#define UNUSUAL_WEATHER_ROUTE_105_SOUTH 10
+#define UNUSUAL_WEATHER_ROUTE_125_WEST 11
+#define UNUSUAL_WEATHER_ROUTE_125_EAST 12
+#define UNUSUAL_WEATHER_ROUTE_127_NORTH 13
+#define UNUSUAL_WEATHER_ROUTE_127_SOUTH 14
+#define UNUSUAL_WEATHER_ROUTE_129_WEST 15
+#define UNUSUAL_WEATHER_ROUTE_129_EAST 16
+
#endif // GUARD_CONSTANTS_WEATHER_H
diff --git a/include/contest.h b/include/contest.h
index e4391a327..8146486cb 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -478,5 +478,6 @@ bool32 sub_80FC4F4(void *, u16);
bool8 sub_80FC55C(void);
bool8 sub_80FC530(u8);
u8 sub_80F86E0(u8 *);
+void sub_80FC9F8(u8 taskId);
#endif //GUARD_CONTEST_H
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
index 608a925f5..bdb0fc95c 100644
--- a/include/dewford_trend.h
+++ b/include/dewford_trend.h
@@ -5,5 +5,7 @@ void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
void UpdateDewfordTrendPerDay(u16 days);
bool8 sub_81226D8(u16 *a);
+void ReceiveEasyChatPairsData(struct EasyChatPair *a, size_t b, u8 unused);
+
#endif // GUARD_DEWFORDTREND_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 23fd9ed83..84ac15422 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -2,18 +2,138 @@
#define GUARD_EASYCHAT_H
#include "main.h"
+#include "constants/easy_chat.h"
+
+struct EasyChatScreenTemplate
+{
+ u8 type;
+ u8 numColumns;
+ u8 numRows;
+ u8 frameId:7;
+ u8 fourFooterOptions:1;
+ const u8 *titleText;
+ const u8 *instructionsText1;
+ const u8 *instructionsText2;
+ const u8 *confirmText1;
+ const u8 *confirmText2;
+};
+
+struct EasyChatScreen
+{
+ /*0x00*/ u8 type;
+ /*0x01*/ u8 templateId;
+ /*0x02*/ u8 numColumns;
+ /*0x03*/ u8 numRows;
+ /*0x04*/ u8 state;
+ /*0x05*/ s8 mainCursorColumn;
+ /*0x06*/ s8 mainCursorRow;
+ /*0x07*/ u8 unk_07;
+ /*0x08*/ u8 stateBackup;
+ /*0x09*/ u8 unk_09;
+ /*0x0A*/ s8 unk_0a;
+ /*0x0B*/ s8 unk_0b;
+ /*0x0C*/ u8 unk_0c;
+ /*0x0D*/ u8 unk_0d;
+ /*0x0E*/ u8 unk_0e;
+ /*0x0F*/ u8 unk_0f;
+ /*0x10*/ s8 unk_10;
+ /*0x11*/ s8 unk_11;
+ /*0x12*/ u8 displayedPersonType;
+ /*0x13*/ u8 unk_13;
+ /*0x14*/ u8 unk_14[0x20];
+ /*0x34*/ const u8 *titleText;
+ /*0x38*/ u16 *words;
+ /*0x3C*/ u16 ecWordBuffer[9];
+};
+
+struct Unk203A11C
+{
+ u16 unk0;
+ u16 windowId;
+ u16 unk4;
+ u8 unk6;
+ u8 unk7;
+ s8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB[0xC1];
+ u8 unkCC[0x202];
+ u16 unk2CE;
+ int unk2D0;
+ int unk2D4;
+ struct Sprite *unk2D8;
+ struct Sprite *unk2DC;
+ struct Sprite *unk2E0;
+ struct Sprite *unk2E4;
+ struct Sprite *unk2E8;
+ struct Sprite *unk2EC;
+ struct Sprite *unk2F0;
+ struct Sprite *unk2F4;
+ struct Sprite *unk2F8;
+ struct Sprite *unk2FC;
+ u16 unk300[BG_SCREEN_SIZE / 2];
+ u16 unkB00[BG_SCREEN_SIZE / 2];
+};
+
+struct EasyChatPhraseFrameDimensions
+{
+ u8 left:5;
+ u8 top:3;
+ u8 width;
+ u8 height;
+ u8 footerId;
+};
+
+struct EasyChatWordInfo
+{
+ const u8 *text;
+ int alphabeticalOrder;
+ int enabled;
+};
+
+typedef union
+{
+ const u16 *valueList;
+ const struct EasyChatWordInfo *words;
+} EasyChatGroupWordData;
+
+struct EasyChatGroup
+{
+ EasyChatGroupWordData wordData;
+ u16 numWords;
+ u16 numEnabledWords;
+};
+
+struct Unk203A120
+{
+ u16 unk0;
+ u16 unk2[EC_NUM_GROUPS];
+ u16 unk2E[27];
+ u16 unk64[27][270];
+ u8 filler3958[0x2C];
+ u16 unk3984[0x10E];
+ u16 unk3BA0;
+}; /*size = 0x3BA4*/
+
+struct EasyChatWordsByLetter
+{
+ const u16 *words;
+ int numWords;
+};
void InitEasyChatPhrases(void);
-void easy_chat_input_maybe(void);
+void ShowEasyChatScreen(void);
u8 * CopyEasyChatWord(u8 *dest, u16 word);
-bool32 sub_811F8D8(u16 word);
+bool32 sub_811F8D8(int word);
void InitializeEasyChatWordArray(u16 *words, u16 length);
-void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
+u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows);
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
u16 sub_811EE38(u16 group);
u16 sub_811F01C(void);
-bool16 EasyChat_GetNumWordsInGroup(u8);
+u16 EasyChat_GetNumWordsInGroup(u8);
u16 sub_811EE90(u16);
-void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam);
+void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType);
+void sub_811F8BC(void);
+void sub_811EFC0(u8 additionalPhraseId);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_data.h b/include/event_data.h
index 3b8e2701f..11289c1ab 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -47,6 +47,6 @@ extern u16 gSpecialVar_LastTalked;
extern u16 gSpecialVar_Facing;
extern u16 gSpecialVar_MonBoxId;
extern u16 gSpecialVar_MonBoxPos;
-extern u16 gSpecialVar_0x8014;
+extern u16 gSpecialVar_Unused_0x8014;
#endif // GUARD_EVENT_DATA_H
diff --git a/include/event_obj_lock.h b/include/event_obj_lock.h
index 59532fdcb..2f09ad36a 100644
--- a/include/event_obj_lock.h
+++ b/include/event_obj_lock.h
@@ -7,5 +7,6 @@ bool8 sub_809847C(void);
void LockSelectedEventObject(void);
void sub_8098630(void);
bool8 sub_8098734(void);
+void ScriptUnfreezeEventObjects(void);
#endif // GUARD_EVENT_OBJ_LOCK_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 284bbe8db..63ac09f2d 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -193,6 +193,9 @@ void UpdateEventObjectSpriteVisibility(struct Sprite *sprite, bool8 invisible);
s16 sub_809773C(s16 a1);
s16 sub_8097728(s16 a1);
void CameraObjectReset2(void);
+u8 EventObjectGetBerryTreeId(u8 eventObjectId);
+void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
+bool8 IsBerryTreeSparkling(u8, u8, u8);
void MovementType_None(struct Sprite *);
void MovementType_LookAround(struct Sprite *);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 65e2c74b7..e3ec8afb4 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -564,7 +564,7 @@ extern const u8 EventScript_FallDownHole[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_EventScript_252BE8[];
extern const u8 EventScript_Poison[];
extern const u8 EventScript_EggHatch[];
-extern const u8 gUnknown_08273D1F[];
+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[];
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 738cceb3e..feb20cef6 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -39,5 +39,6 @@ int SetCableClubWarp(void);
u8 TrySetDiveWarp(void);
const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction);
u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position);
+void ClearPoisonStepCounter(void);
#endif // GUARD_FIELDCONTROLAVATAR_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 205dbb68a..1f5f4ee29 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -36,6 +36,10 @@ bool8 FieldEffectCmd_end(u8 **script, u32 *val);
bool8 FieldEffectCmd_loadgfx_callnative(u8 **script, u32 *val);
bool8 FieldEffectCmd_loadtiles_callnative(u8 **script, u32 *val);
bool8 FieldEffectCmd_loadfadedpal_callnative(u8 **script, u32 *val);
+void sub_80B6B68(void);
+void sub_80B6E4C(u8 a0, u8 priority);
+void sub_80B75D8(u8 priority);
+void sub_80B7A74(u8 priority);
void sub_80B9C28(s16*, u8);
void sub_80B9C54(s16*, u8);
@@ -47,5 +51,6 @@ void sub_80B7A58(struct Sprite*);
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority);
+void StartEscapeRopeFieldEffect(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index 6022467e4..6ea9771e6 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -34,5 +34,6 @@ void UpdateSparkleFieldEffect(struct Sprite*);
void SetSpriteInvisible(u8 spriteId);
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
void sub_8155604(u8 spriteId, u8 value, s16 data1);
+void sub_81555D8(u8 spriteId, u8 value);
#endif //GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 45cd0dbd9..ca3d41546 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -63,5 +63,15 @@ u8 sub_808BCD0(void);
void sub_808B578(void);
u8 GetFRLGAvatarGraphicsIdByGender(u8);
u8 GetRSAvatarGraphicsIdByGender(u8);
+void sub_808B980(u8 direction);
+void sub_808B9BC(u8 direction);
+void sub_808B9A4(u8 direction);
+void sub_808C1B4(u8 direction);
+void sub_808B9D4(u8 direction);
+void sub_808D194(void);
+void sub_808D1C8(void);
+bool32 sub_808D1B4(void);
+bool32 sub_808D1E8(void);
+void sub_808C0A8(u8 a);
#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 2b8b3a5a3..b4429c167 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -41,5 +41,6 @@ void sub_80B0534(void);
void sub_80B058C(void);
void sub_80B05B4(void);
void WriteFlashScanlineEffectBuffer(u8 flashLevel);
+bool8 walkrun_is_standing_still(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_special_scene.h b/include/field_special_scene.h
index 240e9ecb6..2219c9433 100644
--- a/include/field_special_scene.h
+++ b/include/field_special_scene.h
@@ -10,5 +10,6 @@ void Task_HandleTruckSequence(u8 taskId);
void ExecuteTruckSequence(void);
void EndTruckSequence(u8);
void sub_80C791C(void);
+void sub_80FB768(void);
#endif // GUARD_FIELD_SPECIAL_SCENE_H
diff --git a/include/field_specials.h b/include/field_specials.h
index bff04a739..68b233074 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -7,13 +7,13 @@ u16 get_unknown_box_id(void);
bool8 InMultiBattleRoom(void);
void sub_813BF10(void);
void IncrementBirthIslandRockStepCount(void);
-bool8 sub_813B3B0(void);
+bool8 UnusualWeatherHasExpired(void);
bool8 ShouldDoBrailleRegicePuzzle(void);
-bool32 is_tile_that_overrides_player_control(void);
-bool32 sub_8138120(void);
-bool32 sub_8138168(void);
-bool32 sub_81381B0(void);
-bool32 sub_81381F8(void);
+bool32 ShouldDoWallyCall(void);
+bool32 ShouldDoWinonaCall(void);
+bool32 ShouldDoScottCall(void);
+bool32 ShouldDoRoxanneCall(void);
+bool32 ShouldDoRivalRayquazaCall(void);
bool32 CountSSTidalStep(u16 delta);
u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y);
void sub_813A128(void);
@@ -26,6 +26,7 @@ void UpdateFrontierGambler(u16 a0);
void ResetCyclingRoadChallengeData(void);
bool8 warp0_in_pokecenter(void);
void ResetFanClub(void);
-
+bool8 sub_813B21C(void);
+void set_unknown_box_id(u8 id);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 2d73f2b94..76399200d 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -140,9 +140,9 @@ extern const u16 gUnknown_083970E8[];
extern const u8 gWeatherFog1Tiles[];
void StartWeather(void);
-void ChangeWeather(u8 weather);
-void sub_80AB104(u8 weather);
-void sub_80AB130(u8 weather);
+void SetNextWeather(u8 weather);
+void SetCurrentAndNextWeather(u8 weather);
+void SetCurrentAndNextWeatherNoDelay(u8 weather);
void sub_80ABC48(s8 gammaIndex);
void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
void FadeScreen(u8 mode, s8 delay);
@@ -162,7 +162,7 @@ bool8 Weather_UpdateBlend(void);
void sub_80AC274(u8 a);
u8 GetCurrentWeather(void);
void SetRainStrengthFromSoundEffect(u16 soundEffect);
-void PlayRainSoundEffect(void);
+void PlayRainStoppingSoundEffect(void);
u8 IsWeatherChangeComplete(void);
void SetWeatherScreenFadeOut(void);
void sub_80AC3E4(void);
@@ -233,6 +233,6 @@ void SetSav1WeatherFromCurrMapHeader(void);
void SetWeather(u32 weather);
void DoCurrentWeather(void);
void UpdateWeatherPerDay(u16 increment);
-void sub_80AEE84(void);
+void ResumePausedWeather(void);
#endif // GUARD_WEATHER_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 24bc4989a..bb5b0e290 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -9,6 +9,8 @@
#define NUM_PALS_TOTAL 13
#define MAX_MAP_DATA_SIZE 0x2800
+#include "main.h"
+
extern struct BackupMapLayout gBackupMapLayout;
u32 MapGridGetMetatileIdAt(int, int);
@@ -37,11 +39,16 @@ void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout);
void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout);
void apply_map_tileset2_palette(struct MapLayout const *mapLayout);
void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout);
-extern void copy_map_tileset1_to_vram(const struct MapLayout *);
-extern void copy_map_tileset2_to_vram(const struct MapLayout *);
+void copy_map_tileset1_to_vram(const struct MapLayout *);
+void copy_map_tileset2_to_vram(const struct MapLayout *);
+struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection);
+struct MapConnection *sub_8088A8C(s16 x, s16 y);
void SpriteCB_PokeballGlow(struct Sprite *);
void SpriteCB_PokecenterMonitor(struct Sprite *);
void SpriteCB_HallOfFameMonitor(struct Sprite *);
+// field_region_map.c
+void FieldInitRegionMap(MainCallback callback);
+
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 74a8363bb..e35d900d8 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -1,6 +1,13 @@
#ifndef GUARD_GLOBAL_FIELDMAP_H
#define GUARD_GLOBAL_FIELDMAP_H
+#define METATILE_COLLISION_MASK 0x0C00
+#define METATILE_ID_MASK 0x03FF
+#define METATILE_ID_UNDEFINED 0x03FF
+#define METATILE_ELEVATION_SHIFT 12
+#define METATILE_COLLISION_SHIFT 10
+#define METATILE_ELEVATION_MASK 0xF000
+
enum
{
CONNECTION_SOUTH = 1,
@@ -19,8 +26,8 @@ struct Tileset
/*0x01*/ bool8 isSecondary;
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
- /*0x0c*/ void *metatiles;
- /*0x10*/ void *metatileAttributes;
+ /*0x0c*/ u16 *metatiles;
+ /*0x10*/ u16 *metatileAttributes;
/*0x14*/ TilesetCB callback;
};
diff --git a/include/global.h b/include/global.h
index cc308c3c9..1f9ac5185 100644
--- a/include/global.h
+++ b/include/global.h
@@ -795,15 +795,15 @@ struct TrainerNameRecord
struct SaveTrainerHill
{
- /*0x3D64*/ u32 field_3D64;
- /*0x3D68*/ u32 field_3D68;
+ /*0x3D64*/ u32 timer;
+ /*0x3D68*/ u32 bestTime;
/*0x3D6C*/ u8 field_3D6C;
/*0x3D6D*/ u8 unused;
/*0x3D6E*/ u16 field_3D6E_0a:1; // 1
/*0x3D6E*/ u16 field_3D6E_0b:1; // 2
/*0x3D6E*/ u16 field_3D6E_0c:1; // 4
- /*0x3D6E*/ u16 field_3D6E_0d:1; // 8
- /*0x3D6E*/ u16 field_3D6E_0e:1; // x10
+ /*0x3D6E*/ u16 hasLost:1; // 8
+ /*0x3D6E*/ u16 maybeECardScanDuringChallenge:1; // x10
/*0x3D6E*/ u16 field_3D6E_0f:1; // x20
/*0x3D6E*/ u16 tag:2; // x40, x80 = xC0
};
@@ -870,13 +870,12 @@ struct SaveBlock1
/*0x2BA1*/ u8 outbreakPokemonProbability;
/*0x2BA2*/ u16 outbreakDaysLeft;
/*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;
- /*0x2BB0*/ u16 unk2BB0[6];
- /*0x2BBC*/ u16 unk2BBC[6];
- /*0x2BC8*/ u16 unk2BC8[6];
- /*0x2BD4*/ u16 unk2BD4[6];
+ /*0x2BB0*/ u16 easyChatProfile[6];
+ /*0x2BBC*/ u16 easyChatBattleStart[6];
+ /*0x2BC8*/ u16 easyChatBattleWon[6];
+ /*0x2BD4*/ u16 easyChatBattleLost[6];
/*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
- /*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
- /*0x2E25*/ u8 unk2E25[3]; // possibly padding?
+ /*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
@@ -907,13 +906,13 @@ struct MapPosition
s8 height;
};
-struct UnkStruct_8054FF8
+struct TradeRoomPlayer
{
- u8 a;
- u8 b;
+ u8 playerId;
+ u8 isLocalPlayer;
u8 c;
- u8 d;
- struct MapPosition sub;
+ u8 facing;
+ struct MapPosition pos;
u16 field_C;
};
diff --git a/include/graphics.h b/include/graphics.h
index d313bae11..c651268ca 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4020,22 +4020,22 @@ extern const u32 gPokenavLeftHeaderCondition_Gfx[];
extern const u32 gPokenavLeftHeaderRibbons_Gfx[];
extern const u32 gPokenavLeftHeaderMatchCall_Gfx[];
-extern const u32 gUnknown_08D9862C[];
+extern const u32 gPageInfoTilemap[];
extern const u32 gUnknown_08D98CC8[];
-extern const u32 gUnknown_08D987FC[];
-extern const u32 gUnknown_08D9898C[];
-extern const u32 gUnknown_08D98B28[];
-extern const u32 gUnknown_08D9853C[];
+extern const u32 gPageSkillsTilemap[];
+extern const u32 gPageBattleMovesTilemap[];
+extern const u32 gPageContestMovesTilemap[];
+extern const u32 gStatusScreenPalette[];
extern const u16 gUnknown_08D85620[];
extern const u16 gSummaryScreenWindow_Tilemap[];
extern const u32 gMoveTypes_Pal[];
-extern const u32 gUnknown_08D97D0C[];
+extern const u32 gStatusScreenBitmap[];
extern const u16 gSummaryScreenPowAcc_Tilemap[];
extern const u16 gUnknown_08DC3C34[];
extern const u32 gMoveTypes_Gfx[];
-extern const u32 gUnknown_08D97BEC[];
+extern const u32 gMoveSelectorBitmap[];
extern const u32 gUnknown_08D97CF4[];
extern const u32 gStatusGfx_Icons[];
extern const u32 gStatusPal_Icons[];
@@ -4893,6 +4893,11 @@ extern const u16 gFrontierPassMapCursor_Pal[];
// Easy Chat Screen
extern const u32 gEasyChatWindow_Gfx[];
extern const u32 gEasyChatWindow_Tilemap[];
+extern const u32 gEasyChatMode_Gfx[];
extern const u16 gEasyChatMode_Pal[];
+extern const u32 gEasyChatCursor_Gfx[];
+extern const u16 gEasyChatCursor_Pal[];
+extern const u32 gEasyChatRightWindow_Gfx[];
+extern const u16 gEasyChatRightWindow_Pal[];
#endif //GUARD_GRAPHICS_H
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index d35ecf268..5c8a01bcb 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -6,4 +6,7 @@ void CB2_DoHallOfFameScreenDontSaveData(void);
void CB2_DoHallOfFamePC(void);
void sub_8175280(void);
+// hof_pc.c
+void ReturnFromHallOfFamePC(void);
+
#endif // GUARD_HALL_OF_FAME_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 2ca1af200..70d6b5a94 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -2,6 +2,7 @@
#define GUARD_item_menu_H
#include "item.h"
+#include "menu_helpers.h"
#define RETURN_LOCATION_FIELD 0
#define RETURN_LOCATION_BATTLE 1
@@ -71,6 +72,7 @@ void sub_81AAC14(void);
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_81AAC28(void);
+void sub_81AABB0(void);
void SetInitialScrollAndCursorPositions(u8 pocketId);
void bag_menu_mail_related(void);
void CB2_BagMenuFromStartMenu(void);
@@ -80,6 +82,11 @@ void CB2_GoToSellMenu(void);
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
void DoWallyTutorialBagMenu(void);
void ResetBagScrollPositions(void);
+void sub_81AABF0(void (*callback)(void));
+void CB2_ChooseBerry(void);
+void unknown_ItemMenu_Confirm(u8 taskId);
+void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*);
+void sub_81AB9A8(u8 pocketId);
#endif //GUARD_item_menu_H
diff --git a/include/link.h b/include/link.h
index 11eff5c28..24a834c68 100644
--- a/include/link.h
+++ b/include/link.h
@@ -244,7 +244,7 @@ bool8 IsLinkTaskFinished(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
-void sub_800A620(void);
+void CheckShouldAdvanceLinkState(void);
void sub_8011BD0(void);
u8 IsLinkMaster(void);
void sub_800AC34(void);
@@ -261,6 +261,8 @@ void sub_800B3A4(u32 who);
bool32 sub_800A07C(void);
void sub_800AB98(void);
void sub_800AA04(u8 a0);
+void sub_800B4C0(void);
+bool32 sub_800B504(void);
extern u16 gLinkPartnersHeldKeys[6];
extern u32 gLinkDebugSeed;
@@ -299,8 +301,8 @@ extern struct LinkPlayer gLocalLinkPlayer;
bool32 Link_AnyPartnersPlayingRubyOrSapphire(void);
bool32 sub_800A03C(void);
-void sub_8009628(u8);
-u8 sub_800AA48(void);
+void SetLocalLinkPlayerId(u8);
+u8 GetSavedPlayerCount(void);
void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
@@ -312,7 +314,7 @@ void sub_800AB18(void);
void sub_8009F18(void);
bool8 sub_800AA60(void);
void sub_800ABF4(u16 a0);
-bool32 sub_8009F3C(void);
-u32 sub_800B4DC(void);
+bool32 IsSendingKeysToLink(void);
+u32 GetLinkRecvQueueLength(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index c91f9f1d3..5b8ccd9fb 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -219,7 +219,7 @@ void sub_800E700(void);
void sub_800EDD4(void);
void sub_800F6FC(u8 who);
void sub_800F728(u8 who);
-bool32 sub_800F7E4(void);
+bool32 IsSendingKeysToRfu(void);
void sub_800F804(void);
void sub_800F850(void);
u8 sub_800FCD8(void);
@@ -238,8 +238,8 @@ void sub_800E6D0(void);
bool32 sub_8010EC0(void);
bool32 sub_8010F1C(void);
bool32 sub_8011A80(void);
-bool32 sub_800F0B8(void);
-u32 sub_80124D4(void);
+bool32 IsRfuRecvQueueEmpty(void);
+u32 GetRfuRecvQueueLength(void);
void RfuVSync(void);
void sub_80111B0(bool32 a0);
u8 sub_8011A74(void);
diff --git a/include/main.h b/include/main.h
index 728064288..4f9a9e61a 100644
--- a/include/main.h
+++ b/include/main.h
@@ -61,14 +61,14 @@ void SetHBlankCallback(IntrCallback callback);
void SetVCountCallback(IntrCallback callback);
void SetSerialCallback(IntrCallback callback);
void InitFlashTimer(void);
-void sub_80008DC(u32 *var);
-void sub_80008E8(void);
+void SetTrainerHillVBlankCounter(u32 *var);
+void ClearTrainerHillVBlankCounter(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
-extern u16 GetGeneratedTrainerIdLower(void);
+u16 GetGeneratedTrainerIdLower(void);
#endif // GUARD_MAIN_H
diff --git a/include/match_call.h b/include/match_call.h
index 17d40d41c..6803d2f26 100644
--- a/include/match_call.h
+++ b/include/match_call.h
@@ -12,5 +12,9 @@ enum {
s32 GetRematchIdxByTrainerIdx(s32 trainerIdx);
void InitMatchCallCounters(void);
+bool32 TryStartMatchCall(void);
+bool32 IsMatchCallTaskActive(void);
+void StartMatchCallFromScript(u8* script);
+void sub_8197080(u8 *destStr);
#endif //GUARD_MATCH_CALL_H
diff --git a/include/menu.h b/include/menu.h
index aca462468..947f97a68 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -25,23 +25,23 @@ void InitStandardTextBoxWindows(void);
void sub_8197200(void);
u16 RunTextPrintersAndIsPrinter0Active(void);
void sub_81973A4(void);
-void NewMenuHelpers_DrawDialogueFrame(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
+void DrawDialogueFrame(u8, u8);
+void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 windowId, bool8 copyToVram);
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void DisplayYesNoMenu(void);
+void DisplayYesNoMenuDefaultYes(void);
u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
void sub_81978B0(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
void sub_8199DF0(u32 bg, u8 a1, int a2, int a3);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
-void sub_8198070(u8 windowId, bool8 copyToVram);
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs);
u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos);
@@ -60,9 +60,9 @@ s8 ProcessMenuInput_other(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds);
-void sub_8197DF8(u8 windowId, bool8 copyToVram);
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16);
void *malloc_and_decompress(const void *src, u32 *sizeOut);
u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
@@ -75,13 +75,13 @@ u8 GetStartMenuWindowId(void);
void sub_819A2BC(u8, u8);
u8 Menu_MoveCursor(s8 cursorDelta);
u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
-void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
+void DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
u8 sub_81979C4(u8 a1);
u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
void sub_819786C(u8 windowId, bool8 copyToVram);
void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress);
void RemoveStartMenuWindow(void);
-void sub_8197948(u8 initialCursorPos);
+void DisplayYesNoMenuWithDefault(u8 initialCursorPos);
void sub_819A344(u8 a0, u8 *dest, u8 color);
void RemoveMapNamePopUpWindow(void);
u8 GetMapNamePopUpWindowId(void);
diff --git a/include/overworld.h b/include/overworld.h
index 79cbf1da3..b86067701 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,6 +1,29 @@
#ifndef GUARD_OVERWORLD_H
#define GUARD_OVERWORLD_H
+#define LINK_KEY_CODE_NULL 0x00
+#define LINK_KEY_CODE_EMPTY 0x11
+#define LINK_KEY_CODE_DPAD_DOWN 0x12
+#define LINK_KEY_CODE_DPAD_UP 0x13
+#define LINK_KEY_CODE_DPAD_LEFT 0x14
+#define LINK_KEY_CODE_DPAD_RIGHT 0x15
+#define LINK_KEY_CODE_UNK_2 0x16
+#define LINK_KEY_CODE_EXIT_ROOM 0x17
+#define LINK_KEY_CODE_START_BUTTON 0x18
+#define LINK_KEY_CODE_A_BUTTON 0x19
+#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button?
+
+// These two are a hack to stop user input until link stuff can be
+// resolved.
+#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B
+#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C
+#define LINK_KEY_CODE_UNK_7 0x1D
+#define LINK_KEY_CODE_UNK_8 0x1E
+
+#define MOVEMENT_MODE_FREE 0
+#define MOVEMENT_MODE_FROZEN 1
+#define MOVEMENT_MODE_SCRIPTED 2
+
struct InitialPlayerAvatarState
{
u8 transitionFlags;
@@ -12,7 +35,7 @@ struct LinkPlayerEventObject
u8 active;
u8 linkPlayerId;
u8 eventObjId;
- u8 mode;
+ u8 movementMode;
};
// Exported RAM declarations
@@ -22,10 +45,10 @@ extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4];
extern u16 *gBGTilemapBuffers1;
extern u16 *gBGTilemapBuffers2;
extern u16 *gBGTilemapBuffers3;
-extern u16 gUnknown_03005DA8;
+extern u16 gHeldKeyCodeToSend;
extern void (*gFieldCallback)(void);
extern bool8 (*gFieldCallback2)(void);
-extern u8 gUnknown_03005DB4;
+extern u8 gLocalLinkPlayerId;
extern u8 gFieldLinkPlayerCount;
// Exported ROM declarations
@@ -68,7 +91,7 @@ void SetContinueGameWarpToDynamicWarp(int unused);
const struct MapConnection *GetMapConnection(u8 dir);
bool8 SetDiveWarpEmerge(u16 x, u16 y);
bool8 SetDiveWarpDive(u16 x, u16 y);
-void mliX_load_map(u8 mapGroup, u8 mapNum);
+void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum);
void ResetInitialPlayerAvatarState(void);
void StoreInitialPlayerAvatarState(void);
bool32 Overworld_IsBikingAllowed(void);
@@ -96,19 +119,19 @@ u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
u8 GetMapTypeByWarpData(struct WarpData *warp);
u8 GetCurrentMapType(void);
u8 GetLastUsedWarpMapType(void);
-bool8 is_map_type_1_2_3_5_or_6(u8 mapType);
+bool8 IsMapTypeOutdoors(u8 mapType);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
-bool8 Overworld_MapTypeIsIndoors(u8 mapType);
+bool8 IsMapTypeIndoors(u8 mapType);
u8 GetSavedWarpRegionMapSectionId(void);
u8 GetCurrentRegionMapSectionId(void);
u8 GetCurrentMapBattleScene(void);
void CleanupOverworldWindowsAndTilemaps(void);
-bool32 is_c1_link_related_active(void);
+bool32 IsUpdateLinkStateCBActive(void);
void CB1_Overworld(void);
void CB2_OverworldBasic(void);
void CB2_Overworld(void);
void SetMainCallback1(void (*cb)(void));
-void sub_8085E94(void *a0);
+void SetUnusedCallback(void *a0);
void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
@@ -117,18 +140,18 @@ void sub_8086074(void);
void CB2_ReturnToField(void);
void CB2_ReturnToFieldLocal(void);
void CB2_ReturnToFieldLink(void);
-void c2_8056854(void);
+void CB2_ReturnToFieldFromMultiplayer(void);
void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_ReturnToFieldContinueScript(void);
void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
void sub_80861E8(void);
void CB2_ContinueSavedGame(void);
-void sub_8086C2C(void);
+void ResetAllMultiplayerState(void);
u32 sub_8087214(void);
bool32 sub_808727C(void);
u16 sub_8087288(void);
u16 sub_808729C(void);
-u16 sub_80872B0(void);
+u16 QueueExitLinkRoomKey(void);
u16 sub_80872C4(void);
bool32 sub_8087598(void);
bool32 sub_80875C8(void);
diff --git a/include/party_menu.h b/include/party_menu.h
index 702b4fde1..413a89689 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -62,7 +62,7 @@ u8 sub_81B1B5C(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 sub_81B205C(struct Pokemon *mon);
+u8 GetMonAilment(struct Pokemon *mon);
void display_pokemon_menu_message(u32 stringID);
void sub_81B47E0(u8 taskId);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
@@ -85,7 +85,7 @@ u8 GetItemEffectType(u16 item);
void CB2_PartyMenuFromStartMenu(void);
void sub_81B7F60(void);
void sub_81B8448(void);
-void sub_81B8518(u8 unused);
+void InitChooseHalfPartyForBattle(u8 unused);
void sub_81B8558(void);
void sub_81B8904(u8 initArg, MainCallback callback);
void sub_81B892C(void);
diff --git a/include/pokedex.h b/include/pokedex.h
index 6136f7786..a1b7378bf 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -43,5 +43,7 @@ s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
bool16 HasAllHoennMons(void);
void ResetPokedexScrollPositions(void);
+u16 sub_80C0944(void);
+void CB2_Pokedex(void);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 507497683..60ccb27f4 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -431,9 +431,9 @@ extern const u8 *const gItemEffectTable[];
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
extern const u32 gExperienceTables[][MAX_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
-extern const u8 gUnknown_08329D22[];
-extern const u8 gUnknown_08329D26[];
-extern const u8 gUnknown_08329D2A[];
+extern const u8 gPPUpGetMask[];
+extern const u8 gPPUpSetMask[];
+extern const u8 gPPUpAddMask[];
extern const u8 gStatStageRatios[][2];
extern const u16 gUnknown_08329D54[];
extern const struct SpriteTemplate gUnknown_08329D98[];
@@ -583,7 +583,7 @@ const u8 *GetTrainerPartnerName(void);
void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneFrame);
-void sub_806EE98(void);
+void StopPokemonAnimationDelayTask(void);
void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
u8 sub_806EF08(u8 arg0);
u8 sub_806EF84(u8 arg0, u8 arg1);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 4f27ef281..c7b895028 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -23,5 +23,6 @@ void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
void sub_80D3014(struct Sprite *sprite);
void sub_80D32C8(struct Sprite *sprite, u8 animNum);
+u8 sub_80D30A0(u16 species);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index e2226b1e1..bd99fed0e 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -1,7 +1,7 @@
#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
#define GUARD_POKEMON_SUMMARY_SCREEN_H
-extern u8 gUnknown_0203CF20;
+extern u8 gLastViewedMonIndex;
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void sub_81C4F98(u8, void(*)(void));
diff --git a/include/pokenav.h b/include/pokenav.h
index e5dba8ae0..29ccaec3e 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -30,5 +30,6 @@ u32 sub_81D427C(void);
void sub_81D4998(void);
void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
+void CB2_InitPokeNav(void);
#endif //GUARD_POKENAV_H
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 0d50f46f9..4cd231e8a 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -7,7 +7,7 @@ struct PlayerHallRecords
struct RankingHall2P twoPlayers[2];
};
-void sub_80E6BE8(void);
+void RecordMixingPlayerSpotTriggered(void);
void GetPlayerHallRecords(struct PlayerHallRecords *dst);
#endif //GUARD_RECORD_MIXING_H
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
index faffd3375..ac9bbb5c3 100644
--- a/include/rom_8011DC0.h
+++ b/include/rom_8011DC0.h
@@ -17,5 +17,7 @@ u16 mevent_081445C0(u8);
void sub_801B990(u32, u32);
u8 sub_8013F78(void);
bool32 sub_802C908(u16);
+void nullsub_89(u8 taskId);
+void var_800D_set_xB(void);
#endif //GUARD_rom_8011DC0_H
diff --git a/include/save.h b/include/save.h
index 42ce8b3f3..88e5f2280 100644
--- a/include/save.h
+++ b/include/save.h
@@ -83,15 +83,16 @@ bool8 sub_8153380(void);
bool8 sub_81533AC(void);
u8 sub_81533E0(void);
u8 sub_8153408(void);
-u8 sub_8153430(void);
-bool8 sub_8153474(void);
+u8 FullSaveGame(void);
+bool8 CheckSaveFile(void);
u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void);
u8 sub_81534D0(u8);
-u8 sub_8153430(void);
-bool8 sub_8153474(void);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
+// save_failed_screen.c
+void DoSaveFailedScreen(u8 saveType);
+
#endif // GUARD_SAVE_H
diff --git a/include/script.h b/include/script.h
index 755ff19a3..34f4635bb 100644
--- a/include/script.h
+++ b/include/script.h
@@ -43,16 +43,16 @@ void ScriptContext1_SetupScript(const u8 *ptr);
void ScriptContext1_Stop(void);
void EnableBothScriptContexts(void);
void ScriptContext2_RunNewScript(const u8 *ptr);
-u8 *mapheader_get_tagged_pointer(u8 tag);
-void mapheader_run_script_by_tag(u8 tag);
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
-void mapheader_run_script_with_tag_x1(void);
-void mapheader_run_script_with_tag_x3(void);
-void mapheader_run_script_with_tag_x5(void);
-void mapheader_run_script_with_tag_x7(void);
-void mapheader_run_script_with_tag_x6(void);
-bool8 mapheader_run_first_tag2_script_list_match(void);
-void mapheader_run_first_tag4_script_list_match(void);
+u8 *MapHeaderGetScriptTable(u8 tag);
+void MapHeaderRunScriptType(u8 tag);
+u8 *MapHeaderCheckScriptTable(u8 tag);
+void RunOnLoadMapScript(void);
+void RunOnTransitionMapScript(void);
+void RunOnResumeMapScript(void);
+void RunOnReturnToFieldMapScript(void);
+void RunOnDiveWarpMapScript(void);
+bool8 TryRunOnFrameMapScript(void);
+void TryRunOnWarpIntoMapScript(void);
u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
@@ -61,4 +61,7 @@ bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
+// srccmd.h
+void sub_809BE48(u16 npcId);
+
#endif // GUARD_SCRIPT_H
diff --git a/include/script_menu.h b/include/script_menu.h
index a6d52c31e..1f4e549fe 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -14,5 +14,7 @@ u8 CreateWindowFromRect(u8, u8, u8, u8);
void sub_80E2A78(u8);
int display_text_and_get_width(const u8*, int);
int sub_80E2D5C(int arg0, int tileWidth);
+bool16 ScrSpecial_CreatePCMenu(void);
+void ScriptMenu_DisplayPCStartupPrompt(void);
#endif //GUARD_SCRIPT_MENU_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 699158d0e..17efc314d 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -33,6 +33,8 @@ void sub_80E8B6C(void);
void sub_80E8BC8(void);
void sub_80E8D4C(void);
void EnableBothScriptContexts(void);
+void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
+
#endif //GUARD_SECRET_BASE_H
diff --git a/include/siirtc.h b/include/siirtc.h
index 5864f95b8..de4fd634d 100644
--- a/include/siirtc.h
+++ b/include/siirtc.h
@@ -39,10 +39,10 @@ struct SiiRtcInfo
u8 alarmMinute;
};
-void SiiRtcUnprotect();
-void SiiRtcProtect();
-u8 SiiRtcProbe();
-bool8 SiiRtcReset();
+void SiiRtcUnprotect(void);
+void SiiRtcProtect(void);
+u8 SiiRtcProbe(void);
+bool8 SiiRtcReset(void);
bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc);
bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc);
bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc);
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 88bbbd91b..d441b7411 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,6 +1,20 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
+#define NUM_REELS 3
+#define REEL_NUM_TAGS 21
+#define REEL_TAG_HEIGHT 24
+
+// Lucky Flags
+#define LUCKY_BIAS_REPLAY (1 << 0)
+#define LUCKY_BIAS_CHERRY (1 << 1)
+#define LUCKY_BIAS_LOTAD (1 << 2)
+#define LUCKY_BIAS_AZURILL (1 << 3)
+#define LUCKY_BIAS_POWER (1 << 4)
+#define LUCKY_BIAS_REELTIME (1 << 5)
+#define LUCKY_BIAS_MIXED_777 (1 << 6)
+#define LUCKY_BIAS_777 (1 << 7)
+
void PlaySlotMachine(u8, void (callback)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/strings.h b/include/strings.h
index a3e743943..3899b63aa 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2430,5 +2430,130 @@ extern const u8 gText_CombineTwoWordsOrPhrases3[];
extern const u8 gText_OnlyOnePhrase[];
extern const u8 gText_YouCannotQuitHere[];
extern const u8 gText_SectionMustBeCompleted[];
+extern const u8 gText_ThreeQuestionMarks[];
+extern const u8 gText_Profile[];
+extern const u8 gText_CombineFourWordsOrPhrases[];
+extern const u8 gText_AndMakeYourProfile[];
+extern const u8 gText_YourProfile[];
+extern const u8 gText_IsAsShownOkay[];
+extern const u8 gText_AtTheBattlesStart[];
+extern const u8 gText_CombineSixWordsOrPhrases[];
+extern const u8 gText_AndMakeAMessage[];
+extern const u8 gText_YourFeelingAtTheBattlesStart[];
+extern const u8 gText_UponWinningABattle[];
+extern const u8 gText_WhatYouSayIfYouWin[];
+extern const u8 gText_UponLosingABattle[];
+extern const u8 gText_WhatYouSayIfYouLose[];
+extern const u8 gText_CombineNineWordsOrPhrases[];
+extern const u8 gText_AndMakeAMessage2[];
+extern const u8 gText_TheMailMessage[];
+extern const u8 gText_Interview[];
+extern const u8 gText_LetsReplyToTheInterview[];
+extern const u8 gText_TheAnswer[];
+extern const u8 gText_TheBardsSong[];
+extern const u8 gText_ChangeJustOneWordOrPhrase[];
+extern const u8 gText_AndImproveTheBardsSong[];
+extern const u8 gText_TheBardsSong2[];
+extern const u8 gText_FindWordsThatDescribeYour[];
+extern const u8 gText_FeelingsRightNow[];
+extern const u8 gText_WhatsHipAndHappening[];
+extern const u8 gText_CombineTwoWordsOrPhrases[];
+extern const u8 gText_AndMakeATrendySaying[];
+extern const u8 gText_TheTrendySaying[];
+extern const u8 gText_AfterYouHaveReadTheQuiz[];
+extern const u8 gText_QuestionPressTheAButton[];
+extern const u8 gText_TheQuizAnswerIs[];
+extern const u8 gText_OutOfTheListedChoices[];
+extern const u8 gText_SelectTheAnswerToTheQuiz[];
+extern const u8 gText_TheAnswerColon[];
+extern const u8 gText_AndCreateAQuiz[];
+extern const u8 gText_IsThisQuizOK[];
+extern const u8 gText_PickAWordOrPhraseAnd[];
+extern const u8 gText_SetTheQuizAnswer[];
+extern const u8 gText_ApprenticesPhrase[];
+extern const u8 gText_FindWordsWhichFit[];
+extern const u8 gText_TheTrainersImage[];
+extern const u8 gText_ApprenticePhrase[];
+extern const u8 gText_GoodSaying[];
+extern const u8 gText_CombineTwoWordsOrPhrases2[];
+extern const u8 gText_ToTeachHerAGoodSaying[];
+extern const u8 gText_FansQuestion[];
+extern const u8 gText_TheImage[];
+extern const u8 gText_Questionnaire[];
+extern const u8 gText_AndFillOutTheQuestionnaire[];
+extern const u8 gText_DelAll[];
+extern const u8 gText_Cancel5[];
+extern const u8 gText_Ok2[];
+extern const u8 gText_Quiz[];
+extern const u8 gText_Answer[];
+extern const u8 gEasyChatGroupName_Pokemon[];
+extern const u8 gEasyChatGroupName_Trainer[];
+extern const u8 gEasyChatGroupName_Status[];
+extern const u8 gEasyChatGroupName_Battle[];
+extern const u8 gEasyChatGroupName_Greetings[];
+extern const u8 gEasyChatGroupName_People[];
+extern const u8 gEasyChatGroupName_Voices[];
+extern const u8 gEasyChatGroupName_Speech[];
+extern const u8 gEasyChatGroupName_Endings[];
+extern const u8 gEasyChatGroupName_Feelings[];
+extern const u8 gEasyChatGroupName_Conditions[];
+extern const u8 gEasyChatGroupName_Actions[];
+extern const u8 gEasyChatGroupName_Lifestyle[];
+extern const u8 gEasyChatGroupName_Hobbies[];
+extern const u8 gEasyChatGroupName_Time[];
+extern const u8 gEasyChatGroupName_Misc[];
+extern const u8 gEasyChatGroupName_Adjectives[];
+extern const u8 gEasyChatGroupName_Events[];
+extern const u8 gEasyChatGroupName_Move1[];
+extern const u8 gEasyChatGroupName_Move2[];
+extern const u8 gEasyChatGroupName_TrendySaying[];
+extern const u8 gEasyChatGroupName_Pokemon2[];
+
+extern const u8 gUnknown_862B810[];
+extern const u8 gUnknown_862B832[];
+extern const u8 gUnknown_862B84B[];
+extern const u8 gUnknown_862B86C[];
+extern const u8 gUnknown_0862B88D[];
+extern const u8 gUnknown_0862B8AE[];
+extern const u8 gUnknown_0862B8CF[];
+extern const u8 gUnknown_0862B8F0[];
+extern const u8 gUnknown_0862B911[];
+extern const u8 gUnknown_0862B932[];
+extern const u8 gUnknown_0862B953[];
+extern const u8 gUnknown_0862B974[];
+extern const u8 gUnknown_0862B995[];
+extern const u8 gUnknown_0862B9AE[];
+extern const u8 gUnknown_0862B9C7[];
+extern const u8 gUnknown_0862B9E0[];
+extern const u8 gUnknown_0862B9F9[];
+extern const u8 gUnknown_0862B9FF[];
+extern const u8 gUnknown_0862BA05[];
+extern const u8 gUnknown_0862BA0B[];
+extern const u8 gUnknown_0862BA11[];
+extern const u8 gUnknown_0862BA17[];
+extern const u8 gUnknown_0862BA1D[];
+extern const u8 gUnknown_0862BA23[];
+extern const u8 gUnknown_0862BA29[];
+extern const u8 gUnknown_0862BA2F[];
+extern const u8 gUnknown_0862BA35[];
+extern const u8 gUnknown_0862BA3B[];
+extern const u8 gUnknown_0862BA41[];
+extern const u8 gUnknown_0862BA47[];
+extern const u8 gUnknown_0862BA4D[];
+extern const u8 gUnknown_0862BA53[];
+extern const u8 gUnknown_0862BA59[];
+extern const u8 gUnknown_0862BA5F[];
+extern const u8 gUnknown_0862BA65[];
+extern const u8 gUnknown_0862BA6B[];
+extern const u8 gUnknown_0862BA79[];
+extern const u8 gUnknown_0862BA84[];
+extern const u8 gUnknown_0862BA8F[];
+extern const u8 gUnknown_0862BA9A[];
+extern const u8 gUnknown_0862BAA3[];
+extern const u8 gUnknown_0862BAAE[];
+extern const u8 gUnknown_0862BAB9[];
+extern const u8 gUnknown_0862BAC4[];
+extern const u8 gUnknown_0862BACF[];
+extern const u8 gUnknown_0862BADA[];
#endif // GUARD_STRINGS_H
diff --git a/include/task.h b/include/task.h
index a199ba128..4852571b4 100644
--- a/include/task.h
+++ b/include/task.h
@@ -1,6 +1,9 @@
#ifndef GUARD_TASK_H
#define GUARD_TASK_H
+#define HEAD_SENTINEL 0xFE
+#define TAIL_SENTINEL 0xFF
+
#define NUM_TASKS 16
typedef void (*TaskFunc)(u8 taskId);
diff --git a/include/text.h b/include/text.h
index 96c5a4507..d8f2fd8a3 100644
--- a/include/text.h
+++ b/include/text.h
@@ -284,4 +284,8 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont9(u16 glyphId);
+// unk_text_util_2.c
+u16 Font6Func(struct TextPrinter *textPrinter);
+u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
+
#endif // GUARD_TEXT_H
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 1cadbd8fc..173d23baa 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -43,7 +43,7 @@ struct TrainerCard
extern struct TrainerCard gTrainerCards[4];
u32 CountPlayerTrainerStars(void);
-u8 sub_80C4904(u8 cardId);
+u8 GetTrainerCardStars(u8 cardId);
void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion);
void ShowPlayerTrainerCard(void (*callback)(void));
void ShowTrainerCardInLink(u8 arg0, void (*callback)(void));
diff --git a/include/trainer_hill.h b/include/trainer_hill.h
index bbc4f45c5..ad2713316 100644
--- a/include/trainer_hill.h
+++ b/include/trainer_hill.h
@@ -1,7 +1,7 @@
#ifndef GUARD_TRAINER_HILL_H
#define GUARD_TRAINER_HILL_H
-extern u32 *gUnknown_0203CF5C;
+extern u32 *gTrainerHillVBlankCounter;
void CallTrainerHillFunction(void);
void ResetTrainerHillResults(void);
diff --git a/include/tv.h b/include/tv.h
index a7ef3daa8..ec7ac1e89 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -1,6 +1,9 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
+#define SLOT_MACHINE 0
+#define ROULETTE 1
+
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
@@ -23,9 +26,9 @@ bool8 GetPriceReduction(u8 newsKind);
void sub_80F14F8(TVShow *shows);
size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
-void sub_80EDE70(u16 nCoinsSpent);
-void sub_80EDE84(u16 nCoinsSpent);
-void sub_80EDD78(u16 nCoinsPaidOut);
+void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
+void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
+void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
void sub_80EEA70(void);
void sub_80EDB44(void);
void sub_80EDC60(const u16 *words);
diff --git a/include/window.h b/include/window.h
index 25573ac3e..10e447789 100644
--- a/include/window.h
+++ b/include/window.h
@@ -1,6 +1,8 @@
#ifndef GUARD_WINDOW_H
#define GUARD_WINDOW_H
+#define PIXEL_FILL(num) ((num) | ((num) << 4))
+
enum
{
WINDOW_BG,
@@ -73,6 +75,4 @@ extern u32 filler_03002F58;
extern u32 filler_03002F5C;
extern u32 filler_03002F64;
-extern u8 gUnknown_03002F60;
-
#endif // GUARD_WINDOW_H