From fc3783b7395b25d290ec650d79fbdc80518046cd Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 14 Nov 2019 18:56:18 -0500 Subject: WIP Document apprentice --- include/apprentice.h | 2 +- include/constants/apprentice.h | 33 +++++++++++++++++++++++++++++++++ include/constants/global.h | 2 ++ include/constants/pokemon.h | 4 ++++ include/global.h | 28 +++++++++++++++------------- include/strings.h | 4 ++++ 6 files changed, 59 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index 195106c53..ac7dff886 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -1,7 +1,7 @@ #ifndef GUARD_APPRENTICE_H #define GUARD_APPRENTICE_H -#define APPRENTICE_SPECIES_COUNT 10 +#include "constants/apprentice.h" struct ApprenticeTrainer { diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 9db58bb8e..61f257767 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -1,6 +1,39 @@ #ifndef GUARD_CONSTANTS_APPRENTICE_H #define GUARD_CONSTANTS_APPRENTICE_H +#define APPRENTICE_SPECIES_COUNT 10 +#define NUM_APPRENTICES 16 + +#define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) +#define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) + +#define APPRENTICE_FUNC_0 0 +#define APPRENTICE_FUNC_1 1 +#define APPRENTICE_FUNC_2 2 +#define APPRENTICE_FUNC_3 3 +#define APPRENTICE_FUNC_4 4 +#define APPRENTICE_FUNC_5 5 +#define APPRENTICE_FUNC_6 6 +#define APPRENTICE_FUNC_MENU 7 +#define APPRENTICE_FUNC_PRINT_MSG 8 +#define APPRENTICE_FUNC_9 9 +#define APPRENTICE_FUNC_SET_TRUE_1 10 +#define APPRENTICE_FUNC_11 11 +#define APPRENTICE_FUNC_12 12 +#define APPRENTICE_FUNC_13 13 +#define APPRENTICE_FUNC_14 14 +#define APPRENTICE_FUNC_15 15 +#define APPRENTICE_FUNC_16 16 +#define APPRENTICE_FUNC_17 17 +#define APPRENTICE_FUNC_18 18 +#define APPRENTICE_FUNC_19 19 +#define APPRENTICE_FUNC_20 20 +#define APPRENTICE_FUNC_21 21 +#define APPRENTICE_FUNC_22 22 +#define APPRENTICE_FUNC_23 23 +#define APPRENTICE_FUNC_24 24 +#define APPRENTICE_FUNC_25 25 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 diff --git a/include/constants/global.h b/include/constants/global.h index 4ade1c823..c5dc86a12 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -48,6 +48,7 @@ #define EVENT_OBJECT_TEMPLATES_COUNT 64 #define DECOR_MAX_SECRET_BASE 16 #define DECOR_MAX_PLAYERS_HOUSE 12 +#define APPRENTICE_COUNT 4 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. @@ -63,6 +64,7 @@ #define POKEMON_NAME_LENGTH 10 #define PLAYER_NAME_LENGTH 7 #define MAIL_WORDS_COUNT 9 +#define EASY_CHAT_BATTLE_WORDS_COUNT 6 #define MOVE_NAME_LENGTH 12 #define MALE 0 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index b2084f154..5610a470c 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -195,6 +195,10 @@ #define MON_ALREADY_KNOWS_MOVE 0xFFFE #define MON_HAS_MAX_MOVES 0xFFFF +#define LEVEL_UP_MOVE_ID 0x01FF +#define LEVEL_UP_MOVE_LV 0xFE00 +#define LEVEL_UP_END 0xFFFF + #define MON_MALE 0x00 #define MON_FEMALE 0xFE #define MON_GENDERLESS 0xFF diff --git a/include/global.h b/include/global.h index 94dfebc28..9b98629cf 100644 --- a/include/global.h +++ b/include/global.h @@ -214,6 +214,8 @@ struct ApprenticeMon u16 item; }; +// This is for past players Apprentices or Apprentices received via Record Mix. +// For the current Apprentice, see struct PlayersApprentice struct Apprentice { u8 id:5; @@ -221,7 +223,7 @@ struct Apprentice u8 field_1; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; - u16 easyChatWords[6]; + u16 easyChatWords[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; @@ -264,9 +266,9 @@ struct EmeraldBattleTowerRecord /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 speechWon[6]; - /*0x28*/ u16 speechLost[6]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x1C*/ u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[4]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; @@ -279,9 +281,9 @@ struct BattleTowerEReaderTrainer /*0x02*/ u16 winStreak; /*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1]; /*0x0C*/ u8 trainerId[TRAINER_ID_LENGTH]; - /*0x10*/ u16 greeting[6]; - /*0x1C*/ u16 farewellPlayerLost[6]; - /*0x28*/ u16 farewellPlayerWon[6]; + /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x1C*/ u16 farewellPlayerLost[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x28*/ u16 farewellPlayerWon[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x34*/ struct BattleTowerPokemon party[FRONTIER_PARTY_SIZE]; /*0xB8*/ u32 checksum; }; @@ -413,7 +415,7 @@ struct Sav2_B8 struct PlayersApprentice { /*0xB0*/ u8 id; - /*0xB1*/ u8 activeLvlMode:2; // +1, 0 means not active + /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv /*0xB1*/ u8 field_B1_1:4; /*0xB1*/ u8 field_B1_2:2; /*0xB2*/ u8 field_B2_0:3; @@ -465,7 +467,7 @@ struct SaveBlock2 /*0xA8*/ u32 field_A8; // Written to, but never read. /*0xAC*/ u32 encryptionKey; /*0xB0*/ struct PlayersApprentice playerApprentice; - /*0xDC*/ struct Apprentice apprentices[4]; // From record mixing. + /*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT]; /*0x1EC*/ struct BerryCrush berryCrush; /*0x1FC*/ struct PokemonJumpResults pokeJump; /*0x20C*/ struct BerryPickingResults berryPick; @@ -949,10 +951,10 @@ struct SaveBlock1 /*0x2BA1*/ u8 outbreakPokemonProbability; /*0x2BA2*/ u16 outbreakDaysLeft; /*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData; - /*0x2BB0*/ u16 easyChatProfile[6]; - /*0x2BBC*/ u16 easyChatBattleStart[6]; - /*0x2BC8*/ u16 easyChatBattleWon[6]; - /*0x2BD4*/ u16 easyChatBattleLost[6]; + /*0x2BB0*/ u16 easyChatProfile[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BBC*/ u16 easyChatBattleStart[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BC8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT]; + /*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT]; /*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system /*0x2E28*/ OldMan oldMan; diff --git a/include/strings.h b/include/strings.h index f135944bd..cdd02aa28 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2416,6 +2416,10 @@ extern const u8 gUnknown_085EDC45[]; extern const u8 gUnknown_085EDB00[]; extern const u8 gUnknown_085EDC84[]; +// Apprentice +extern const u8 gText_Give[]; +extern const u8 gText_NoNeed[]; + // Easy Chat Entry extern const u8 gText_StopGivingPkmnMail[]; extern const u8 gText_LikeToQuitQuiz[]; -- cgit v1.2.3 From 4e6a69c29736bd9bb81049c6944e27ce46f8333c Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 19 Nov 2019 11:36:38 -0500 Subject: WIP Document Apprentice --- include/apprentice.h | 2 +- include/constants/apprentice.h | 64 +++++++++++++++++++++++++++++------------- include/global.h | 8 +++--- include/item_menu.h | 2 +- 4 files changed, 50 insertions(+), 26 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index ac7dff886..44329b677 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -10,7 +10,7 @@ struct ApprenticeTrainer u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; u8 id; - u16 easyChatWords[6]; + u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; }; extern const struct ApprenticeTrainer gApprentices[]; diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 61f257767..87b7b12f5 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -7,33 +7,57 @@ #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) -#define APPRENTICE_FUNC_0 0 -#define APPRENTICE_FUNC_1 1 -#define APPRENTICE_FUNC_2 2 +#define APPRENTICE_FUNC_GAVE_LVLMODE 0 +#define APPRENTICE_FUNC_SET_LVLMODE 1 +#define APPRENTICE_FUNC_SET_ID 2 #define APPRENTICE_FUNC_3 3 #define APPRENTICE_FUNC_4 4 -#define APPRENTICE_FUNC_5 5 +#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 #define APPRENTICE_FUNC_6 6 #define APPRENTICE_FUNC_MENU 7 #define APPRENTICE_FUNC_PRINT_MSG 8 -#define APPRENTICE_FUNC_9 9 -#define APPRENTICE_FUNC_SET_TRUE_1 10 -#define APPRENTICE_FUNC_11 11 -#define APPRENTICE_FUNC_12 12 -#define APPRENTICE_FUNC_13 13 -#define APPRENTICE_FUNC_14 14 -#define APPRENTICE_FUNC_15 15 -#define APPRENTICE_FUNC_16 16 -#define APPRENTICE_FUNC_17 17 -#define APPRENTICE_FUNC_18 18 -#define APPRENTICE_FUNC_19 19 +#define APPRENTICE_FUNC_RESET 9 +#define APPRENTICE_FUNC_CHECK_GONE 10 +#define APPRENTICE_FUNC_GET_QUESTION 11 +#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 +#define APPRENTICE_FUNC_SET_PARTY_MON 13 +#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 +#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 +#define APPRENTICE_FUNC_BUFFER_STRING 16 +#define APPRENTICE_FUNC_SET_MOVE 17 +#define APPRENTICE_FUNC_SET_FIRST_MON 18 +#define APPRENTICE_FUNC_OPEN_BAG 19 #define APPRENTICE_FUNC_20 20 #define APPRENTICE_FUNC_21 21 -#define APPRENTICE_FUNC_22 22 -#define APPRENTICE_FUNC_23 23 -#define APPRENTICE_FUNC_24 24 +#define APPRENTICE_FUNC_SET_GFX_SAVED 22 +#define APPRENTICE_FUNC_SET_GFX 23 +#define APPRENTICE_FUNC_SHOULD_LEAVE 24 #define APPRENTICE_FUNC_25 25 +#define APPRENTICE_MSG_PLEASE_TEACH 0 +#define APPRENTICE_MSG_REJECT 1 +#define APPRENTICE_MSG_WHICH_LVL_MODE 2 +#define APPRENTICE_MSG_THANKS_LVL_MODE 3 +#define APPRENTICE_MSG_WHICH_MON_FIRST 4 +#define APPRENTICE_MSG_THANKS_MON_FIRST 5 +#define APPRENTICE_MSG_WHICH_MON 6 +#define APPRENTICE_MSG_THANKS_MON 7 +#define APPRENTICE_MSG_WHICH_MOVE 8 +#define APPRENTICE_MSG_THANKS_MOVE 9 +#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 +#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 +#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 +#define APPRENTICE_MSG_HOLD_NOTHING 13 +#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 +#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 +#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 + +#define APPRENTICE_QUESTION_WHICH_FIRST 1 +#define APPRENTICE_QUESTION_WHICH_MON 2 +#define APPRENTICE_QUESTION_WHICH_MOVE 3 +#define APPRENTICE_QUESTION_WHAT_ITEM 4 +#define APPRENTICE_QUESTION_WIN_SPEECH 5 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 @@ -48,8 +72,8 @@ #define APPRENTICE_BUFF_MOVE2 4 #define APPRENTICE_BUFF_ITEM 5 #define APPRENTICE_BUFF_NAME 6 -#define APPRENTICE_BUFF_EASY_CHAT 7 +#define APPRENTICE_BUFF_WIN_SPEECH 7 #define APPRENTICE_BUFF_LEVEL 8 -#define APPRENTICE_BUFF_SPECIES4 9 +#define APPRENTICE_BUFF_FIRST_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/global.h b/include/global.h index f067f5bbc..c00d71d8f 100644 --- a/include/global.h +++ b/include/global.h @@ -223,7 +223,7 @@ struct Apprentice u8 field_1; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; - u16 easyChatWords[EASY_CHAT_BATTLE_WORDS_COUNT]; + u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; u8 playerId[TRAINER_ID_LENGTH]; u8 playerName[PLAYER_NAME_LENGTH]; u8 language; @@ -415,9 +415,9 @@ struct Sav2_B8 struct PlayersApprentice { /*0xB0*/ u8 id; - /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv - /*0xB1*/ u8 field_B1_1:4; - /*0xB1*/ u8 field_B1_2:2; + /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv + /*0xB1*/ u8 questionsAnswered:4; + /*0xB1*/ u8 firstMonId:2; /*0xB2*/ u8 field_B2_0:3; /*0xB2*/ u8 field_B2_1:2; /*0xB3*/ u8 field_B3; diff --git a/include/item_menu.h b/include/item_menu.h index a21a6da4f..508f94815 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -71,7 +71,7 @@ extern u16 gSpecialVar_ItemId; void sub_81AAC14(void); void FavorLadyOpenBagMenu(void); void QuizLadyOpenBagMenu(void); -void sub_81AAC28(void); +void ApprenticeOpenBagMenu(void); void sub_81AABB0(void); void SetInitialScrollAndCursorPositions(u8 pocketId); void bag_menu_mail_related(void); -- cgit v1.2.3 From a05006421b29ac49ce7173bb431d8a0419f5c143 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 20 Nov 2019 17:36:52 -0500 Subject: Document Apprentice --- include/apprentice.h | 4 ++-- include/constants/apprentice.h | 30 +++++++++++++++++++++--------- include/constants/global.h | 14 ++++++++------ include/global.h | 26 +++++++++++++------------- 4 files changed, 44 insertions(+), 30 deletions(-) (limited to 'include') diff --git a/include/apprentice.h b/include/apprentice.h index 44329b677..27ce0371e 100644 --- a/include/apprentice.h +++ b/include/apprentice.h @@ -5,7 +5,7 @@ struct ApprenticeTrainer { - u8 name[6][PLAYER_NAME_LENGTH + 1]; // For all six languages. + u8 name[NUM_LANGUAGES - 1][PLAYER_NAME_LENGTH + 1]; // For all languages except the unused one. u16 otId; u8 facilityClass; u16 species[APPRENTICE_SPECIES_COUNT]; @@ -15,7 +15,7 @@ struct ApprenticeTrainer extern const struct ApprenticeTrainer gApprentices[]; -void CopyFriendsApprenticeChallengeText(u8 saveblockApprenticeId); +void BufferApprenticeChallengeText(u8 saveApprenticeId); void Apprentice_EnableBothScriptContexts(void); void ResetApprenticeStruct(struct Apprentice *apprentice); void ResetAllApprenticeData(void); diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index 87b7b12f5..ec35a2361 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -1,8 +1,11 @@ #ifndef GUARD_CONSTANTS_APPRENTICE_H #define GUARD_CONSTANTS_APPRENTICE_H -#define APPRENTICE_SPECIES_COUNT 10 #define NUM_APPRENTICES 16 +#define APPRENTICE_SPECIES_COUNT 10 + +#define NUM_WHICH_MON_QUESTIONS MULTI_PARTY_SIZE +#define NUM_WHICH_MOVE_QUESTIONS 5 #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) @@ -10,10 +13,10 @@ #define APPRENTICE_FUNC_GAVE_LVLMODE 0 #define APPRENTICE_FUNC_SET_LVLMODE 1 #define APPRENTICE_FUNC_SET_ID 2 -#define APPRENTICE_FUNC_3 3 -#define APPRENTICE_FUNC_4 4 +#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 +#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 #define APPRENTICE_FUNC_ANSWERED_QUESTION 5 -#define APPRENTICE_FUNC_6 6 +#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 #define APPRENTICE_FUNC_MENU 7 #define APPRENTICE_FUNC_PRINT_MSG 8 #define APPRENTICE_FUNC_RESET 9 @@ -25,14 +28,14 @@ #define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 #define APPRENTICE_FUNC_BUFFER_STRING 16 #define APPRENTICE_FUNC_SET_MOVE 17 -#define APPRENTICE_FUNC_SET_FIRST_MON 18 +#define APPRENTICE_FUNC_SET_LEAD_MON 18 #define APPRENTICE_FUNC_OPEN_BAG 19 -#define APPRENTICE_FUNC_20 20 -#define APPRENTICE_FUNC_21 21 +#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 +#define APPRENTICE_FUNC_SAVE 21 #define APPRENTICE_FUNC_SET_GFX_SAVED 22 #define APPRENTICE_FUNC_SET_GFX 23 #define APPRENTICE_FUNC_SHOULD_LEAVE 24 -#define APPRENTICE_FUNC_25 25 +#define APPRENTICE_FUNC_SHIFT_SAVED 25 #define APPRENTICE_MSG_PLEASE_TEACH 0 #define APPRENTICE_MSG_REJECT 1 @@ -58,6 +61,15 @@ #define APPRENTICE_QUESTION_WHAT_ITEM 4 #define APPRENTICE_QUESTION_WIN_SPEECH 5 +// Would be redundant with the above if they used the same values +// but they do this to skip the "which mon" questions and store the below id in a 2 bit field +// These IDs are randomly shuffled in an array to determine the order of questions asked by the Apprentice +// The last question asked is always picking their win speech +#define QUESTION_ID_WIN_SPEECH 0 +#define QUESTION_ID_WHAT_ITEM 1 +#define QUESTION_ID_WHICH_MOVE 2 +#define QUESTION_ID_WHICH_FIRST 3 + #define APPRENTICE_ASK_WHICH_LEVEL 0 #define APPRENTICE_ASK_3SPECIES 1 #define APPRENTICE_ASK_2SPECIES 2 @@ -74,6 +86,6 @@ #define APPRENTICE_BUFF_NAME 6 #define APPRENTICE_BUFF_WIN_SPEECH 7 #define APPRENTICE_BUFF_LEVEL 8 -#define APPRENTICE_BUFF_FIRST_MON_SPECIES 9 +#define APPRENTICE_BUFF_LEAD_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/constants/global.h b/include/constants/global.h index c5dc86a12..3ee7650a8 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -18,12 +18,13 @@ #define VERSION_GAMECUBE 15 #define LANGUAGE_JAPANESE 1 -#define LANGUAGE_ENGLISH 2 -#define LANGUAGE_FRENCH 3 -#define LANGUAGE_ITALIAN 4 -#define LANGUAGE_GERMAN 5 -#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean -#define LANGUAGE_SPANISH 7 +#define LANGUAGE_ENGLISH 2 +#define LANGUAGE_FRENCH 3 +#define LANGUAGE_ITALIAN 4 +#define LANGUAGE_GERMAN 5 +#define LANGUAGE_KOREAN 6 // 6 goes unused but the theory is it was meant to be Korean +#define LANGUAGE_SPANISH 7 +#define NUM_LANGUAGES 7 #define GAME_VERSION (VERSION_EMERALD) #define GAME_LANGUAGE (LANGUAGE_ENGLISH) @@ -49,6 +50,7 @@ #define DECOR_MAX_SECRET_BASE 16 #define DECOR_MAX_PLAYERS_HOUSE 12 #define APPRENTICE_COUNT 4 +#define APPRENTICE_MAX_QUESTIONS 9 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. diff --git a/include/global.h b/include/global.h index c00d71d8f..75a63cdb2 100644 --- a/include/global.h +++ b/include/global.h @@ -220,7 +220,7 @@ struct Apprentice { u8 id:5; u8 lvlMode:2; // + 1 - u8 field_1; + u8 numQuestions; u8 number; struct ApprenticeMon party[MULTI_PARTY_SIZE]; u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; @@ -403,13 +403,13 @@ struct BattleFrontier /*0xEFC*/ struct FrontierMonData field_EFC[3]; }; -struct Sav2_B8 +struct ApprenticeQuestion { - u8 unk0_0:2; - u8 unk0_1:2; - u8 unk0_2:2; - u8 unk0_3:2; - u16 unk2; + u8 questionId:2; + u8 monId:2; + u8 moveSlot:2; + u8 suggestedChange:2; // TRUE if told to use held item or second move, FALSE if told to use no item or first move + u16 data; // used both as an itemId and a moveId }; struct PlayersApprentice @@ -417,12 +417,12 @@ struct PlayersApprentice /*0xB0*/ u8 id; /*0xB1*/ u8 lvlMode:2; //0: Unassigned, 1: Lv 50, 2: Open Lv /*0xB1*/ u8 questionsAnswered:4; - /*0xB1*/ u8 firstMonId:2; - /*0xB2*/ u8 field_B2_0:3; - /*0xB2*/ u8 field_B2_1:2; - /*0xB3*/ u8 field_B3; - /*0xB4*/ u8 monIds[MULTI_PARTY_SIZE]; - /*0xB8*/ struct Sav2_B8 field_B8[9]; + /*0xB1*/ u8 leadMonId:2; + /*0xB2*/ u8 party:3; + /*0xB2*/ u8 field_B2_1:2; + /*0xB3*/ u8 unused; + /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; + /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; }; struct RankingHall1P -- cgit v1.2.3 From b2eb49888d497b5f04697bf4f6fe14904a3fafe3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 20 Nov 2019 19:00:08 -0500 Subject: Clean up Apprentice doc --- include/constants/apprentice.h | 121 ++++++++++++++++++++--------------------- include/global.h | 2 +- 2 files changed, 60 insertions(+), 63 deletions(-) (limited to 'include') diff --git a/include/constants/apprentice.h b/include/constants/apprentice.h index ec35a2361..63434a4fc 100644 --- a/include/constants/apprentice.h +++ b/include/constants/apprentice.h @@ -10,50 +10,50 @@ #define APPRENTICE_LVL_MODE_50 (FRONTIER_LVL_50 + 1) #define APPRENTICE_LVL_MODE_OPEN (FRONTIER_LVL_OPEN + 1) -#define APPRENTICE_FUNC_GAVE_LVLMODE 0 -#define APPRENTICE_FUNC_SET_LVLMODE 1 -#define APPRENTICE_FUNC_SET_ID 2 -#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 -#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 -#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 -#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 -#define APPRENTICE_FUNC_MENU 7 -#define APPRENTICE_FUNC_PRINT_MSG 8 -#define APPRENTICE_FUNC_RESET 9 -#define APPRENTICE_FUNC_CHECK_GONE 10 -#define APPRENTICE_FUNC_GET_QUESTION 11 -#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 -#define APPRENTICE_FUNC_SET_PARTY_MON 13 -#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 -#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 -#define APPRENTICE_FUNC_BUFFER_STRING 16 -#define APPRENTICE_FUNC_SET_MOVE 17 -#define APPRENTICE_FUNC_SET_LEAD_MON 18 -#define APPRENTICE_FUNC_OPEN_BAG 19 -#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 -#define APPRENTICE_FUNC_SAVE 21 -#define APPRENTICE_FUNC_SET_GFX_SAVED 22 -#define APPRENTICE_FUNC_SET_GFX 23 -#define APPRENTICE_FUNC_SHOULD_LEAVE 24 -#define APPRENTICE_FUNC_SHIFT_SAVED 25 +#define APPRENTICE_FUNC_GAVE_LVLMODE 0 +#define APPRENTICE_FUNC_SET_LVLMODE 1 +#define APPRENTICE_FUNC_SET_ID 2 +#define APPRENTICE_FUNC_SHUFFLE_SPECIES 3 +#define APPRENTICE_FUNC_RANDOMIZE_QUESTIONS 4 +#define APPRENTICE_FUNC_ANSWERED_QUESTION 5 +#define APPRENTICE_FUNC_IS_FINAL_QUESTION 6 +#define APPRENTICE_FUNC_MENU 7 +#define APPRENTICE_FUNC_PRINT_MSG 8 +#define APPRENTICE_FUNC_RESET 9 +#define APPRENTICE_FUNC_CHECK_GONE 10 +#define APPRENTICE_FUNC_GET_QUESTION 11 +#define APPRENTICE_FUNC_GET_NUM_PARTY_MONS 12 +#define APPRENTICE_FUNC_SET_PARTY_MON 13 +#define APPRENTICE_FUNC_INIT_QUESTION_DATA 14 +#define APPRENTICE_FUNC_FREE_QUESTION_DATA 15 +#define APPRENTICE_FUNC_BUFFER_STRING 16 +#define APPRENTICE_FUNC_SET_MOVE 17 +#define APPRENTICE_FUNC_SET_LEAD_MON 18 +#define APPRENTICE_FUNC_OPEN_BAG 19 +#define APPRENTICE_FUNC_TRY_SET_HELD_ITEM 20 +#define APPRENTICE_FUNC_SAVE 21 +#define APPRENTICE_FUNC_SET_GFX_SAVED 22 +#define APPRENTICE_FUNC_SET_GFX 23 +#define APPRENTICE_FUNC_SHOULD_LEAVE 24 +#define APPRENTICE_FUNC_SHIFT_SAVED 25 -#define APPRENTICE_MSG_PLEASE_TEACH 0 -#define APPRENTICE_MSG_REJECT 1 -#define APPRENTICE_MSG_WHICH_LVL_MODE 2 -#define APPRENTICE_MSG_THANKS_LVL_MODE 3 -#define APPRENTICE_MSG_WHICH_MON_FIRST 4 -#define APPRENTICE_MSG_THANKS_MON_FIRST 5 -#define APPRENTICE_MSG_WHICH_MON 6 -#define APPRENTICE_MSG_THANKS_MON 7 -#define APPRENTICE_MSG_WHICH_MOVE 8 -#define APPRENTICE_MSG_THANKS_MOVE 9 -#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 -#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 -#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 -#define APPRENTICE_MSG_HOLD_NOTHING 13 -#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 -#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 -#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 +#define APPRENTICE_MSG_PLEASE_TEACH 0 +#define APPRENTICE_MSG_REJECT 1 +#define APPRENTICE_MSG_WHICH_LVL_MODE 2 +#define APPRENTICE_MSG_THANKS_LVL_MODE 3 +#define APPRENTICE_MSG_WHICH_MON_FIRST 4 +#define APPRENTICE_MSG_THANKS_MON_FIRST 5 +#define APPRENTICE_MSG_WHICH_MON 6 +#define APPRENTICE_MSG_THANKS_MON 7 +#define APPRENTICE_MSG_WHICH_MOVE 8 +#define APPRENTICE_MSG_THANKS_MOVE 9 +#define APPRENTICE_MSG_WHAT_HELD_ITEM 10 +#define APPRENTICE_MSG_PICK_WIN_SPEECH 11 +#define APPRENTICE_MSG_THANKS_HELD_ITEM 12 +#define APPRENTICE_MSG_HOLD_NOTHING 13 +#define APPRENTICE_MSG_THANKS_NO_HELD_ITEM 14 +#define APPRENTICE_MSG_THANKS_WIN_SPEECH 15 +#define APPRENTICE_MSG_ITEM_ALREADY_SUGGESTED 16 #define APPRENTICE_QUESTION_WHICH_FIRST 1 #define APPRENTICE_QUESTION_WHICH_MON 2 @@ -61,31 +61,28 @@ #define APPRENTICE_QUESTION_WHAT_ITEM 4 #define APPRENTICE_QUESTION_WIN_SPEECH 5 -// Would be redundant with the above if they used the same values -// but they do this to skip the "which mon" questions and store the below id in a 2 bit field -// These IDs are randomly shuffled in an array to determine the order of questions asked by the Apprentice -// The last question asked is always picking their win speech +// Would be redundant with the above set if they used the same values #define QUESTION_ID_WIN_SPEECH 0 #define QUESTION_ID_WHAT_ITEM 1 #define QUESTION_ID_WHICH_MOVE 2 #define QUESTION_ID_WHICH_FIRST 3 -#define APPRENTICE_ASK_WHICH_LEVEL 0 -#define APPRENTICE_ASK_3SPECIES 1 -#define APPRENTICE_ASK_2SPECIES 2 -#define APPRENTICE_ASK_MOVES 3 -#define APPRENTICE_ASK_GIVE 4 -#define APPRENTICE_ASK_YES_NO 6 +#define APPRENTICE_ASK_WHICH_LEVEL 0 +#define APPRENTICE_ASK_3SPECIES 1 +#define APPRENTICE_ASK_2SPECIES 2 +#define APPRENTICE_ASK_MOVES 3 +#define APPRENTICE_ASK_GIVE 4 +#define APPRENTICE_ASK_YES_NO 6 -#define APPRENTICE_BUFF_SPECIES1 0 -#define APPRENTICE_BUFF_SPECIES2 1 -#define APPRENTICE_BUFF_SPECIES3 2 -#define APPRENTICE_BUFF_MOVE1 3 -#define APPRENTICE_BUFF_MOVE2 4 -#define APPRENTICE_BUFF_ITEM 5 -#define APPRENTICE_BUFF_NAME 6 -#define APPRENTICE_BUFF_WIN_SPEECH 7 -#define APPRENTICE_BUFF_LEVEL 8 +#define APPRENTICE_BUFF_SPECIES1 0 +#define APPRENTICE_BUFF_SPECIES2 1 +#define APPRENTICE_BUFF_SPECIES3 2 +#define APPRENTICE_BUFF_MOVE1 3 +#define APPRENTICE_BUFF_MOVE2 4 +#define APPRENTICE_BUFF_ITEM 5 +#define APPRENTICE_BUFF_NAME 6 +#define APPRENTICE_BUFF_WIN_SPEECH 7 +#define APPRENTICE_BUFF_LEVEL 8 #define APPRENTICE_BUFF_LEAD_MON_SPECIES 9 #endif // GUARD_CONSTANTS_APPRENTICE_H diff --git a/include/global.h b/include/global.h index 75a63cdb2..d33be5d82 100644 --- a/include/global.h +++ b/include/global.h @@ -419,7 +419,7 @@ struct PlayersApprentice /*0xB1*/ u8 questionsAnswered:4; /*0xB1*/ u8 leadMonId:2; /*0xB2*/ u8 party:3; - /*0xB2*/ u8 field_B2_1:2; + /*0xB2*/ u8 saveId:2; /*0xB3*/ u8 unused; /*0xB4*/ u8 speciesIds[MULTI_PARTY_SIZE]; /*0xB8*/ struct ApprenticeQuestion questions[APPRENTICE_MAX_QUESTIONS]; -- cgit v1.2.3 From 4f590e8f6102a433dbfbee56dd55f01aa3401c75 Mon Sep 17 00:00:00 2001 From: Sewef Date: Sat, 23 Nov 2019 11:57:39 +0100 Subject: battle_anim_effects_3 (4) --- include/battle_anim.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle_anim.h b/include/battle_anim.h index 503e23df2..d9d1d6420 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -185,7 +185,7 @@ bool8 IsBattlerSpritePresent(u8 battlerId); void sub_80A6C68(u32 arg0); u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); -u8 sub_80A6D94(void); +u8 GetPaletteOffset(void); u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); @@ -231,7 +231,7 @@ void AnimWaterPulseRing(struct Sprite *sprite); void sub_810E2C8(struct Sprite *sprite); // smokescreen.c -u8 sub_807521C(s16 x, s16 y, u8 a3); +u8 SmokescreenImpact(s16 x, s16 y, u8 a3); u32 UnpackSelectedBattleAnimPalettes(s16); -- cgit v1.2.3 From 1dfe34dee371d3b64b41de2ce3634ecc78bc7ee5 Mon Sep 17 00:00:00 2001 From: Sewef Date: Sat, 23 Nov 2019 15:51:08 +0100 Subject: =?UTF-8?q?TriForce=20=E2=86=92=20TriAttack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/constants/battle_anim.h | 2 +- include/graphics.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 0a023f0c2..5a62f65ae 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -237,7 +237,7 @@ #define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) #define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) #define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) -#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230) #define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) #define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) #define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) diff --git a/include/graphics.h b/include/graphics.h index a08d3760f..7fba3ed80 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4363,7 +4363,7 @@ extern const u32 gBattleAnimSpriteGfx_Pokeball[]; extern const u32 gBattleAnimSpriteGfx_Spotlight[]; extern const u32 gBattleAnimSpriteGfx_LetterZ[]; extern const u32 gBattleAnimSpriteGfx_RapidSpin[]; -extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[]; +extern const u32 gBattleAnimSpriteGfx_TriAttackTriangle[]; extern const u32 gBattleAnimSpriteGfx_WispOrb[]; extern const u32 gBattleAnimSpriteGfx_WispFire[]; extern const u32 gBattleAnimSpriteGfx_GoldStars[]; @@ -4646,7 +4646,7 @@ extern const u32 gBattleAnimSpritePal_JaggedMusicNote[]; extern const u32 gBattleAnimSpritePal_Pokeball[]; extern const u32 gBattleAnimSpritePal_LetterZ[]; extern const u32 gBattleAnimSpritePal_RapidSpin[]; -extern const u32 gBattleAnimSpritePal_TriForceTriangle[]; +extern const u32 gBattleAnimSpritePal_TriAttackTriangle[]; extern const u32 gBattleAnimSpritePal_WispOrb[]; extern const u32 gBattleAnimSpritePal_GoldStars[]; extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; -- cgit v1.2.3 From 07b79c3fc3b0a0df1aa329eaed8cd75d3b59af20 Mon Sep 17 00:00:00 2001 From: Sewef Date: Sun, 24 Nov 2019 18:00:51 +0100 Subject: battle_anim_effects_3 (5) --- include/battle_anim.h | 2 +- include/constants/battle_anim.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/battle_anim.h b/include/battle_anim.h index d9d1d6420..c3019a5cf 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -185,7 +185,7 @@ bool8 IsBattlerSpritePresent(u8 battlerId); void sub_80A6C68(u32 arg0); u8 GetAnimBattlerSpriteId(u8 wantedBattler); bool8 IsDoubleBattle(void); -u8 GetPaletteOffset(void); +u8 GetBattleBgPaletteNum(void); u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*)); void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite); diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 5a62f65ae..0fe231cdc 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -237,7 +237,7 @@ #define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) #define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) #define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) -#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230) #define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) #define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) #define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) -- cgit v1.2.3 From 4dfa959fa297195a040a8cd0436d561296076f0e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 20 Nov 2019 21:46:29 -0500 Subject: Begin documenting Battle Pike and Frontier Util --- include/constants/battle_frontier.h | 24 ++++++++++------ include/constants/battle_pike.h | 19 ++++++++++--- include/constants/frontier_util.h | 27 ++++++++++++++---- include/constants/layouts.h | 6 ++-- include/constants/map_groups.h | 6 ++-- include/frontier_util.h | 2 +- include/global.h | 4 +-- include/strings.h | 57 +++++++++++++++++++------------------ 8 files changed, 90 insertions(+), 55 deletions(-) (limited to 'include') diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 54d50c18a..7fcebb452 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -12,7 +12,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. +// VAR_FRONTIER_FACILITY is re-used for the below facilities as well +#define FACILITY_LINK_CONTEST 7 #define FACILITY_UNION_ROOM 8 #define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles @@ -21,15 +22,23 @@ #define TENT_SLATEPORT 4 // Battle Frontier lvl modes. -#define FRONTIER_LVL_50 0 +#define FRONTIER_LVL_50 0 #define FRONTIER_LVL_OPEN 1 #define FRONTIER_LVL_TENT 2 // Battle Frontier battle modes. -#define FRONTIER_MODE_SINGLES 0 -#define FRONTIER_MODE_DOUBLES 1 -#define FRONTIER_MODE_MULTIS 2 -#define FRONTIER_MODE_LINK_MULTIS 3 +#define FRONTIER_MODE_SINGLES 0 +#define FRONTIER_MODE_DOUBLES 1 +#define FRONTIER_MODE_MULTIS 2 +#define FRONTIER_MODE_LINK_MULTIS 3 +#define FRONTIER_MODE_COUNT 4 + +// TODO +#define CHALLENGE_STATUS_INACTIVE 0 +#define CHALLENGE_STATUS_CANCEL 1 +#define CHALLENGE_STATUS_ONGOING 2 +#define CHALLENGE_STATUS_WON 3 +#define CHALLENGE_STATUS_LOST 4 // Special trainer battles. #define SPECIAL_BATTLE_TOWER 0 @@ -86,9 +95,6 @@ #define FRONTIER_GAMBLER_CHALLENGE_COUNT 12 -// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special. -#define RESULTS_LINK_CONTEST 7 - #define EXCHANGE_CORNER_DECOR1_CLERK 0 #define EXCHANGE_CORNER_DECOR2_CLERK 1 #define EXCHANGE_CORNER_VITAMIN_CLERK 2 diff --git a/include/constants/battle_pike.h b/include/constants/battle_pike.h index e92c4a006..4fb20550e 100644 --- a/include/constants/battle_pike.h +++ b/include/constants/battle_pike.h @@ -10,6 +10,17 @@ #define PIKE_ROOM_HARD_BATTLE 6 #define PIKE_ROOM_DOUBLE_BATTLE 7 #define PIKE_ROOM_BRAIN 8 +#define NUM_PIKE_ROOM_TYPES 9 + +#define PIKE_ROOM_LEFT 0 +#define PIKE_ROOM_CENTER 1 +#define PIKE_ROOM_RIGHT 2 + +#define PIKE_HINT_NOSTALGIA 0 +#define PIKE_HINT_WHISPERING 1 +#define PIKE_HINT_POKEMON 2 +#define PIKE_HINT_PEOPLE 3 +#define PIKE_HINT_BRAIN 4 // For the room with a status effect. #define PIKE_STATUS_KIRLIA 0 @@ -19,8 +30,8 @@ #define BATTLE_PIKE_FUNC_SET_ROOM_TYPE 0 #define BATTLE_PIKE_FUNC_GET_DATA 1 #define BATTLE_PIKE_FUNC_SET_DATA 2 -#define BATTLE_PIKE_FUNC_IN_FINAL_ROOM 3 -#define BATTLE_PIKE_FUNC_SET_UP_ROOM_OBJECTS 4 +#define BATTLE_PIKE_FUNC_IS_FINAL_ROOM 3 +#define BATTLE_PIKE_FUNC_SET_ROOM_OBJECTS 4 #define BATTLE_PIKE_FUNC_GET_ROOM_TYPE 5 #define BATTLE_PIKE_FUNC_6 6 #define BATTLE_PIKE_FUNC_7 7 @@ -34,14 +45,14 @@ #define BATTLE_PIKE_FUNC_STATUS_SCREEN_FADE 15 #define BATTLE_PIKE_FUNC_IS_IN 16 #define BATTLE_PIKE_FUNC_SET_HINT_ROOM 17 -#define BATTLE_PIKE_FUNC_SET_HINT_ROOM_ID 18 +#define BATTLE_PIKE_FUNC_GET_HINT_ROOM_ID 18 #define BATTLE_PIKE_FUNC_GET_ROOM_TYPE_HINT 19 #define BATTLE_PIKE_FUNC_CLEAR_TRAINER_IDS 20 #define BATTLE_PIKE_FUNC_BUFFER_RECORD_MIX_MSG 21 #define BATTLE_PIKE_FUNC_GET_QUEEN_FIGHT_TYPE 22 #define BATTLE_PIKE_FUNC_HEAL_MONS_BEFORE_QUEEN 23 #define BATTLE_PIKE_FUNC_SET_HEALING_ROOMS_DISABLED 24 -#define BATTLE_PIKE_FUNC_CAN_PARTY_BE_HEALED 25 +#define BATTLE_PIKE_FUNC_IS_PARTY_FULL_HEALTH 25 #define BATTLE_PIKE_FUNC_SAVE_MON_HELD_ITEMS 26 #define BATTLE_PIKE_FUNC_LOAD_MON_HELD_ITEMS 27 #define BATTLE_PIKE_FUNC_INIT_CHALLENGE 28 diff --git a/include/constants/frontier_util.h b/include/constants/frontier_util.h index 52bde509f..4a4804995 100644 --- a/include/constants/frontier_util.h +++ b/include/constants/frontier_util.h @@ -5,16 +5,24 @@ #define FRONTIER_PLAYER_LOST_TEXT 1 #define FRONTIER_PLAYER_WON_TEXT 2 -#define FRONTIER_UTIL_FUNC_0 0 -#define FRONTIER_UTIL_FUNC_1 1 -#define FRONTIER_UTIL_FUNC_2 2 +// return values for GetFrontierBrainStatus +#define FRONTIER_BRAIN_NOT_READY 0 +#define FRONTIER_BRAIN_SILVER 1 +#define FRONTIER_BRAIN_GOLD 2 +#define FRONTIER_BRAIN_STREAK 3 // for encountering the brain after getting both symbols +#define FRONTIER_BRAIN_STREAK_LONG 4 // + + +#define FRONTIER_UTIL_FUNC_GET_STATUS 0 +#define FRONTIER_UTIL_FUNC_GET_DATA 1 +#define FRONTIER_UTIL_FUNC_SET_DATA 2 #define FRONTIER_UTIL_FUNC_LOAD_SELECTED_PARTY 3 #define FRONTIER_UTIL_FUNC_SOFT_RESET 4 #define FRONTIER_UTIL_FUNC_SET_FRONTIER_TRAINERS 5 #define FRONTIER_UTIL_FUNC_6 6 #define FRONTIER_UTIL_FUNC_RESULTS_WINDOW 7 #define FRONTIER_UTIL_FUNC_8 8 -#define FRONTIER_UTIL_FUNC_9 9 +#define FRONTIER_UTIL_FUNC_GET_BRAIN_STATUS 9 #define FRONTIER_UTIL_FUNC_IS_FRONTIER_BRAIN 10 #define FRONTIER_UTIL_FUNC_11 11 #define FRONTIER_UTIL_FUNC_GET_FACILITY_SYMBOLS 12 @@ -26,7 +34,16 @@ #define FRONTIER_UTIL_FUNC_18 18 #define FRONTIER_UTIL_FUNC_19 19 #define FRONTIER_UTIL_FUNC_BUFFER_TRAINER_NAME 20 -#define FRONTIER_UTIL_FUNC_21 21 +#define FRONTIER_UTIL_FUNC_RESET_SKETCH_MOVES 21 #define FRONTIER_UTIL_FUNC_SET_BRAIN_OBJECT 22 +#define FRONTIER_DATA_CHALLENGE_STATUS 0 +#define FRONTIER_DATA_LVL_MODE 1 +#define FRONTIER_DATA_BATTLE_NUM 2 +#define FRONTIER_DATA_3 3 +#define FRONTIER_DATA_4 4 +#define FRONTIER_DATA_BATTLE_OUTCOME 5 +#define FRONTIER_DATA_6 6 +#define FRONTIER_DATA_SYMBOL 7 + #endif // GUARD_CONSTANTS_FRONTIER_UTIL_H diff --git a/include/constants/layouts.h b/include/constants/layouts.h index fe905a2c6..ba20cb3a5 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -352,13 +352,13 @@ #define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY 349 #define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR 350 #define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM 351 -#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 352 -#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 353 +#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL 352 +#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL 353 #define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY 354 #define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR 355 #define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM 356 #define LAYOUT_SOOTOPOLIS_CITY_LEGENDS_BATTLE 357 -#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 358 +#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS 358 #define LAYOUT_UNKNOWN_084693AC 359 #define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY 360 #define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE 361 diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index bedaaca2a..14b3f1d56 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -498,9 +498,9 @@ #define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8)) #define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8)) #define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM1 (37 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM2 (38 | (26 << 8)) -#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM3 (39 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL (37 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL (38 | (26 << 8)) +#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS (39 | (26 << 8)) #define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8)) #define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8)) #define MAP_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER (42 | (26 << 8)) diff --git a/include/frontier_util.h b/include/frontier_util.h index 627b5bef5..adea712e0 100644 --- a/include/frontier_util.h +++ b/include/frontier_util.h @@ -2,7 +2,7 @@ #define GUARD_FRONTIER_UTIL_H void CallFrontierUtilFunc(void); -u8 sub_81A3610(void); +u8 GetFrontierBrainStatus(void); void CopyFrontierTrainerText(u8 whichText, u16 trainerId); void sub_81A3908(void); u32 GetCurrentFacilityWinStreak(void); diff --git a/include/global.h b/include/global.h index d33be5d82..bcb77aaaf 100644 --- a/include/global.h +++ b/include/global.h @@ -323,7 +323,7 @@ struct BattleFrontier /*0xBE3*/ u8 field_BE0[POKEMON_NAME_LENGTH + 1]; /*0xBEB*/ u8 field_BEB; /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; - /*0xCA8*/ u8 field_CA8; + /*0xCA8*/ u8 challengeOutcome; /*0xCA9*/ u8 lvlMode:2; // 0x1, 0x2 -> 0x3 /*0xCA9*/ u8 field_CA9_a:1; // 0x4 /*0xCA9*/ u8 field_CA9_b:1; // 0x8 @@ -338,7 +338,7 @@ struct BattleFrontier /*0xCDC*/ u32 field_CDC; /*0xCE0*/ u16 towerWinStreaks[4][2]; /*0xCF0*/ u16 towerRecordWinStreaks[4][2]; - /*0xD00*/ u16 field_D00; + /*0xD00*/ u16 symbolFlags; /*0xD02*/ u16 field_D02; /*0xD04*/ u16 field_D04; /*0xD06*/ u8 field_D06; diff --git a/include/strings.h b/include/strings.h index 43b87e888..9eddf1a0e 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1326,34 +1326,35 @@ extern const u8 gText_FrontierFacilityRoomsCleared[]; extern const u8 gText_FrontierFacilityKOsStreak[]; extern const u8 gText_FrontierFacilityFloorsCleared[]; -extern const u8 gText_082C843F[]; -extern const u8 gText_082C848B[]; -extern const u8 gText_082C8628[]; -extern const u8 gText_082C85B4[]; -extern const u8 gText_082C8512[]; -extern const u8 gText_082C859D[]; -extern const u8 gText_082C86C3[]; -extern const u8 gText_082C8458[]; -extern const u8 gText_082C84C1[]; -extern const u8 gText_082C8662[]; -extern const u8 gText_082C85E3[]; -extern const u8 gText_082C853B[]; -extern const u8 gText_082C85A4[]; -extern const u8 gText_082C86FE[]; -extern const u8 gText_082C846C[]; -extern const u8 gText_082C84D0[]; -extern const u8 gText_082C8682[]; -extern const u8 gText_082C85F5[]; -extern const u8 gText_082C8561[]; -extern const u8 gText_082C85A9[]; -extern const u8 gText_082C8739[]; -extern const u8 gText_082C8480[]; -extern const u8 gText_082C84F7[]; -extern const u8 gText_082C86B3[]; -extern const u8 gText_082C8611[]; -extern const u8 gText_082C8589[]; -extern const u8 gText_082C85AE[]; -extern const u8 gText_082C877B[]; +// Frontier Brain +extern const u8 gText_AnabelWonSilver[]; +extern const u8 gText_TuckerWonSilver[]; +extern const u8 gText_SpenserWonSilver[]; +extern const u8 gText_GretaWonSilver[]; +extern const u8 gText_NolandWonSilver[]; +extern const u8 gText_LucyWonSilver[]; +extern const u8 gText_BrandonWonSilver[]; +extern const u8 gText_AnabelDefeatSilver[]; +extern const u8 gText_TuckerDefeatSilver[]; +extern const u8 gText_SpenserDefeatSilver[]; +extern const u8 gText_GretaDefeatSilver[]; +extern const u8 gText_NolandDefeatSilver[]; +extern const u8 gText_LucyDefeatSilver[]; +extern const u8 gText_BrandonDefeatSilver[]; +extern const u8 gText_AnabelWonGold[]; +extern const u8 gText_TuckerWonGold[]; +extern const u8 gText_SpenserWonGold[]; +extern const u8 gText_GretaWonGold[]; +extern const u8 gText_NolandWonGold[]; +extern const u8 gText_LucyWonGold[]; +extern const u8 gText_BrandonWonGold[]; +extern const u8 gText_AnabelDefeatGold[]; +extern const u8 gText_TuckerDefeatGold[]; +extern const u8 gText_SpenserDefeatGold[]; +extern const u8 gText_GretaDefeatGold[]; +extern const u8 gText_NolandDefeatGold[]; +extern const u8 gText_LucyDefeatGold[]; +extern const u8 gText_BrandonDefeatGold[]; // Battle Tower. extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE[]; -- cgit v1.2.3 From 08a8dc46e307120d7007531826b58ac5ee227564 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 23 Nov 2019 16:08:50 -0500 Subject: Use macros for Trainer Hill --- include/constants/trainer_hill.h | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'include') diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h index f7a270428..afbcd4ace 100644 --- a/include/constants/trainer_hill.h +++ b/include/constants/trainer_hill.h @@ -13,24 +13,24 @@ #define NUM_TRAINER_HILL_PRIZE_LISTS 10 -#define TRAINER_HILL_FUNC_START 0 -#define TRAINER_HILL_FUNC_GET_OWNER_STATE 1 -#define TRAINER_HILL_FUNC_GIVE_PRIZE 2 -#define TRAINER_HILL_FUNC_CHECK_FINAL_TIME 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_GET_CHALLENGE_TIME 7 -#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED 8 -#define TRAINER_HILL_FUNC_CLEAR_RESULT 9 -#define TRAINER_HILL_FUNC_IN_CHALLENGE 10 -#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT 11 +#define TRAINER_HILL_FUNC_START 0 +#define TRAINER_HILL_FUNC_GET_OWNER_STATE 1 +#define TRAINER_HILL_FUNC_GIVE_PRIZE 2 +#define TRAINER_HILL_FUNC_CHECK_FINAL_TIME 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_GET_CHALLENGE_TIME 7 +#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED 8 +#define TRAINER_HILL_FUNC_CLEAR_RESULT 9 +#define TRAINER_HILL_FUNC_IN_CHALLENGE 10 +#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT 11 #define TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS 12 -#define TRAINER_HILL_FUNC_GET_GAME_SAVED 13 -#define TRAINER_HILL_FUNC_SET_GAME_SAVED 14 -#define TRAINER_HILL_FUNC_CLEAR_GAME_SAVED 15 -#define TRAINER_HILL_FUNC_GET_WON 16 -#define TRAINER_HILL_FUNC_SET_TAG 17 +#define TRAINER_HILL_FUNC_GET_GAME_SAVED 13 +#define TRAINER_HILL_FUNC_SET_GAME_SAVED 14 +#define TRAINER_HILL_FUNC_CLEAR_GAME_SAVED 15 +#define TRAINER_HILL_FUNC_GET_WON 16 +#define TRAINER_HILL_FUNC_SET_TAG 17 #define TRAINER_HILL_TEXT_INTRO 2 #define TRAINER_HILL_TEXT_PLAYER_LOST 3 -- cgit v1.2.3 From 63ee15fc28fee12a1a9433f52d392eb3c922a844 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 24 Nov 2019 16:58:40 -0500 Subject: Document Frontier Util --- include/battle_message.h | 2 +- include/constants/battle_frontier.h | 8 ++-- include/constants/frontier_util.h | 54 +++++++++++++++++------- include/constants/global.h | 9 +++- include/constants/trainers.h | 82 ++++++++++++++++++++++++++++++++++++- include/frontier_util.h | 6 +-- include/global.h | 66 +++++++++++++++-------------- include/strings.h | 2 +- include/tv.h | 4 +- 9 files changed, 174 insertions(+), 59 deletions(-) (limited to 'include') diff --git a/include/battle_message.h b/include/battle_message.h index 1157fbfae..a3f2636e5 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -259,7 +259,7 @@ extern const u8 gText_Love[]; extern const u8 gText_SpaceAndSpace[]; extern const u8 gText_CommaSpace[]; extern const u8 gText_Space2[]; -extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_LineBreak[]; extern const u8 gText_NewLine[]; extern const u8 gText_Are[]; extern const u8 gText_Are2[]; diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index 7fcebb452..0bf1ba02b 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -33,10 +33,9 @@ #define FRONTIER_MODE_LINK_MULTIS 3 #define FRONTIER_MODE_COUNT 4 -// TODO -#define CHALLENGE_STATUS_INACTIVE 0 -#define CHALLENGE_STATUS_CANCEL 1 -#define CHALLENGE_STATUS_ONGOING 2 +// Challenge Statuses +#define CHALLENGE_STATUS_SAVING 1 +#define CHALLENGE_STATUS_PAUSED 2 #define CHALLENGE_STATUS_WON 3 #define CHALLENGE_STATUS_LOST 4 @@ -54,6 +53,7 @@ #define SPECIAL_BATTLE_PYRAMID 10 #define MAX_BATTLE_FRONTIER_POINTS 9999 +#define MAX_STREAK 9999 // These sets of facility ids would be redunant if the order was consistent // The order is important for this set so that all the non-link records can be continuous diff --git a/include/constants/frontier_util.h b/include/constants/frontier_util.h index 4a4804995..d71809169 100644 --- a/include/constants/frontier_util.h +++ b/include/constants/frontier_util.h @@ -12,27 +12,26 @@ #define FRONTIER_BRAIN_STREAK 3 // for encountering the brain after getting both symbols #define FRONTIER_BRAIN_STREAK_LONG 4 // - #define FRONTIER_UTIL_FUNC_GET_STATUS 0 #define FRONTIER_UTIL_FUNC_GET_DATA 1 #define FRONTIER_UTIL_FUNC_SET_DATA 2 -#define FRONTIER_UTIL_FUNC_LOAD_SELECTED_PARTY 3 +#define FRONTIER_UTIL_FUNC_SET_PARTY_ORDER 3 #define FRONTIER_UTIL_FUNC_SOFT_RESET 4 -#define FRONTIER_UTIL_FUNC_SET_FRONTIER_TRAINERS 5 -#define FRONTIER_UTIL_FUNC_6 6 +#define FRONTIER_UTIL_FUNC_SET_TRAINERS 5 +#define FRONTIER_UTIL_FUNC_SAVE_PARTY 6 #define FRONTIER_UTIL_FUNC_RESULTS_WINDOW 7 -#define FRONTIER_UTIL_FUNC_8 8 +#define FRONTIER_UTIL_FUNC_CHECK_AIR_TV_SHOW 8 #define FRONTIER_UTIL_FUNC_GET_BRAIN_STATUS 9 -#define FRONTIER_UTIL_FUNC_IS_FRONTIER_BRAIN 10 -#define FRONTIER_UTIL_FUNC_11 11 +#define FRONTIER_UTIL_FUNC_IS_BRAIN 10 +#define FRONTIER_UTIL_FUNC_GIVE_BATTLE_POINTS 11 #define FRONTIER_UTIL_FUNC_GET_FACILITY_SYMBOLS 12 #define FRONTIER_UTIL_FUNC_GIVE_FACILITY_SYMBOL 13 #define FRONTIER_UTIL_FUNC_CHECK_BATTLE_TYPE 14 -#define FRONTIER_UTIL_FUNC_15 15 +#define FRONTIER_UTIL_FUNC_CHECK_INELIGIBLE 15 #define FRONTIER_UTIL_FUNC_CHECK_VISIT_TRAINER 16 -#define FRONTIER_UTIL_FUNC_17 17 -#define FRONTIER_UTIL_FUNC_18 18 -#define FRONTIER_UTIL_FUNC_19 19 +#define FRONTIER_UTIL_FUNC_INCREMENT_STREAK 17 +#define FRONTIER_UTIL_FUNC_RESTORE_HELD_ITEMS 18 +#define FRONTIER_UTIL_FUNC_SAVE_BATTLE 19 #define FRONTIER_UTIL_FUNC_BUFFER_TRAINER_NAME 20 #define FRONTIER_UTIL_FUNC_RESET_SKETCH_MOVES 21 #define FRONTIER_UTIL_FUNC_SET_BRAIN_OBJECT 22 @@ -40,10 +39,37 @@ #define FRONTIER_DATA_CHALLENGE_STATUS 0 #define FRONTIER_DATA_LVL_MODE 1 #define FRONTIER_DATA_BATTLE_NUM 2 -#define FRONTIER_DATA_3 3 -#define FRONTIER_DATA_4 4 +#define FRONTIER_DATA_PAUSED 3 +#define FRONTIER_DATA_SELECTED_MON_ORDER 4 #define FRONTIER_DATA_BATTLE_OUTCOME 5 #define FRONTIER_DATA_6 6 -#define FRONTIER_DATA_SYMBOL 7 +#define FRONTIER_DATA_HEARD_BRAIN_SPEECH 7 + +#define STREAK_TOWER_SINGLES_50 (1 << 0) +#define STREAK_TOWER_SINGLES_OPEN (1 << 1) +#define STREAK_DOME_SINGLES_50 (1 << 2) +#define STREAK_DOME_SINGLES_OPEN (1 << 3) +#define STREAK_PALACE_SINGLES_50 (1 << 4) +#define STREAK_PALACE_SINGLES_OPEN (1 << 5) +#define STREAK_ARENA_50 (1 << 6) +#define STREAK_ARENA_OPEN (1 << 7) +#define STREAK_FACTORY_SINGLES_50 (1 << 8) +#define STREAK_FACTORY_SINGLES_OPEN (1 << 9) +#define STREAK_PIKE_50 (1 << 10) +#define STREAK_PIKE_OPEN (1 << 11) +#define STREAK_PYRAMID_50 (1 << 12) +#define STREAK_PYRAMID_OPEN (1 << 13) +#define STREAK_TOWER_DOUBLES_50 (1 << 14) +#define STREAK_TOWER_DOUBLES_OPEN (1 << 15) +#define STREAK_TOWER_MULTIS_50 (1 << 16) +#define STREAK_TOWER_MULTIS_OPEN (1 << 17) +#define STREAK_TOWER_LINK_MULTIS_50 (1 << 18) +#define STREAK_TOWER_LINK_MULTIS_OPEN (1 << 19) +#define STREAK_DOME_DOUBLES_50 (1 << 20) +#define STREAK_DOME_DOUBLES_OPEN (1 << 21) +#define STREAK_PALACE_DOUBLES_50 (1 << 22) +#define STREAK_PALACE_DOUBLES_OPEN (1 << 23) +#define STREAK_FACTORY_DOUBLES_50 (1 << 24) +#define STREAK_FACTORY_DOUBLES_OPEN (1 << 25) #endif // GUARD_CONSTANTS_FRONTIER_UTIL_H diff --git a/include/constants/global.h b/include/constants/global.h index 3ee7650a8..4c638d63f 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -56,10 +56,15 @@ #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. #define TRAINER_ID_LENGTH 4 +#define MAX_MON_MOVES 4 + +// party sizes #define PARTY_SIZE 6 -#define FRONTIER_PARTY_SIZE 3 #define MULTI_PARTY_SIZE PARTY_SIZE / 2 -#define MAX_MON_MOVES 4 +#define FRONTIER_PARTY_SIZE 3 +#define FRONTIER_DOUBLES_PARTY_SIZE 4 +#define FRONTIER_MULTI_PARTY_SIZE 2 +#define MAX_FRONTIER_PARTY_SIZE FRONTIER_DOUBLES_PARTY_SIZE // string lengths #define ITEM_NAME_LENGTH 14 diff --git a/include/constants/trainers.h b/include/constants/trainers.h index c0abfe6b6..e5a193770 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -119,7 +119,7 @@ #define FACILITY_CLASS_HIKER 0x0 #define FACILITY_CLASS_AQUA_GRUNT_M 0x1 -#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2 +#define FACILITY_CLASS_PKMN_BREEDER_F 0x2 #define FACILITY_CLASS_COOLTRAINER_M 0x3 #define FACILITY_CLASS_BIRD_KEEPER 0x4 #define FACILITY_CLASS_COLLECTOR 0x5 @@ -202,6 +202,86 @@ #define FACILITY_CLASSES_COUNT 0x52 +#define RS_FACILITY_CLASS_AQUA_LEADER_ARCHIE 0x0 +#define RS_FACILITY_CLASS_AQUA_GRUNT_M 0x1 +#define RS_FACILITY_CLASS_AQUA_GRUNT_F 0x2 +#define RS_FACILITY_CLASS_AROMA_LADY 0x3 +#define RS_FACILITY_CLASS_RUIN_MANIAC 0x4 +#define RS_FACILITY_CLASS_INTERVIEWER 0x5 +#define RS_FACILITY_CLASS_TUBER_F 0x6 +#define RS_FACILITY_CLASS_TUBER_M 0x7 +#define RS_FACILITY_CLASS_COOLTRAINER_M 0x8 +#define RS_FACILITY_CLASS_COOLTRAINER_F 0x9 +#define RS_FACILITY_CLASS_HEX_MANIAC 0xA +#define RS_FACILITY_CLASS_LADY 0xB +#define RS_FACILITY_CLASS_BEAUTY 0xC +#define RS_FACILITY_CLASS_RICH_BOY 0xD +#define RS_FACILITY_CLASS_POKEMANIAC 0xE +#define RS_FACILITY_CLASS_SWIMMER_M 0xF +#define RS_FACILITY_CLASS_BLACK_BELT 0x10 +#define RS_FACILITY_CLASS_GUITARIST 0x11 +#define RS_FACILITY_CLASS_KINDLER 0x12 +#define RS_FACILITY_CLASS_CAMPER 0x13 +#define RS_FACILITY_CLASS_BUG_MANIAC 0x14 +#define RS_FACILITY_CLASS_PSYCHIC_M 0x15 +#define RS_FACILITY_CLASS_PSYCHIC_F 0x16 +#define RS_FACILITY_CLASS_GENTLEMAN 0x17 +#define RS_FACILITY_CLASS_ELITE_FOUR_M 0x18 +#define RS_FACILITY_CLASS_ELITE_FOUR_F 0x19 +#define RS_FACILITY_CLASS_LEADER_F 0x1A +#define RS_FACILITY_CLASS_LEADER_M 0x1B +#define RS_FACILITY_CLASS_LEADER_MF 0x1C +#define RS_FACILITY_CLASS_SCHOOL_KID_M 0x1D +#define RS_FACILITY_CLASS_SCHOOL_KID_F 0x1E +#define RS_FACILITY_CLASS_SR_AND_JR 0x1F +#define RS_FACILITY_CLASS_POKEFAN_M 0x20 +#define RS_FACILITY_CLASS_POKEFAN_F 0x21 +#define RS_FACILITY_CLASS_EXPERT_M 0x22 +#define RS_FACILITY_CLASS_EXPERT_F 0x23 +#define RS_FACILITY_CLASS_YOUNGSTER 0x24 +#define RS_FACILITY_CLASS_CHAMPION 0x25 +#define RS_FACILITY_CLASS_FISHERMAN 0x26 +#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x27 +#define RS_FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x28 +#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x29 +#define RS_FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x2A +#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x2B +#define RS_FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x2C +#define RS_FACILITY_CLASS_DRAGON_TAMER 0x2D +#define RS_FACILITY_CLASS_BIRD_KEEPER 0x2E +#define RS_FACILITY_CLASS_NINJA_BOY 0x2F +#define RS_FACILITY_CLASS_BATTLE_GIRL 0x30 +#define RS_FACILITY_CLASS_PARASOL_LADY 0x31 +#define RS_FACILITY_CLASS_SWIMMER_F 0x32 +#define RS_FACILITY_CLASS_PICNICKER 0x33 +#define RS_FACILITY_CLASS_TWINS 0x34 +#define RS_FACILITY_CLASS_SAILOR 0x35 +#define RS_FACILITY_CLASS_BOARDER_1 0x36 +#define RS_FACILITY_CLASS_BOARDER_2 0x37 +#define RS_FACILITY_CLASS_COLLECTOR 0x38 +#define RS_FACILITY_CLASS_WALLY 0x39 +#define RS_FACILITY_CLASS_BRENDAN_1 0x3A +#define RS_FACILITY_CLASS_BRENDAN_2 0x3B +#define RS_FACILITY_CLASS_BRENDAN_3 0x3C +#define RS_FACILITY_CLASS_MAY_1 0x3D +#define RS_FACILITY_CLASS_MAY_2 0x3E +#define RS_FACILITY_CLASS_MAY_3 0x3F +#define RS_FACILITY_CLASS_PKMN_BREEDER_M 0x40 +#define RS_FACILITY_CLASS_PKMN_BREEDER_F 0x41 +#define RS_FACILITY_CLASS_PKMN_RANGER_M 0x42 +#define RS_FACILITY_CLASS_PKMN_RANGER_F 0x43 +#define RS_FACILITY_CLASS_MAGMA_LEADER 0x44 +#define RS_FACILITY_CLASS_MAGMA_GRUNT_M 0x45 +#define RS_FACILITY_CLASS_MAGMA_GRUNT_F 0x46 +#define RS_FACILITY_CLASS_LASS 0x47 +#define RS_FACILITY_CLASS_BUG_CATCHER 0x48 +#define RS_FACILITY_CLASS_HIKER 0x49 +#define RS_FACILITY_CLASS_YOUNG_COUPLE 0x4A +#define RS_FACILITY_CLASS_OLD_COUPLE 0x4B +#define RS_FACILITY_CLASS_SIS_AND_BRO 0x4C + +#define RS_FACILITY_CLASSES_COUNT 0x4D + #define TRAINER_CLASS_PKMN_TRAINER_1 0x0 // Unused #define TRAINER_CLASS_PKMN_TRAINER_2 0x1 // Unused #define TRAINER_CLASS_HIKER 0x2 diff --git a/include/frontier_util.h b/include/frontier_util.h index adea712e0..d6cdb3a62 100644 --- a/include/frontier_util.h +++ b/include/frontier_util.h @@ -4,14 +4,14 @@ void CallFrontierUtilFunc(void); u8 GetFrontierBrainStatus(void); void CopyFrontierTrainerText(u8 whichText, u16 trainerId); -void sub_81A3908(void); +void ResetWinStreaks(void); u32 GetCurrentFacilityWinStreak(void); -void sub_81A3ACC(void); +void ResetFrontierTrainerIds(void); u8 GetPlayerSymbolCountForFacility(u8 facility); void ShowRankingHallRecordsWindow(void); void ScrollRankingHallRecordsWindow(void); void ClearRankingHallRecords(void); -void sub_81A4C30(void); +void SaveGameFrontier(void); u8 GetFrontierBrainTrainerPicIndex(void); u8 GetFrontierBrainTrainerClass(void); void CopyFrontierBrainTrainerName(u8 *dst); diff --git a/include/global.h b/include/global.h index bcb77aaaf..9b1695a25 100644 --- a/include/global.h +++ b/include/global.h @@ -269,11 +269,20 @@ struct EmeraldBattleTowerRecord /*0x10*/ u16 greeting[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x1C*/ u16 speechWon[EASY_CHAT_BATTLE_WORDS_COUNT]; /*0x28*/ u16 speechLost[EASY_CHAT_BATTLE_WORDS_COUNT]; - /*0x34*/ struct BattleTowerPokemon party[4]; + /*0x34*/ struct BattleTowerPokemon party[MAX_FRONTIER_PARTY_SIZE]; /*0xE4*/ u8 language; /*0xE8*/ u32 checksum; }; +struct BattleTowerInterview +{ + u16 playerSpecies; + u16 opponentSpecies; + u8 opponentName[PLAYER_NAME_LENGTH + 1]; + u8 opponentMonNickname[POKEMON_NAME_LENGTH + 1]; + u8 opponentLanguage; +}; + struct BattleTowerEReaderTrainer { /*0x00*/ u8 unk0; @@ -317,32 +326,27 @@ struct BattleFrontier { /*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer; /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[5]; // From record mixing. - /*0xBD4*/ u16 field_BD4; - /*0xBD6*/ u16 field_BD6; - /*0xBD8*/ u8 field_BD8[PLAYER_NAME_LENGTH + 1]; - /*0xBE3*/ u8 field_BE0[POKEMON_NAME_LENGTH + 1]; - /*0xBEB*/ u8 field_BEB; + /*0xBEB*/ struct BattleTowerInterview towerInterview; /*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer; - /*0xCA8*/ u8 challengeOutcome; - /*0xCA9*/ u8 lvlMode:2; // 0x1, 0x2 -> 0x3 - /*0xCA9*/ u8 field_CA9_a:1; // 0x4 - /*0xCA9*/ u8 field_CA9_b:1; // 0x8 - /*0xCA9*/ u8 field_CA9_c:1; // 0x10 - /*0xCA9*/ u8 field_CA9_d:1; // 0x20 - /*0xCA9*/ u8 field_CA9_e:1; // 0x40 - /*0xCA9*/ u8 field_CA9_f:1; // 0x80 - /*0xCAA*/ u16 selectedPartyMons[FRONTIER_PARTY_SIZE]; - /*0xCB0*/ u16 field_CB0; - /*0xCB2*/ u16 curChallengeBattleNum; // In case of battle pyramid, the floor. + /*0xCA8*/ u8 challengeStatus; + /*0xCA9*/ u8 lvlMode:2; + /*0xCA9*/ u8 challengePaused:1; + /*0xCA9*/ u8 field_CA9_b:1; + /*0xCA9*/ u8 unused_CA9_c:1; + /*0xCA9*/ u8 unused_CA9_d:1; + /*0xCA9*/ u8 unused_CA9_e:1; + /*0xCA9*/ u8 unused_CA9_f:1; + /*0xCB0*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; + /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; - /*0xCDC*/ u32 field_CDC; + /*0xCDC*/ u32 winStreakActiveFlags; /*0xCE0*/ u16 towerWinStreaks[4][2]; /*0xCF0*/ u16 towerRecordWinStreaks[4][2]; - /*0xD00*/ u16 symbolFlags; - /*0xD02*/ u16 field_D02; - /*0xD04*/ u16 field_D04; - /*0xD06*/ u8 field_D06; - /*0xD07*/ u8 field_D07; + /*0xD00*/ u16 battledBrainFlags; + /*0xD02*/ u16 towerSinglesStreak; // Never read + /*0xD04*/ u16 towerNumWins; // Increments to MAX_STREAK but never read otherwise + /*0xD06*/ u8 towerBattleOutcome; + /*0xD07*/ u8 towerLvlMode; /*0xD08*/ u8 field_D08_0:1; /*0xD08*/ u8 field_D08_1:1; /*0xD08*/ u8 field_D08_2:1; @@ -388,19 +392,19 @@ struct BattleFrontier /*0xE6A*/ u16 field_E6A; /*0xE6C*/ u16 field_E6C; /*0xE6E*/ u16 field_E6E; - /*0xE70*/ struct RentalMon rentalMons[6]; + /*0xE70*/ struct RentalMon rentalMons[PARTY_SIZE]; /*0xEB8*/ u16 battlePoints; - /*0xEBA*/ u16 field_EBA; + /*0xEBA*/ u16 cardBattlePoints; /*0xEBC*/ u32 battlesCount; /*0xEC0*/ u16 field_EC0[16]; /*0xEE0*/ u8 trainerFlags; - /*0xEE1*/ u8 opponentName[2][PLAYER_NAME_LENGTH + 1]; - /*0xEF1*/ u8 field_EF1[2][4]; - /*0xEF9*/ u8 unk_EF9:7; + /*0xEE1*/ u8 opponentNames[2][PLAYER_NAME_LENGTH + 1]; + /*0xEF1*/ u8 opponentTrainerIds[2][TRAINER_ID_LENGTH]; + /*0xEF9*/ u8 unk_EF9:7; // Never read /*0xEF9*/ u8 savedGame:1; - /*0xEFA*/ u8 field_EFA; - /*0xEFB*/ u8 field_EFB; - /*0xEFC*/ struct FrontierMonData field_EFC[3]; + /*0xEFA*/ u8 unused_EFA; + /*0xEFB*/ u8 unused_EFB; + /*0xEFC*/ struct FrontierMonData field_EFC[FRONTIER_PARTY_SIZE]; }; struct ApprenticeQuestion diff --git a/include/strings.h b/include/strings.h index 9eddf1a0e..f814ad29f 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1304,7 +1304,7 @@ extern const u8 gText_1st[]; extern const u8 gText_SpaceAndSpace[]; extern const u8 gText_CommaSpace[]; extern const u8 gText_NewLine[]; -extern const u8 gText_ScrollTextUp[]; +extern const u8 gText_LineBreak[]; extern const u8 gText_Space[]; extern const u8 gText_Space2[]; extern const u8 gText_Are[]; diff --git a/include/tv.h b/include/tv.h index 4027c3c0f..dc4b22a99 100644 --- a/include/tv.h +++ b/include/tv.h @@ -9,7 +9,7 @@ extern u8 *const gTVStringVarPtrs[3]; void ClearTVShowData(void); void sub_80EE184(void); void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove); -void sub_80EE8C8(u16 winStreak, u8 facility); +void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility); void DoTVShow(void); void DoTVShowInSearchOfTrainers(void); void TryPutTreasureInvestigatorsOnAir(void); @@ -56,7 +56,7 @@ void InterviewAfter(void); void UpdateTVScreensOnMap(int, int); void TV_PrintIntToStringVar(u8 varIdx, int value); void SaveRecordedItemPurchasesForTVShow(void); -bool8 sub_80EE818(void); +bool8 ShouldAirFrontierTVShow(void); void sub_80EE8C8(u16 winStreak, u8 facilityAndMode); void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace); void ContestLiveUpdates_BeforeInterview_1(u8 a0); -- cgit v1.2.3 From 0db46e84bc44b23d7fd08faaa89e4fdc7abcc364 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 25 Nov 2019 16:43:43 -0500 Subject: Use macros for FRONTIER_DATA_6, fix offset comment --- include/global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 9b1695a25..61186d084 100644 --- a/include/global.h +++ b/include/global.h @@ -336,7 +336,7 @@ struct BattleFrontier /*0xCA9*/ u8 unused_CA9_d:1; /*0xCA9*/ u8 unused_CA9_e:1; /*0xCA9*/ u8 unused_CA9_f:1; - /*0xCB0*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; + /*0xCAA*/ u16 selectedPartyMons[MAX_FRONTIER_PARTY_SIZE]; /*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid) /*0xCB4*/ u16 trainerIds[20]; /*0xCDC*/ u32 winStreakActiveFlags; -- cgit v1.2.3