diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_message.c | 5 | ||||
-rw-r--r-- | src/battle_setup.c | 26 | ||||
-rw-r--r-- | src/battle_util2.c | 8 | ||||
-rw-r--r-- | src/field_control_avatar.c | 1 | ||||
-rw-r--r-- | src/field_poison.c | 1 | ||||
-rw-r--r-- | src/fieldmap.c | 1 | ||||
-rw-r--r-- | src/new_game.c | 4 | ||||
-rw-r--r-- | src/overworld.c | 6 | ||||
-rw-r--r-- | src/pokemon.c | 5 | ||||
-rw-r--r-- | src/trainer_hill.c | 262 | ||||
-rw-r--r-- | src/trainer_see.c | 6 |
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 |