summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_message.c5
-rw-r--r--src/battle_setup.c26
-rw-r--r--src/battle_util2.c8
-rw-r--r--src/field_control_avatar.c1
-rw-r--r--src/field_poison.c1
-rw-r--r--src/fieldmap.c1
-rw-r--r--src/new_game.c4
-rw-r--r--src/overworld.c6
-rw-r--r--src/pokemon.c5
-rw-r--r--src/trainer_hill.c262
-rw-r--r--src/trainer_see.c6
11 files changed, 208 insertions, 117 deletions
diff --git a/src/battle_message.c b/src/battle_message.c
index 112ab9630..7b8085219 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -16,6 +16,7 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
+#include "trainer_hill.h"
#include "window.h"
#include "constants/battle_string_ids.h"
#include "constants/items.h"
@@ -41,10 +42,6 @@ extern u8 gUnknown_0203C7B4;
extern const u8 gTrainerClassNames[][13];
extern const u16 gUnknown_08D85620[];
-extern u8 GetTrainerHillOpponentClass(u16 trainerId); // pokenav
-extern void GetTrainerHillTrainerName(u8 *txtPtr, u16 trainerId); // pokenav
-extern void CopyTrainerHillTrainerText(u8 arg0, u16 trainerId); // pokenav
-
// this file's functions
static void ChooseMoveUsedParticle(u8 *textPtr);
static void ChooseTypeOfMoveUsedString(u8 *dst);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 195af0c28..f5e9e3e9e 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -29,6 +29,7 @@
#include "field_message_box.h"
#include "sound.h"
#include "strings.h"
+#include "trainer_hill.h"
#include "secret_base.h"
#include "string_util.h"
#include "overworld.h"
@@ -61,18 +62,9 @@ struct TrainerBattleParameter
u8 ptrType;
};
-extern bool32 InTrainerHill(void);
extern void ClearPoisonStepCounter(void);
extern void sub_808BCF4(void);
extern void sub_80AF6F0(void);
-extern u16 sub_81D6180(u8 localId);
-extern bool8 GetTrainerHillTrainerFlag(u8 eventObjId);
-extern bool8 sub_81D5C18(void);
-extern void sub_81D639C(void);
-extern void sub_81D6384(void);
-extern void sub_81D61E8(void);
-extern void sub_80982B8(void);
-extern void CopyTrainerHillTrainerText(u8 a0, u16 arg1);
// this file's functions
static void DoBattlePikeWildBattle(void);
@@ -1148,12 +1140,12 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
SetMapVarsToTrainer();
- gTrainerBattleOpponent_A = sub_81D6180(gSpecialVar_LastTalked);
+ gTrainerBattleOpponent_A = LocalIdToHillTrainerId(gSpecialVar_LastTalked);
}
else
{
TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
- gTrainerBattleOpponent_B = sub_81D6180(gSpecialVar_LastTalked);
+ gTrainerBattleOpponent_B = LocalIdToHillTrainerId(gSpecialVar_LastTalked);
}
return EventScript_TryDoNormalTrainerBattle;
default:
@@ -1215,7 +1207,7 @@ bool8 GetTrainerFlag(void)
if (InBattlePyramid())
return GetBattlePyramidTrainerFlag(gSelectedEventObject);
else if (InTrainerHill())
- return GetTrainerHillTrainerFlag(gSelectedEventObject);
+ return GetHillTrainerFlag(gSelectedEventObject);
else
return FlagGet(GetTrainerAFlag());
}
@@ -1281,11 +1273,11 @@ void BattleSetup_StartTrainerBattle(void)
gBattleTypeFlags |= BATTLE_TYPE_TRAINER_HILL;
if (gNoOfApproachingTrainers == 2)
- sub_81D639C();
+ FillHillTrainersParties();
else
- sub_81D6384();
+ FillHillTrainerParty();
- sub_81D61E8();
+ SetHillTrainerFlag();
}
sNoOfPossibleTrainerRetScripts = gNoOfApproachingTrainers;
@@ -1367,9 +1359,9 @@ void ShowTrainerIntroSpeech(void)
else if (sub_81D5C18())
{
if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
- CopyTrainerHillTrainerText(2, sub_81D6180(gSpecialVar_LastTalked));
+ CopyTrainerHillTrainerText(2, LocalIdToHillTrainerId(gSpecialVar_LastTalked));
else
- CopyTrainerHillTrainerText(2, sub_81D6180(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
+ CopyTrainerHillTrainerText(2, LocalIdToHillTrainerId(gEventObjects[gApproachingTrainers[gApproachingTrainerId].eventObjectId].localId));
sub_80982B8();
}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 0a0f65b95..9c0d55a57 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -3,21 +3,19 @@
#include "battle_controllers.h"
#include "alloc.h"
#include "pokemon.h"
+#include "trainer_hill.h"
#include "party_menu.h"
#include "event_data.h"
#include "constants/abilities.h"
#include "random.h"
#include "battle_scripts.h"
-extern void sub_81D55D0(void);
-extern void sub_81D5694(void);
-
void AllocateBattleResources(void)
{
gBattleResources = gBattleResources; // something dumb needed to match
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
- sub_81D55D0();
+ InitTrainerHillBattleStruct();
gBattleStruct = AllocZeroed(sizeof(*gBattleStruct));
@@ -47,7 +45,7 @@ void AllocateBattleResources(void)
void FreeBattleResources(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
- sub_81D5694();
+ FreeTrainerHillBattleStruct();
if (gBattleResources != NULL)
{
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 4f6f5acdf..00dce4c7d 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -25,6 +25,7 @@
#include "sound.h"
#include "start_menu.h"
#include "trainer_see.h"
+#include "trainer_hill.h"
#include "wild_encounter.h"
#include "constants/bg_event_constants.h"
#include "constants/event_objects.h"
diff --git a/src/field_poison.c b/src/field_poison.c
index fac17dea9..89cd02728 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -13,6 +13,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "trainer_hill.h"
#include "constants/species.h"
static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
diff --git a/src/fieldmap.c b/src/fieldmap.c
index d2ff34b1c..f67f61ede 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -11,6 +11,7 @@
#include "pokenav.h"
#include "script.h"
#include "secret_base.h"
+#include "trainer_hill.h"
#include "tv.h"
#include "constants/rgb.h"
diff --git a/src/new_game.c b/src/new_game.c
index 1b3fa2b00..158120245 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -17,6 +17,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "money.h"
+#include "trainer_hill.h"
#include "tv.h"
#include "coins.h"
#include "text.h"
@@ -49,7 +50,6 @@ extern void copy_strings_to_sav1(void);
extern void InitMatchCallCounters(void);
extern void sub_801AFD8(void);
extern void sub_800E5AC(void);
-extern void sub_81D54BC(void);
extern void ResetContestLinkResults(void);
extern void ResetPokeJumpResults(void);
extern void SetBerryPowder(u32* powder, u32 newValue);
@@ -212,7 +212,7 @@ void NewGameInitData(void)
InitMatchCallCounters();
sub_801AFD8();
sub_800E5AC();
- sub_81D54BC();
+ ResetTrainerHillResults();
ResetContestLinkResults();
}
diff --git a/src/overworld.c b/src/overworld.c
index 9df69e360..a67b4b68f 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -19,7 +19,6 @@
#include "field_tasks.h"
#include "field_weather.h"
#include "fieldmap.h"
-// #include "fldeff_flash.h"
#include "gpu_regs.h"
#include "heal_location.h"
#include "link.h"
@@ -50,6 +49,7 @@
#include "task.h"
// #include "tileset_anim.h"
#include "time_events.h"
+#include "trainer_hill.h"
#include "tv.h"
#include "scanline_effect.h"
#include "wild_encounter.h"
@@ -106,7 +106,6 @@ extern void apply_map_tileset2_palette(const struct MapLayout *);
extern void copy_map_tileset2_to_vram_2(const struct MapLayout *);
extern void RestartWildEncounterImmunitySteps(void);
extern void ShowMapNamePopup(void);
-extern bool32 InTrainerHill(void);
extern bool32 sub_808651C(void);
extern bool8 sub_80AF6A4(void);
extern bool8 sub_80E909C(void);
@@ -129,14 +128,11 @@ extern void WriteFlashScanlineEffectBuffer(u8);
extern void sub_81AA2F8(void);
extern void InitMatchCallCounters(void);
extern void sub_80EDB44(void);
-extern void sub_81D64C0(void);
extern void InitFieldMessageBox(void);
extern void copy_map_tileset1_to_vram(const struct MapLayout *);
extern void copy_map_tileset2_to_vram(const struct MapLayout *);
extern void FieldUpdateBgTilemapScroll(void);
extern void TransferTilesetAnimsBuffer(void);
-extern bool32 sub_81D5F48(void);
-extern u8 GetCurrentTrainerHillMapId(void);
extern bool8 warp0_in_pokecenter(void);
extern void ResetAllPicSprites(void);
extern void FieldEffectActiveListClear(void);
diff --git a/src/pokemon.c b/src/pokemon.c
index 10371842b..174f7ae66 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -22,7 +22,6 @@
#include "pokemon_animation.h"
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
-#include "pokenav.h"
#include "random.h"
#include "recorded_battle.h"
#include "rtc.h"
@@ -31,6 +30,7 @@
#include "strings.h"
#include "task.h"
#include "text.h"
+#include "trainer_hill.h"
#include "util.h"
#include "constants/abilities.h"
#include "constants/battle_frontier.h"
@@ -74,7 +74,6 @@ extern const u8 gTrainerClassNames[][13];
extern u16 get_unknown_box_id(void);
extern void set_unknown_box_id(u8);
extern bool8 sub_806F104(void);
-extern u8 sub_81D63C8(u16 trainerOpponentId);
// this file's functions
static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
@@ -6083,7 +6082,7 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
if (InBattlePyramid())
return GetTrainerEncounterMusicIdInBattlePyramind(trainerOpponentId);
else if (sub_81D5C18())
- return sub_81D63C8(trainerOpponentId);
+ return GetTrainerEncounterMusicIdInTrainerHill(trainerOpponentId);
else
return TRAINER_ENCOUNTER_MUSIC(trainerOpponentId);
}
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 20d686c88..7796d25bf 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -4,6 +4,7 @@
#include "battle_tower.h"
#include "battle_setup.h"
#include "event_data.h"
+#include "event_scripts.h"
#include "fieldmap.h"
#include "field_message_box.h"
#include "international_string_util.h"
@@ -22,7 +23,11 @@
#include "util.h"
#include "constants/event_object_movement_constants.h"
#include "constants/event_objects.h"
+#include "constants/items.h"
#include "constants/maps.h"
+#include "constants/trainers.h"
+
+extern bool32 sub_81D3B34(void);
#define HILL_TAG_NORMAL 0
#define HILL_TAG_VARIETY 1
@@ -69,6 +74,8 @@ struct TrHillTag
u8 unkField_2;
u8 unused3;
u8 unused4;
+ u8 unused5;
+ u8 unused6;
struct TrHillFloor floors[4];
};
@@ -84,55 +91,155 @@ static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL;
EWRAM_DATA u32 *gUnknown_0203CF5C = NULL;
// This file's functions.
-void sub_81D581C(void);
-void sub_81D58D8(void);
-void sub_81D5924(void);
-void sub_81D59D0(void);
-void sub_81D5A70(void);
-void sub_81D5AB4(void);
-void sub_81D5AD0(void);
-void sub_81D5B2C(void);
-void sub_81D5BBC(void);
-void sub_81D5C00(void);
-void sub_81D5C5C(void);
-void sub_81D62B4(void);
-void sub_81D64AC(void);
-void sub_81D64DC(void);
-void sub_81D64FC(void);
-void sub_81D6518(void);
-void sub_81D6568(void);
-void sub_81D65A0(void);
-void SetUpDataStruct(void);
-void FreeDataStruct(void);
-bool32 sub_81D5F48(void);
-void nullsub_2(void);
-void SetTimerValue(u32 *dst, u32 val);
-bool32 sub_81D3B34(void);
-u16 sub_81D6640(void);
-u32 GetTimerValue(u32 *src);
-u8 GetCurrentTrainerHillMapId(void);
-u8 sub_81D6490(void);
-void sub_81D642C(struct Pokemon *mon, u8 level);
-bool32 sub_81D6534(void);
+static void sub_81D581C(void);
+static void sub_81D58D8(void);
+static void sub_81D5924(void);
+static void sub_81D59D0(void);
+static void sub_81D5A70(void);
+static void sub_81D5AB4(void);
+static void sub_81D5AD0(void);
+static void sub_81D5B2C(void);
+static void sub_81D5BBC(void);
+static void sub_81D5C00(void);
+static void sub_81D5C5C(void);
+static void sub_81D62B4(void);
+static void sub_81D64AC(void);
+static void sub_81D64DC(void);
+static void sub_81D64FC(void);
+static void sub_81D6518(void);
+static void sub_81D6568(void);
+static void sub_81D65A0(void);
+static void SetUpDataStruct(void);
+static void FreeDataStruct(void);
+static void nullsub_2(void);
+static void SetTimerValue(u32 *dst, u32 val);
+static u32 GetTimerValue(u32 *src);
+static void sub_81D642C(struct Pokemon *mon, u8 level);
+static u16 sub_81D6640(void);
// const data
-extern const u8 gText_TimeBoard[];
-extern const u8 gText_TimeCleared[];
-extern const u8 gText_XMinYDotZSec[];
-
+// I will decompile these soon, no worries :)
extern const struct TrHillTag gUnknown_08626814;
extern const struct TrHillTag gUnknown_086276FC;
extern const struct TrHillTag gUnknown_086285E4;
extern const struct TrHillTag gUnknown_086294CC;
-extern const u16 *const *const gUnknown_0862A5CC[];
struct
{
u8 trainerClass;
u8 musicId;
-} extern const gUnknown_0862A3B4[0x36];
+} static const gUnknown_0862A3B4[] =
+{
+ {TRAINER_CLASS_TEAM_AQUA, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AQUA_ADMIN, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AQUA_LEADER, TRAINER_ENCOUNTER_MUSIC_AQUA},
+ {TRAINER_CLASS_AROMA_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_BATTLE_GIRL, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SWIMMER_F, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_POKEFAN, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_DRAGON_TAMER, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_COOLTRAINER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_GUITARIST, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SAILOR, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TWINS, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_INTERVIEWER, TRAINER_ENCOUNTER_MUSIC_INTERVIEWER},
+ {TRAINER_CLASS_RUIN_MANIAC, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_GENTLEMAN, TRAINER_ENCOUNTER_MUSIC_RICH},
+ {TRAINER_CLASS_SWIMMER_M, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_POKEMANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_BLACK_BELT, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_OLD_COUPLE, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_BUG_MANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_CAMPER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_KINDLER, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_TEAM_MAGMA, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_MAGMA_ADMIN, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_MAGMA_LEADER, TRAINER_ENCOUNTER_MUSIC_MAGMA},
+ {TRAINER_CLASS_LASS, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_BUG_CATCHER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_NINJA_BOY, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_RICH_BOY, TRAINER_ENCOUNTER_MUSIC_RICH},
+ {TRAINER_CLASS_HEX_MANIAC, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_BEAUTY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_PARASOL_LADY, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_PICNICKER, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_PKMN_BREEDER, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_COLLECTOR, TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS},
+ {TRAINER_CLASS_PKMN_RANGER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_PKMN_TRAINER_3, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_YOUNG_COUPLE, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_PSYCHIC, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_SR_AND_JR, TRAINER_ENCOUNTER_MUSIC_TWINS},
+ {TRAINER_CLASS_ELITE_FOUR, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_YOUNGSTER, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_EXPERT, TRAINER_ENCOUNTER_MUSIC_INTENSE},
+ {TRAINER_CLASS_TRIATHLETE, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_BIRD_KEEPER, TRAINER_ENCOUNTER_MUSIC_COOL},
+ {TRAINER_CLASS_FISHERMAN, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_CHAMPION, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TUBER_M, TRAINER_ENCOUNTER_MUSIC_MALE},
+ {TRAINER_CLASS_TUBER_F, TRAINER_ENCOUNTER_MUSIC_GIRL},
+ {TRAINER_CLASS_SIS_AND_BRO, TRAINER_ENCOUNTER_MUSIC_SWIMMER},
+ {TRAINER_CLASS_HIKER, TRAINER_ENCOUNTER_MUSIC_HIKER},
+ {TRAINER_CLASS_LEADER, TRAINER_ENCOUNTER_MUSIC_FEMALE},
+ {TRAINER_CLASS_SCHOOL_KID, TRAINER_ENCOUNTER_MUSIC_MALE},
+};
+
+static const u16 gUnknown_0862A48C[] = {ITEM_RARE_CANDY, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A498[] = {ITEM_LUXURY_BALL, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4A4[] = {ITEM_MAX_REVIVE, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4B0[] = {ITEM_MAX_ETHER, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4BC[] = {ITEM_ELIXIR, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4C8[] = {ITEM_TM05_ROAR, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4D4[] = {ITEM_TM36_SLUDGE_BOMB, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4E0[] = {ITEM_TM06_TOXIC, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4EC[] = {ITEM_TM11_SUNNY_DAY, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A4F8[] = {ITEM_TM26_EARTHQUAKE, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A504[] = {ITEM_RARE_CANDY, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A510[] = {ITEM_LUXURY_BALL, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A51C[] = {ITEM_MAX_REVIVE, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A528[] = {ITEM_MAX_ETHER, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A534[] = {ITEM_ELIXIR, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A540[] = {ITEM_TM31_BRICK_BREAK, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A54C[] = {ITEM_TM41_TORMENT, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A558[] = {ITEM_TM48_SKILL_SWAP, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A564[] = {ITEM_TM19_GIGA_DRAIN, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+static const u16 gUnknown_0862A570[] = {ITEM_TM45_ATTRACT, ITEM_ETHER, ITEM_MAX_POTION, ITEM_REVIVE, ITEM_FLUFFY_TAIL, ITEM_GREAT_BALL};
+
+static const u16 *const gUnknown_0862A57C[] =
+{
+ gUnknown_0862A48C,
+ gUnknown_0862A498,
+ gUnknown_0862A4A4,
+ gUnknown_0862A4B0,
+ gUnknown_0862A4BC,
+ gUnknown_0862A4C8,
+ gUnknown_0862A4D4,
+ gUnknown_0862A4E0,
+ gUnknown_0862A4EC,
+ gUnknown_0862A4F8
+};
-extern const u8 EventScript_2C83F0[];
+static const u16 *const gUnknown_0862A5A4[] =
+{
+ gUnknown_0862A504,
+ gUnknown_0862A510,
+ gUnknown_0862A51C,
+ gUnknown_0862A528,
+ gUnknown_0862A534,
+ gUnknown_0862A540,
+ gUnknown_0862A54C,
+ gUnknown_0862A558,
+ gUnknown_0862A564,
+ gUnknown_0862A570
+};
+
+static const u16 *const *const gUnknown_0862A5CC[] =
+{
+ gUnknown_0862A57C,
+ gUnknown_0862A5A4
+};
static const u16 gUnknown_0862A5D4[] = INCBIN_U16("graphics/pokenav/862A5D4.gbapal");
static const u8 sRecordWinColors[] = {0, 2, 3};
@@ -197,6 +304,7 @@ static const struct EventObjectTemplate gUnknown_0862A670 =
static const u32 gUnknown_0862A688[] = {MAP_NUM(TRAINER_HILL_2F), MAP_NUM(TRAINER_HILL_3F), MAP_NUM(TRAINER_HILL_4F), MAP_NUM(TRAINER_HILL_ROOF)};
static const u8 gUnknown_0862A698[][3] = {{0, 1, 2}, {3, 4, 5}};
+// code
void CallTrainerHillFunction(void)
{
SetUpDataStruct();
@@ -204,7 +312,7 @@ void CallTrainerHillFunction(void)
FreeDataStruct();
}
-void sub_81D54BC(void)
+void ResetTrainerHillResults(void)
{
s32 i;
@@ -215,7 +323,7 @@ void sub_81D54BC(void)
SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME);
}
-u8 GetFloorId(void)
+static u8 GetFloorId(void)
{
return gMapHeader.mapLayoutId - 159;
}
@@ -248,7 +356,7 @@ u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId)
return gFacilityClassToPicIndex[facilityClass];
}
-void sub_81D55D0(void)
+void InitTrainerHillBattleStruct(void)
{
s32 i, j;
@@ -267,13 +375,13 @@ void sub_81D55D0(void)
FreeDataStruct();
}
-void sub_81D5694(void)
+void FreeTrainerHillBattleStruct(void)
{
if (sRoomTrainers != NULL)
FREE_AND_SET_NULL(sRoomTrainers);
}
-void SetUpDataStruct(void)
+static void SetUpDataStruct(void)
{
if (sHillData == NULL)
{
@@ -284,7 +392,7 @@ void SetUpDataStruct(void)
}
}
-void FreeDataStruct(void)
+static void FreeDataStruct(void)
{
if (sHillData != NULL)
FREE_AND_SET_NULL(sHillData);
@@ -317,7 +425,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId)
FreeDataStruct();
}
-void sub_81D581C(void)
+static void sub_81D581C(void)
{
nullsub_2();
if (!sub_81D3B34())
@@ -336,7 +444,7 @@ void sub_81D581C(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0a = 0;
}
-void sub_81D58D8(void)
+static void sub_81D58D8(void)
{
sub_80008E8();
gSpecialVar_Result = 0;
@@ -348,7 +456,7 @@ void sub_81D58D8(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0c = 1;
}
-void sub_81D5924(void)
+static void sub_81D5924(void)
{
u16 itemId = sub_81D6640();
@@ -369,7 +477,7 @@ void sub_81D5924(void)
}
}
-void sub_81D59D0(void)
+static void sub_81D59D0(void)
{
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0b)
{
@@ -389,7 +497,7 @@ void sub_81D59D0(void)
gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 1;
}
-void sub_81D5A70(void)
+static void sub_81D5A70(void)
{
if (!gSaveBlock1Ptr->trainerHill.field_3D6E_0c)
{
@@ -400,12 +508,12 @@ void sub_81D5A70(void)
}
}
-void sub_81D5AB4(void)
+static void sub_81D5AB4(void)
{
gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 1;
}
-void sub_81D5AD0(void)
+static void sub_81D5AD0(void)
{
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
{
@@ -423,7 +531,7 @@ void sub_81D5AD0(void)
}
}
-void sub_81D5B2C(void)
+static void sub_81D5B2C(void)
{
s32 total, minutes, secondsWhole, secondsFraction;
@@ -442,7 +550,7 @@ void sub_81D5B2C(void)
ConvertIntToDecimalStringN(gStringVar3, secondsFraction, STR_CONV_MODE_LEADING_ZEROS, 2);
}
-void sub_81D5BBC(void)
+static void sub_81D5BBC(void)
{
SetUpDataStruct();
if (sHillData->tag.unkField_2 != 4)
@@ -458,7 +566,7 @@ void sub_81D5BBC(void)
FreeDataStruct();
}
-void sub_81D5C00(void)
+static void sub_81D5C00(void)
{
SetUpDataStruct();
gSpecialVar_Result = 0;
@@ -477,7 +585,7 @@ bool8 sub_81D5C18(void)
return FALSE;
}
-void sub_81D5C5C(void)
+static void sub_81D5C5C(void)
{
if (!sub_81D5C18())
gSpecialVar_Result = 0;
@@ -490,7 +598,7 @@ void nullsub_129(void)
}
-void nullsub_2(void)
+static void nullsub_2(void)
{
}
@@ -532,12 +640,12 @@ void PrintOnTrainerHillRecordsWindow(void)
// Leftover from Fire Red / Leaf Green as in these games,
// the timer had to be xored by the encryption key in Sav2.
-u32 GetTimerValue(u32 *src)
+static u32 GetTimerValue(u32 *src)
{
return *src;
}
-void SetTimerValue(u32 *dst, u32 val)
+static void SetTimerValue(u32 *dst, u32 val)
{
*dst = val;
}
@@ -584,7 +692,7 @@ bool32 sub_81D5F48(void)
// Functionally equivalent.
#ifdef NONMATCHING
-u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
+static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
{
u32 var0, var1, var2, var3;
@@ -597,7 +705,7 @@ u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
}
#else
NAKED
-u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
+static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
{
asm_unified("\n\
push {r4,r5,lr}\n\
@@ -729,7 +837,7 @@ u8 GetCurrentTrainerHillMapId(void)
return ret;
}
-bool32 sub_81D6100(void)
+static bool32 sub_81D6100(void)
{
bool32 ret;
@@ -764,12 +872,12 @@ const struct WarpEvent* sub_81D6134(u8 warpEventId)
return &header->events->warps[0];
}
-u16 sub_81D6180(u8 localId)
+u16 LocalIdToHillTrainerId(u8 localId)
{
return gSaveBlock2Ptr->frontier.field_CB4[localId - 1];
}
-bool8 GetTrainerHillTrainerFlag(u8 eventObjectId)
+bool8 GetHillTrainerFlag(u8 eventObjectId)
{
u32 floorId = GetFloorId() * 2;
u8 bitId = gEventObjects[eventObjectId].localId - 1 + floorId;
@@ -777,7 +885,7 @@ bool8 GetTrainerHillTrainerFlag(u8 eventObjectId)
return gSaveBlock2Ptr->frontier.field_EE0 & gBitTable[bitId];
}
-void sub_81D61E8(void)
+void SetHillTrainerFlag(void)
{
u8 i;
u8 floorId = GetFloorId() * 2;
@@ -809,13 +917,13 @@ const u8 *sub_81D62AC(void)
return EventScript_2C83F0;
}
-void sub_81D62B4(void)
+static void sub_81D62B4(void)
{
CopyTrainerHillTrainerText(5, gSpecialVar_LastTalked);
sub_80982B8();
}
-void sub_81D62CC(u16 trainerId, u8 firstMonId)
+static void sub_81D62CC(u16 trainerId, u8 firstMonId)
{
u8 trId, level;
s32 i, floorId, arrId;
@@ -839,13 +947,13 @@ void sub_81D62CC(u16 trainerId, u8 firstMonId)
FreeDataStruct();
}
-void sub_81D6384(void)
+void FillHillTrainerParty(void)
{
ZeroEnemyPartyMons();
sub_81D62CC(gTrainerBattleOpponent_A, 0);
}
-void sub_81D639C(void)
+void FillHillTrainersParties(void)
{
ZeroEnemyPartyMons();
sub_81D62CC(gTrainerBattleOpponent_A, 0);
@@ -860,7 +968,7 @@ u32 sub_81D63C4(void)
return 7;
}
-u8 sub_81D63C8(u16 trainerId)
+u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId)
{
s32 i;
u8 trId, facilityClass;
@@ -879,7 +987,7 @@ u8 sub_81D63C8(u16 trainerId)
return 0;
}
-void sub_81D642C(struct Pokemon *mon, u8 level)
+static void sub_81D642C(struct Pokemon *mon, u8 level)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u32 exp = gExperienceTables[gBaseStats[species].growthRate][level];
@@ -900,7 +1008,7 @@ u8 sub_81D6490(void)
return ret;
}
-void sub_81D64AC(void)
+static void sub_81D64AC(void)
{
gSaveBlock2Ptr->frontier.field_EE0 = 0xFF;
}
@@ -911,17 +1019,17 @@ void sub_81D64C0(void)
LoadPalette(gUnknown_0862A5D4, 0x70, 0x20);
}
-void sub_81D64DC(void)
+static void sub_81D64DC(void)
{
gSpecialVar_Result = gSaveBlock2Ptr->frontier.field_EF9_1;
}
-void sub_81D64FC(void)
+static void sub_81D64FC(void)
{
gSaveBlock2Ptr->frontier.field_EF9_1 = 1;
}
-void sub_81D6518(void)
+static void sub_81D6518(void)
{
gSaveBlock2Ptr->frontier.field_EF9_1 = 0;
}
@@ -938,7 +1046,7 @@ bool32 sub_81D6534(void)
return TRUE;
}
-void sub_81D6568(void)
+static void sub_81D6568(void)
{
if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d)
gSpecialVar_Result = 0;
@@ -946,13 +1054,13 @@ void sub_81D6568(void)
gSpecialVar_Result = 1;
}
-void sub_81D65A0(void)
+static void sub_81D65A0(void)
{
gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005;
gSaveBlock1Ptr->trainerHill.field_3D68 = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005];
}
-u8 sub_81D65E8(u8 arg0)
+static u8 sub_81D65E8(u8 arg0)
{
u8 var, i, modBy;
@@ -972,7 +1080,7 @@ u8 sub_81D65E8(u8 arg0)
return var;
}
-u16 sub_81D6640(void)
+static u16 sub_81D6640(void)
{
u8 i;
const u16 *ptr;
diff --git a/src/trainer_see.c b/src/trainer_see.c
index eeebcb575..3846eca46 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -6,18 +6,16 @@
#include "field_effect.h"
#include "field_player_avatar.h"
#include "pokemon.h"
-#include "pokenav.h"
#include "script.h"
#include "script_movement.h"
#include "sprite.h"
#include "task.h"
#include "trainer_see.h"
+#include "trainer_hill.h"
#include "util.h"
#include "battle_pyramid.h"
#include "constants/field_effects.h"
-extern bool32 InTrainerHill(void);
-extern bool8 GetTrainerHillTrainerFlag(u8 eventObjectId);
extern void sub_809BE48(u16 npcId);
// this file's functions
@@ -240,7 +238,7 @@ static u8 CheckTrainer(u8 eventObjectId)
}
else if (InTrainerHill() == TRUE)
{
- if (GetTrainerHillTrainerFlag(eventObjectId))
+ if (GetHillTrainerFlag(eventObjectId))
return 0;
}
else