diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/constants/contest.h | 131 | ||||
-rw-r--r-- | include/constants/global.h | 8 | ||||
-rw-r--r-- | include/constants/tv.h | 54 | ||||
-rw-r--r-- | include/contest.h | 440 | ||||
-rw-r--r-- | include/contest_link.h | 26 | ||||
-rw-r--r-- | include/contest_util.h | 4 | ||||
-rw-r--r-- | include/event_scripts.h | 66 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | include/global.tv.h | 20 | ||||
-rw-r--r-- | include/graphics.h | 4 | ||||
-rw-r--r-- | include/link.h | 22 | ||||
-rw-r--r-- | include/link_rfu.h | 20 | ||||
-rw-r--r-- | include/script_pokemon_80F8.h | 10 | ||||
-rw-r--r-- | include/script_pokemon_util.h | 11 | ||||
-rw-r--r-- | include/script_pokemon_util_80F87D8.h | 9 | ||||
-rw-r--r-- | include/tv.h | 10 |
16 files changed, 443 insertions, 396 deletions
diff --git a/include/constants/contest.h b/include/constants/contest.h index 2de2866a3..5ec4c4f69 100644 --- a/include/constants/contest.h +++ b/include/constants/contest.h @@ -1,9 +1,9 @@ #ifndef GUARD_CONSTANTS_CONTEST_H #define GUARD_CONSTANTS_CONTEST_H -#define CONTESTANT_COUNT 4 #define APPLAUSE_METER_SIZE 5 -#define CONTEST_TURN_COUNT 5 +#define CONTEST_NUM_APPEALS 5 +#define CONTEST_LAST_APPEAL (CONTEST_NUM_APPEALS - 1) #define LINK_CONTEST_FLAG_IS_LINK (1 << 0) #define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) @@ -22,13 +22,6 @@ #define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1) #define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1) -#define CONTEST_CATEGORY_COOL 0 -#define CONTEST_CATEGORY_BEAUTY 1 -#define CONTEST_CATEGORY_CUTE 2 -#define CONTEST_CATEGORY_SMART 3 -#define CONTEST_CATEGORY_TOUGH 4 -#define CONTEST_CATEGORIES_COUNT 5 - #define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved #define CONTEST_WINNER_HALL_1 1 #define CONTEST_WINNER_HALL_2 2 @@ -52,4 +45,124 @@ #define CANT_ENTER_CONTEST_EGG 3 #define CANT_ENTER_CONTEST_FAINTED 4 +#define CONTEST_AI_CHECK_BAD_MOVE (1 << 0) +#define CONTEST_AI_CHECK_COMBO (1 << 1) +#define CONTEST_AI_CHECK_BORING (1 << 2) +#define CONTEST_AI_CHECK_EXCITEMENT (1 << 3) +#define CONTEST_AI_CHECK_ORDER (1 << 4) +#define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5) +#define CONTEST_AI_ERRATIC (1 << 6) + +#define CONTEST_EFFECT_HIGHLY_APPEALING 0 +#define CONTEST_EFFECT_USER_MORE_EASILY_STARTLED 1 +#define CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES 2 +#define CONTEST_EFFECT_REPETITION_NOT_BORING 3 +#define CONTEST_EFFECT_AVOID_STARTLE_ONCE 4 +#define CONTEST_EFFECT_AVOID_STARTLE 5 +#define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6 +#define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7 +#define CONTEST_EFFECT_STARTLE_FRONT_MON 8 +#define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9 +#define CONTEST_EFFECT_STARTLE_PREV_MON 10 +#define CONTEST_EFFECT_STARTLE_PREV_MONS 11 +#define CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON 12 +#define CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS 13 +#define CONTEST_EFFECT_STARTLE_PREV_MON_2 14 +#define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15 +#define CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION 16 +#define CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION 17 +#define CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN 18 +#define CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL 19 +#define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20 +#define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21 +#define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22 +#define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23 +#define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24 +#define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25 +#define CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS 26 +#define CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS 27 +#define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28 +#define CONTEST_EFFECT_BETTER_IF_FIRST 29 +#define CONTEST_EFFECT_BETTER_IF_LAST 30 +#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES 31 +#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE 32 +#define CONTEST_EFFECT_BETTER_WHEN_LATER 33 +#define CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING 34 +#define CONTEST_EFFECT_BETTER_IF_SAME_TYPE 35 +#define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36 +#define CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL 37 +#define CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS 38 +#define CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION 39 +#define CONTEST_EFFECT_NEXT_APPEAL_EARLIER 40 +#define CONTEST_EFFECT_NEXT_APPEAL_LATER 41 +#define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42 +#define CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER 43 +#define CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST 44 +#define CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS 45 +#define CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED 46 +#define CONTEST_EFFECT_DONT_EXCITE_AUDIENCE 47 + +#define COMBO_STARTER_RAIN_DANCE 1 +#define COMBO_STARTER_RAGE 2 +#define COMBO_STARTER_FOCUS_ENERGY 3 +#define COMBO_STARTER_HYPNOSIS 4 +#define COMBO_STARTER_ENDURE 5 +#define COMBO_STARTER_HORN_ATTACK 6 +#define COMBO_STARTER_SWORDS_DANCE 7 +#define COMBO_STARTER_STOCKPILE 8 +#define COMBO_STARTER_SUNNY_DAY 9 +#define COMBO_STARTER_REST 10 +#define COMBO_STARTER_VICE_GRIP 11 +#define COMBO_STARTER_DEFENSE_CURL 12 +#define COMBO_STARTER_CHARGE 13 +#define COMBO_STARTER_ROCK_THROW 14 +#define COMBO_STARTER_YAWN 15 +#define COMBO_STARTER_SCARY_FACE 16 +#define COMBO_STARTER_POWDER_SNOW 17 +#define COMBO_STARTER_LOCK_ON 18 +#define COMBO_STARTER_SOFT_BOILED 19 +#define COMBO_STARTER_MEAN_LOOK 20 +#define COMBO_STARTER_SCRATCH 21 +#define COMBO_STARTER_GROWTH 22 +#define COMBO_STARTER_HAIL 23 +#define COMBO_STARTER_SANDSTORM 24 +#define COMBO_STARTER_BELLY_DRUM 25 +#define COMBO_STARTER_MIND_READER 26 +#define COMBO_STARTER_DRAGON_BREATH 27 +#define COMBO_STARTER_DRAGON_RAGE 28 +#define COMBO_STARTER_DRAGON_DANCE 29 +#define COMBO_STARTER_SURF 30 +#define COMBO_STARTER_DIVE 31 +#define COMBO_STARTER_STRING_SHOT 32 +#define COMBO_STARTER_LEER 33 +#define COMBO_STARTER_TAUNT 34 +#define COMBO_STARTER_CHARM 35 +#define COMBO_STARTER_HARDEN 36 +#define COMBO_STARTER_SING 37 +#define COMBO_STARTER_EARTHQUAKE 38 +#define COMBO_STARTER_DOUBLE_TEAM 39 +#define COMBO_STARTER_CURSE 40 +#define COMBO_STARTER_SWEET_SCENT 41 +#define COMBO_STARTER_SLUDGE 42 +#define COMBO_STARTER_SLUDGE_BOMB 43 +#define COMBO_STARTER_THUNDER_PUNCH 44 +#define COMBO_STARTER_FIRE_PUNCH 45 +#define COMBO_STARTER_ICE_PUNCH 46 +#define COMBO_STARTER_PECK 47 +#define COMBO_STARTER_METAL_SOUND 48 +#define COMBO_STARTER_MUD_SPORT 49 +#define COMBO_STARTER_WATER_SPORT 50 +#define COMBO_STARTER_BONE_CLUB 51 +#define COMBO_STARTER_BONEMERANG 52 +#define COMBO_STARTER_BONE_RUSH 53 +#define COMBO_STARTER_SAND_ATTACK 54 +#define COMBO_STARTER_MUD_SLAP 55 +#define COMBO_STARTER_FAKE_OUT 56 +#define COMBO_STARTER_PSYCHIC 57 +#define COMBO_STARTER_KINESIS 58 +#define COMBO_STARTER_CONFUSION 59 +#define COMBO_STARTER_POUND 60 +#define COMBO_STARTER_SMOG 61 +#define COMBO_STARTER_CALM_MIND 62 + #endif // GUARD_CONSTANTS_CONTEST_H diff --git a/include/constants/global.h b/include/constants/global.h index 98f15e7dc..55830ae8b 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -60,6 +60,14 @@ #define MAX_MON_MOVES 4 #define NUM_STATS 6 +#define CONTESTANT_COUNT 4 +#define CONTEST_CATEGORY_COOL 0 +#define CONTEST_CATEGORY_BEAUTY 1 +#define CONTEST_CATEGORY_CUTE 2 +#define CONTEST_CATEGORY_SMART 3 +#define CONTEST_CATEGORY_TOUGH 4 +#define CONTEST_CATEGORIES_COUNT 5 + // party sizes #define PARTY_SIZE 6 #define MULTI_PARTY_SIZE PARTY_SIZE / 2 diff --git a/include/constants/tv.h b/include/constants/tv.h index 6f686f727..4b5f9115b 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -133,5 +133,59 @@ #define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s +// TV Show states for Pokemon Contest Live Updates +#define CONTESTLIVE_STATE_INTRO 0 +#define CONTESTLIVE_STATE_WON_BOTH_ROUNDS 1 +#define CONTESTLIVE_STATE_BETTER_ROUND2 2 +#define CONTESTLIVE_STATE_EQUAL_ROUNDS 3 +#define CONTESTLIVE_STATE_BETTER_ROUND1 4 +#define CONTESTLIVE_STATE_GOT_NERVOUS 5 +#define CONTESTLIVE_STATE_STARTLED_OTHER 6 +#define CONTESTLIVE_STATE_USED_COMBO 7 +#define CONTESTLIVE_STATE_EXCITING_APPEAL 8 +#define CONTESTLIVE_STATE_COOL 9 +#define CONTESTLIVE_STATE_BEAUTIFUL 10 +#define CONTESTLIVE_STATE_CUTE 11 +#define CONTESTLIVE_STATE_SMART 12 +#define CONTESTLIVE_STATE_TOUGH 13 +#define CONTESTLIVE_STATE_VERY_EXCITING_APPEAL 14 +#define CONTESTLIVE_STATE_VERY_COOL 15 +#define CONTESTLIVE_STATE_VERY_BEAUTIFUL 16 +#define CONTESTLIVE_STATE_VERY_CUTE 17 +#define CONTESTLIVE_STATE_VERY_SMART 18 +#define CONTESTLIVE_STATE_VERY_TOUGH 19 +#define CONTESTLIVE_STATE_TOOK_BREAK 20 +#define CONTESTLIVE_STATE_GOT_STARTLED 21 +#define CONTESTLIVE_STATE_USED_MOVE 22 +#define CONTESTLIVE_STATE_TALK_ABOUT_LOSER 23 +#define CONTESTLIVE_STATE_NO_APPEALS 24 +#define CONTESTLIVE_STATE_LAST_BOTH 25 +#define CONTESTLIVE_STATE_NOT_EXCITING_ENOUGH 26 +#define CONTESTLIVE_STATE_LOST_AFTER_ROUND1_WIN 27 +#define CONTESTLIVE_STATE_NO_EXCITING_APPEALS 28 +#define CONTESTLIVE_STATE_LOST_SMALL_MARGIN 29 +#define CONTESTLIVE_STATE_REPEATED_APPEALS 30 +#define CONTESTLIVE_STATE_LOST 31 +#define CONTESTLIVE_STATE_OUTRO 32 + +// Flags used to comment on winner +#define CONTESTLIVE_FLAG_EXCITING_APPEAL (1 << 0) +#define CONTESTLIVE_FLAG_GOT_NERVOUS (1 << 1) +#define CONTESTLIVE_FLAG_MAXED_EXCITEMENT (1 << 2) +#define CONTESTLIVE_FLAG_USED_COMBO (1 << 3) +#define CONTESTLIVE_FLAG_STARTLED_OTHER (1 << 4) +#define CONTESTLIVE_FLAG_SKIPPED_TURN (1 << 5) +#define CONTESTLIVE_FLAG_GOT_STARTLED (1 << 6) +#define CONTESTLIVE_FLAG_MADE_APPEAL (1 << 7) + +// Flags used to comment on loser +#define CONTESTLIVE_FLAG_LOST (1 << 0) +#define CONTESTLIVE_FLAG_REPEATED_MOVE (1 << 1) +#define CONTESTLIVE_FLAG_LOST_SMALL_MARGIN (1 << 2) +#define CONTESTLIVE_FLAG_NO_EXCITEMENT (1 << 3) +#define CONTESTLIVE_FLAG_BLEW_LEAD (1 << 4) +#define CONTESTLIVE_FLAG_MISSED_EXCITEMENT (1 << 5) +#define CONTESTLIVE_FLAG_LAST_BOTH_ROUNDS (1 << 6) +#define CONTESTLIVE_FLAG_NO_APPEALS (1 << 7) #endif //GUARD_CONSTANTS_TV_H diff --git a/include/contest.h b/include/contest.h index a9b1db9ee..d008b8fce 100644 --- a/include/contest.h +++ b/include/contest.h @@ -6,135 +6,6 @@ enum { - CONTEST_DEBUG_MODE_OFF, - // Prints the totalPoints value for each contestant. - CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL, - // Prints the ContestResourcesField1C::unk_C value as a bitstring for each contestant. - CONTEST_DEBUG_MODE_PRINT_UNK_C, - // Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant. - CONTEST_DEBUG_MODE_PRINT_UNK_D -}; - -enum -{ - CONTEST_EFFECT_HIGHLY_APPEALING, - CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, - CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, - CONTEST_EFFECT_REPETITION_NOT_BORING, - CONTEST_EFFECT_AVOID_STARTLE_ONCE, - CONTEST_EFFECT_AVOID_STARTLE, - CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY, - CONTEST_EFFECT_USER_LESS_EASILY_STARTLED, - CONTEST_EFFECT_STARTLE_FRONT_MON, - CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS, - CONTEST_EFFECT_STARTLE_PREV_MON, - CONTEST_EFFECT_STARTLE_PREV_MONS, - CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON, - CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS, - CONTEST_EFFECT_STARTLE_PREV_MON_2, - CONTEST_EFFECT_STARTLE_PREV_MONS_2, - CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION, - CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION, - CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN, - CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL, - CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL, - CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS, - CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS, - CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS, - CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION, - CONTEST_EFFECT_BETTER_IF_FIRST, - CONTEST_EFFECT_BETTER_IF_LAST, - CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES, - CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE, - CONTEST_EFFECT_BETTER_WHEN_LATER, - CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING, - CONTEST_EFFECT_BETTER_IF_SAME_TYPE, - CONTEST_EFFECT_BETTER_IF_DIFF_TYPE, - CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL, - CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS, - CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION, - CONTEST_EFFECT_NEXT_APPEAL_EARLIER, - CONTEST_EFFECT_NEXT_APPEAL_LATER, - CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER, - CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER, - CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST, - CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS, - CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED, - CONTEST_EFFECT_DONT_EXCITE_AUDIENCE -}; - -enum -{ - COMBO_STARTER_RAIN_DANCE = 1, - COMBO_STARTER_RAGE, - COMBO_STARTER_FOCUS_ENERGY, - COMBO_STARTER_HYPNOSIS, - COMBO_STARTER_ENDURE, - COMBO_STARTER_HORN_ATTACK, - COMBO_STARTER_SWORDS_DANCE, - COMBO_STARTER_STOCKPILE, - COMBO_STARTER_SUNNY_DAY, - COMBO_STARTER_REST, - COMBO_STARTER_VICE_GRIP, - COMBO_STARTER_DEFENSE_CURL, - COMBO_STARTER_CHARGE, - COMBO_STARTER_ROCK_THROW, - COMBO_STARTER_YAWN, - COMBO_STARTER_SCARY_FACE, - COMBO_STARTER_POWDER_SNOW, - COMBO_STARTER_LOCK_ON, - COMBO_STARTER_SOFT_BOILED, - COMBO_STARTER_MEAN_LOOK, - COMBO_STARTER_SCRATCH, - COMBO_STARTER_GROWTH, - COMBO_STARTER_HAIL, - COMBO_STARTER_SANDSTORM, - COMBO_STARTER_BELLY_DRUM, - COMBO_STARTER_MIND_READER, - COMBO_STARTER_DRAGON_BREATH, - COMBO_STARTER_DRAGON_RAGE, - COMBO_STARTER_DRAGON_DANCE, - COMBO_STARTER_SURF, - COMBO_STARTER_DIVE, - COMBO_STARTER_STRING_SHOT, - COMBO_STARTER_LEER, - COMBO_STARTER_TAUNT, - COMBO_STARTER_CHARM, - COMBO_STARTER_HARDEN, - COMBO_STARTER_SING, - COMBO_STARTER_EARTHQUAKE, - COMBO_STARTER_DOUBLE_TEAM, - COMBO_STARTER_CURSE, - COMBO_STARTER_SWEET_SCENT, - COMBO_STARTER_SLUDGE, - COMBO_STARTER_SLUDGE_BOMB, - COMBO_STARTER_THUNDER_PUNCH, - COMBO_STARTER_FIRE_PUNCH, - COMBO_STARTER_ICE_PUNCH, - COMBO_STARTER_PECK, - COMBO_STARTER_METAL_SOUND, - COMBO_STARTER_MUD_SPORT, - COMBO_STARTER_WATER_SPORT, - COMBO_STARTER_BONE_CLUB, - COMBO_STARTER_BONEMERANG, - COMBO_STARTER_BONE_RUSH, - COMBO_STARTER_SAND_ATTACK, - COMBO_STARTER_MUD_SLAP, - COMBO_STARTER_FAKE_OUT, - COMBO_STARTER_PSYCHIC, - COMBO_STARTER_KINESIS, - COMBO_STARTER_CONFUSION, - COMBO_STARTER_POUND, - COMBO_STARTER_SMOG, - COMBO_STARTER_CALM_MIND -}; - -enum -{ CONTEST_STRING_MORE_CONSCIOUS, CONTEST_STRING_NO_APPEAL, CONTEST_STRING_SETTLE_DOWN, @@ -206,29 +77,38 @@ enum { CONTEST_FILTER_ONLY_POSTGAME }; +// Constants for changing in-contest Condition (the stars that appear during appeals) +enum { + CONDITION_NO_CHANGE, + CONDITION_GAIN, + CONDITION_LOSE, +}; + struct ContestPokemon { - /*0x00*/ u16 species; - /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1]; - /*0x15*/ u8 trainerGfxId; - /*0x18*/ u32 aiChecks; - /*0x1C*/ u8 whichRank:2; // 0x1 0x2 - u8 aiPool_Cool:1; // 0x4 - u8 aiPool_Beauty:1; // 0x8 - u8 aiPool_Cute:1; // 0x10 - u8 aiPool_Smart:1; // 0x20 - u8 aiPool_Tough:1; // 0x40 - /*0x1E*/ u16 moves[MAX_MON_MOVES]; // moves - /*0x26*/ u8 cool; // cool - /*0x27*/ u8 beauty; // beauty - /*0x28*/ u8 cute; // cute - /*0x29*/ u8 smart; // smart - /*0x2A*/ u8 tough; // tough - /*0x2B*/ u8 sheen; // sheen - /*0x2C*/ u8 unk2C[12]; - /*0x38*/ u32 personality; // personality - /*0x3C*/ u32 otId; // otId + u16 species; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 trainerName[PLAYER_NAME_LENGTH + 1]; + u8 trainerGfxId; + u32 aiChecks; + u8 whichRank:2; + u8 aiPool_Cool:1; + u8 aiPool_Beauty:1; + u8 aiPool_Cute:1; + u8 aiPool_Smart:1; + u8 aiPool_Tough:1; + u16 moves[MAX_MON_MOVES]; + u8 cool; + u8 beauty; + u8 cute; + u8 smart; + u8 tough; + u8 sheen; + u8 highestRank; + bool8 gameCleared; + u8 unused[10]; + u32 personality; + u32 otId; }; struct Shared1A004 @@ -239,101 +119,101 @@ struct Shared1A004 u8 savedJunk[0x800]; }; -struct ContestStruct_field_18 +struct ContestMoveAnimData { u16 species; - u16 unk2; - u8 unk4_0:1; - u8 unk5; - u32 unk8; - u32 unkC; - u32 unk10; + u16 targetSpecies; + bool8 hasTargetAnim:1; + u8 contestant; + u32 personality; + u32 otId; + u32 targetPersonality; }; struct Contest { - /*0x0*/ u8 playerMoveChoice; - /*0x1*/ u8 turnNumber; - /*0x2*/ u8 unused2[CONTESTANT_COUNT]; - /*0x6*/ u16 unk1920A_0:1; // Task active flags? - u16 unk1920A_1:1; - u16 unk1920A_2:1; - u16 unk1920A_3:1; - u16 unk1920A_4:1; - u16 isShowingApplauseMeter:1; - u16 applauseMeterIsMoving:1; - u16 unk1920A_7:1; - /*0x7*/ u16 unk1920B_0:1; - u16 unk1920B_1:1; - u16 unk1920B_2:1; - /*0x8*/ u8 mainTaskId; - /*0x9*/ u8 unk1920D[4]; - /*0xD*/ u8 unk19211; - /*0xE*/ u8 unk19212; - /*0xF*/ u8 filler19213; - /*0x10*/ u8 unk19214; - /*0x11*/ u8 unk19215; - /*0x12*/ u8 unk19216; // sprite ID - /*0x13*/ s8 applauseLevel; - /*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT]; - /*0x1921C*/ u32 unk1921C; // saved RNG value? - u16 moveHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT]; - u8 excitementHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT]; + u8 playerMoveChoice; + u8 appealNumber; + u8 unk[CONTESTANT_COUNT]; // never read + bool16 unused1:1; + bool16 unused2:1; + bool16 unused3:1; + bool16 unused4:1; + bool16 waitForJudgeSpeechBubble:1; + bool16 isShowingApplauseMeter:1; + bool16 applauseMeterIsMoving:1; + bool16 animatingAudience:1; + bool16 waitForAudienceBlend:1; + bool16 sliderHeartsAnimating:1; // When the slider heart is appearing/disappearing + bool16 waitForLink:1; + u8 mainTaskId; + u8 filler1[4]; + u8 judgeAttentionTaskId; + u8 blendTaskId; + u8 filler2; + u8 turnNumber; + u8 currentContestant; + u8 judgeSpeechBubbleSpriteId; + s8 applauseLevel; + u8 prevTurnOrder[CONTESTANT_COUNT]; + u32 unusedRng; + u16 moveHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT]; + u8 excitementHistory[CONTEST_NUM_APPEALS][CONTESTANT_COUNT]; u8 applauseMeterSpriteId; - /*0x1925D*/ u8 contestSetupState; - /*0x1925E*/ u8 unk1925E; + u8 contestSetupState; + u8 moveAnimTurnCount; }; struct ContestantStatus { - /*0x00*/ s16 appeal1; // move appeal? - /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe? - /*0x04*/ s16 pointTotal; - /*0x06*/ u16 currMove; - /*0x08*/ u16 prevMove; - /*0x0A*/ u8 moveCategory; - /*0x0B*/ u8 ranking:2; - u8 unkB_2:2; + s16 baseAppeal; + s16 appeal; + s16 pointTotal; + u16 currMove; + u16 prevMove; + u8 moveCategory; + u8 ranking:2; + u8 unused1:2; u8 moveRepeatCount:3; - u8 noMoreTurns:1; // used a one-time move? - /*0x0C*/ u8 nervous:1; + bool8 noMoreTurns:1; // used a one-time move? + bool8 nervous:1; u8 numTurnsSkipped:2; - /*0x0D*/ s8 condition; - /*0x0E*/ u8 jam; - /*0x0F*/ u8 jamReduction; + s8 condition; + u8 jam; + u8 jamReduction; // Flags set by move effect - /*0x10*/ u8 resistant:1; - u8 immune:1; - u8 moreEasilyStartled:1; - u8 usedRepeatableMove:1; + bool8 resistant:1; + bool8 immune:1; + bool8 moreEasilyStartled:1; + bool8 usedRepeatableMove:1; u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition u8 turnOrderMod:2; // 1: defined; 2: random - /*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random - u8 turnSkipped:1; - u8 exploded:1; - u8 overrideCategoryExcitementMod:1; - u8 appealTripleCondition:1; + u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random + bool8 turnSkipped:1; + bool8 exploded:1; + bool8 overrideCategoryExcitementMod:1; + bool8 appealTripleCondition:1; - /*0x12*/ u8 jamSafetyCount; - /*0x13*/ u8 effectStringId; // status action? - /*0x14*/ u8 effectStringId2; - /*0x15*/ u8 disappointedRepeat:1; - u8 unk15_1:1; - u8 unk15_2:1; - u8 unk15_3:1; - u8 hasJudgesAttention:1; - u8 judgesAttentionWasRemoved:1; - u8 unk15_6:1; - /*0x16*/ u8 unk16; - /*0x17*/ u8 unk17; - /*0x18*/ u8 unk18; - /*0x19*/ u8 nextTurnOrder; // turn position - /*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out" - /*0x1B*/ u8 unk1B; + u8 jamSafetyCount; + u8 effectStringId; // status action? + u8 effectStringId2; + bool8 repeatedMove:1; + bool8 unused2:1; + bool8 repeatedPrevMove:1; // never read + bool8 unk15_3:1; + bool8 hasJudgesAttention:1; + bool8 judgesAttentionWasRemoved:1; + bool8 usedComboMove:1; + bool8 completedCombo; + u8 comboAppealBonus; + u8 repeatJam; + u8 nextTurnOrder; // turn position + u8 attentionLevel; // How much the Pokemon "stood out" + u8 contestantAnimTarget; }; -struct UnknownContestStruct7 +struct ContestAppealMoveResults { u8 turnOrder[CONTESTANT_COUNT]; s16 jam; @@ -348,9 +228,9 @@ struct ContestAIInfo /*0x00*/ u8 aiState; /*0x02*/ u16 nextMove; /*0x04*/ u8 nextMoveIndex; - /*0x05*/ u8 unk5[4]; + /*0x05*/ u8 moveScores[MAX_MON_MOVES]; /*0x09*/ u8 aiAction; - /*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here + /*0x0A*/ u8 filler[6]; /*0x10*/ u8 currentAICheck; /*0x14*/ u32 aiChecks; /*0x18*/ s16 scriptResult; @@ -360,85 +240,85 @@ struct ContestAIInfo /*0x41*/ u8 contestantId; }; -struct UnknownContestStruct5 +struct ContestExcitement { - s8 bits_0; // current move excitement? - u8 excitementFrozen:1; - u8 excitementFreezer:3; - s8 unk2; + s8 moveExcitement; + u8 frozen:1; + u8 freezer:3; + s8 excitementAppealBonus; }; -struct UnknownContestStruct4 +struct ContestGraphicsState { - u8 unk0; // sprite ID - u8 unk1; // sprite ID - u8 unk2_0:1; - u8 unk2_1:1; - u8 unk2_2:1; + u8 sliderHeartSpriteId; + u8 nextTurnSpriteId; + bool8 sliderUpdating:1; + bool8 boxBlinking:1; + bool8 updatingAppealHearts:1; }; -struct UnknownContestStruct6 +struct ContestFinalStandings { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; + s32 totalPoints; + s32 round1Points; + s32 random; + s32 contestant; }; -struct ContestResourcesField1C +struct ContestTV { - u16 unk0[5]; - s16 unkA; - u8 unkC; - u8 unkD; - u8 unkE_1:1; - u8 unkE_2:1; + u16 appeals[CONTEST_NUM_APPEALS]; + s16 move; + u8 winnerFlags; + u8 loserFlags; + bool8 madeAppeal:1; + bool8 madeExcitingAppeal:1; }; -struct ContestResourcesField20 +struct ContestUnused { - u8 filler_00[0x0C]; + u8 filler[12]; }; struct ContestResources { struct Contest *contest; struct ContestantStatus *status; - struct UnknownContestStruct7 *field_8; + struct ContestAppealMoveResults *appealResults; struct ContestAIInfo *aiData; - struct UnknownContestStruct5 *field_10; - struct UnknownContestStruct4 *field_14; - struct ContestStruct_field_18 *field_18; - struct ContestResourcesField1C * field_1c; - struct ContestResourcesField20 * field_20; + struct ContestExcitement *excitement; + struct ContestGraphicsState *gfxState; + struct ContestMoveAnimData *moveAnim; + struct ContestTV *tv; + struct ContestUnused * unused; u8 * contestBgTilemaps[CONTESTANT_COUNT]; - void * field_34; - void * field_38; + void * boxBlinkTiles1; + void * boxBlinkTiles2; void * field_3c; }; #define eContest (*gContestResources->contest) #define eContestantStatus (gContestResources->status) -#define eContestResources8 (*gContestResources->field_8) +#define eContestAppealResults (*gContestResources->appealResults) #define eContestAI (*gContestResources->aiData) -#define eContestResources10 (*gContestResources->field_10) -#define eContestResources14 (*gContestResources->field_14) -#define eUnzippedContestAudienceGfx (gHeap + 0x18000) -#define eUnknownHeap19000 (gHeap + 0x19000) +#define eContestExcitement (*gContestResources->excitement) +#define eContestGfxState (gContestResources->gfxState) +#define eUnzippedContestAudience_Gfx (gHeap + 0x18000) +#define eContestAudienceFrame2_Gfx (gHeap + 0x19000) #define eContestDebugMode (gHeap[0x1a000]) #define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004)) extern struct ContestPokemon gContestMons[CONTESTANT_COUNT]; -extern s16 gContestMonConditions[CONTESTANT_COUNT]; +extern s16 gContestMonRound1Points[CONTESTANT_COUNT]; extern s16 gContestMonTotalPoints[CONTESTANT_COUNT]; -extern s16 gUnknown_02039F10[CONTESTANT_COUNT]; +extern s16 gContestMonAppealPointTotals[CONTESTANT_COUNT]; extern s16 gContestMonRound2Points[CONTESTANT_COUNT]; extern u8 gContestFinalStandings[CONTESTANT_COUNT]; extern u8 gContestMonPartyIndex; extern u8 gContestPlayerMonIndex; extern u8 gContestantTurnOrder[CONTESTANT_COUNT]; extern u8 gLinkContestFlags; -extern u8 gUnknown_02039F2B; +extern u8 gContestLinkLeaderIndex; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; extern u8 gNumLinkContestPlayers; @@ -454,11 +334,11 @@ extern u32 gContestRngValue; void ResetLinkContestBoolean(void); void LoadContestBgAfterMoveAnim(void); void CB2_StartContest(void); -void sub_80DA8C8(u8 partyIndex); -void sub_80DAB8C(u8 contestType, u8 rank); -void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); +void CreateContestMonFromParty(u8 partyIndex); +void SetContestants(u8 contestType, u8 rank); +void SetLinkAIContestants(u8 contestType, u8 rank, bool32 isPostgame); u8 GetContestEntryEligibility(struct Pokemon *pkmn); -void sub_80DB09C(u8 contestCategory); +void CalculateRound1Points(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); bool8 Contest_IsMonsTurnDisabled(u8 a); void SaveLinkContestResults(void); @@ -468,24 +348,12 @@ void SetContestantEffectStringID2(u8 a, u8 b); void SetStartledString(u8 contestant, u8 jam); void MakeContestantNervous(u8 p); s8 Contest_GetMoveExcitement(u16 move); -bool8 sub_80DE1E8(u8 a); +bool8 IsContestantAllowedToCombo(u8 contestant); void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId); void ResetContestLinkResults(void); bool8 sub_80DEDA8(u8 a); u8 sub_80DEFA8(u8 a, u8 b); void ClearContestWinnerPicsInContestHall(void); -void sub_80DFA08(struct ContestPokemon *mon, s32 language); - -// contest link -void sub_81D9DE4(u8 taskId); -void sub_80FCF40(u8); -void sub_80FCFD0(u8); -void sub_80F8714(u8); -bool32 sub_80FC670(s16 *); -bool32 sub_80FC4F4(void *, u16); -bool8 sub_80FC55C(void); -bool8 sub_80FC530(u8); -u8 sub_80F86E0(u8 *); -void sub_80FC9F8(u8 taskId); +void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language); #endif //GUARD_CONTEST_H diff --git a/include/contest_link.h b/include/contest_link.h index 4344d55ad..cd2682524 100644 --- a/include/contest_link.h +++ b/include/contest_link.h @@ -1,13 +1,23 @@ #ifndef GUARD_CONTEST_LINK_H #define GUARD_CONTEST_LINK_H -void sub_80FCC88(u8); -void sub_80FCC88(u8); -void sub_80FCACC(u8); -void sub_80FC580(u8); -void sub_80FC6BC(u8); -void sub_80FC804(u8); -void sub_80FCE48(u8); -void sub_80FC894(u8); +void Task_LinkContest_CommunicateAppealsState(u8); +void Task_LinkContest_CommunicateFinalStandings(u8); +void Task_LinkContest_Init(u8); +void Task_LinkContest_CommunicateMonsRS(u8); +void Task_LinkContest_CommunicateRngRS(u8); +void Task_LinkContest_CommunicateLeaderIdsRS(u8); +void Task_LinkContest_CommunicateCategoryRS(u8); +void Task_LinkContest_CommunicateMonIdxs(u8); +void Task_LinkContest_StartCommunicationEm(u8); +void Task_LinkContest_CommunicateRound1Points(u8); +void Task_LinkContest_CommunicateTurnOrder(u8); +void Task_LinkContest_FinalizeConnection(u8); +void Task_LinkContest_CommunicateMoveSelections(u8); +bool32 LinkContest_TryLinkStandby(s16 *); +bool32 LinkContest_SendBlock(void *, u16); +bool8 LinkContest_GetBlockReceivedFromAllPlayers(void); +bool8 LinkContest_GetBlockReceived(u8); +u8 LinkContest_GetLeaderIndex(u8 *); #endif //GUARD_CONTEST_LINK_H diff --git a/include/contest_util.h b/include/contest_util.h index c0d8df031..76f9ae522 100644 --- a/include/contest_util.h +++ b/include/contest_util.h @@ -7,6 +7,8 @@ void StartContest(void); void BufferContestantMonSpecies(void); void ShowContestResults(void); void ContestLinkTransfer(u8); -void sub_80FC998(u8 taskId); +void ShowContestWinnerPainting(void); +u16 GetContestRand(void); +u8 CountPlayerContestPaintings(void); #endif // GUARD_CONTEST_UTIL_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 3c4380108..851559724 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -294,39 +294,39 @@ extern const u8 gTVSafariFanClubText07[]; extern const u8 gTVSafariFanClubText08[]; extern const u8 gTVSafariFanClubText09[]; extern const u8 gTVSafariFanClubText10[]; -extern const u8 gTVContestLiveUpdatesText00[]; -extern const u8 gTVContestLiveUpdatesText01[]; -extern const u8 gTVContestLiveUpdatesText02[]; -extern const u8 gTVContestLiveUpdatesText03[]; -extern const u8 gTVContestLiveUpdatesText04[]; -extern const u8 gTVContestLiveUpdatesText05[]; -extern const u8 gTVContestLiveUpdatesText06[]; -extern const u8 gTVContestLiveUpdatesText07[]; -extern const u8 gTVContestLiveUpdatesText08[]; -extern const u8 gTVContestLiveUpdatesText09[]; -extern const u8 gTVContestLiveUpdatesText10[]; -extern const u8 gTVContestLiveUpdatesText11[]; -extern const u8 gTVContestLiveUpdatesText12[]; -extern const u8 gTVContestLiveUpdatesText13[]; -extern const u8 gTVContestLiveUpdatesText14[]; -extern const u8 gTVContestLiveUpdatesText15[]; -extern const u8 gTVContestLiveUpdatesText16[]; -extern const u8 gTVContestLiveUpdatesText17[]; -extern const u8 gTVContestLiveUpdatesText18[]; -extern const u8 gTVContestLiveUpdatesText19[]; -extern const u8 gTVContestLiveUpdatesText20[]; -extern const u8 gTVContestLiveUpdatesText21[]; -extern const u8 gTVContestLiveUpdatesText22[]; -extern const u8 gTVContestLiveUpdatesText23[]; -extern const u8 gTVContestLiveUpdatesText24[]; -extern const u8 gTVContestLiveUpdatesText25[]; -extern const u8 gTVContestLiveUpdatesText26[]; -extern const u8 gTVContestLiveUpdatesText27[]; -extern const u8 gTVContestLiveUpdatesText28[]; -extern const u8 gTVContestLiveUpdatesText29[]; -extern const u8 gTVContestLiveUpdatesText30[]; -extern const u8 gTVContestLiveUpdatesText31[]; -extern const u8 gTVContestLiveUpdatesText32[]; +extern const u8 ContestLiveUpdates_Text_Intro[]; +extern const u8 ContestLiveUpdates_Text_WonBothRounds[]; +extern const u8 ContestLiveUpdates_Text_BetterRound2[]; +extern const u8 ContestLiveUpdates_Text_EqualRounds[]; +extern const u8 ContestLiveUpdates_Text_BetterRound1[]; +extern const u8 ContestLiveUpdates_Text_GotNervous[]; +extern const u8 ContestLiveUpdates_Text_StartledFoes[]; +extern const u8 ContestLiveUpdates_Text_UsedCombo[]; +extern const u8 ContestLiveUpdates_Text_ExcitingAppeal[]; +extern const u8 ContestLiveUpdates_Text_WasCool[]; +extern const u8 ContestLiveUpdates_Text_WasBeautiful[]; +extern const u8 ContestLiveUpdates_Text_WasCute[]; +extern const u8 ContestLiveUpdates_Text_WasSmart[]; +extern const u8 ContestLiveUpdates_Text_WasTough[]; +extern const u8 ContestLiveUpdates_Text_VeryExcitingAppeal[]; +extern const u8 ContestLiveUpdates_Text_VeryCool[]; +extern const u8 ContestLiveUpdates_Text_VeryBeautiful[]; +extern const u8 ContestLiveUpdates_Text_VeryCute[]; +extern const u8 ContestLiveUpdates_Text_VerySmart[]; +extern const u8 ContestLiveUpdates_Text_VeryTough[]; +extern const u8 ContestLiveUpdates_Text_TookBreak[]; +extern const u8 ContestLiveUpdates_Text_GotStartled[]; +extern const u8 ContestLiveUpdates_Text_MoveWonderful[]; +extern const u8 ContestLiveUpdates_Text_TalkAboutAnotherMon[]; +extern const u8 ContestLiveUpdates_Text_FailedToAppeal[]; +extern const u8 ContestLiveUpdates_Text_LastInBothRounds[]; +extern const u8 ContestLiveUpdates_Text_NotExcitingEnough[]; +extern const u8 ContestLiveUpdates_Text_LostAfterWinningRound1[]; +extern const u8 ContestLiveUpdates_Text_NeverExciting[]; +extern const u8 ContestLiveUpdates_Text_LostBySmallMargin[]; +extern const u8 ContestLiveUpdates_Text_RepeatedAppeals[]; +extern const u8 ContestLiveUpdates_Text_ValiantEffortButLost[]; +extern const u8 ContestLiveUpdates_Text_Outro[]; extern const u8 gTVPokemonBattleUpdateText00[]; extern const u8 gTVPokemonBattleUpdateText01[]; extern const u8 gTVPokemonBattleUpdateText02[]; diff --git a/include/global.h b/include/global.h index 478c9f69a..7de8d1eb3 100644 --- a/include/global.h +++ b/include/global.h @@ -480,7 +480,7 @@ struct SaveBlock2 /*0x20C*/ struct BerryPickingResults berryPick; /*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing. /*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing. - /*0x624*/ u16 contestLinkResults[5][4]; // 4 positions for 5 categories. + /*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT]; /*0x64C*/ struct BattleFrontier frontier; }; // sizeof=0xF2C @@ -489,7 +489,7 @@ extern struct SaveBlock2 *gSaveBlock2Ptr; struct SecretBaseParty { u32 personality[PARTY_SIZE]; - u16 moves[PARTY_SIZE * 4]; + u16 moves[PARTY_SIZE * MAX_MON_MOVES]; u16 species[PARTY_SIZE]; u16 heldItems[PARTY_SIZE]; u8 levels[PARTY_SIZE]; diff --git a/include/global.tv.h b/include/global.tv.h index ba1c3c37e..b211052e0 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -124,18 +124,18 @@ typedef union // size = 0x24 struct { /*0x00*/ u8 kind; /*0x01*/ bool8 active; - /*0x02*/ u16 winningSpecies; - /*0x04*/ u8 winningTrainerName[8]; - /*0x0C*/ u8 appealFlags2; - /*0x0D*/ u8 round1Rank; - /*0x0e*/ u8 round2Rank; - /*0x0f*/ u8 appealFlags1; + /*0x02*/ u16 losingSpecies; + /*0x04*/ u8 losingTrainerName[8]; + /*0x0C*/ u8 loserAppealFlag; + /*0x0D*/ u8 round1Placing; + /*0x0e*/ u8 round2Placing; + /*0x0f*/ u8 winnerAppealFlag; /*0x10*/ u16 move; - /*0x12*/ u16 species; - /*0x14*/ u8 playerName[8]; + /*0x12*/ u16 winningSpecies; + /*0x14*/ u8 winningTrainerName[8]; /*0x1C*/ u8 category; - /*0x1D*/ u8 language; - /*0x1E*/ u8 winningTrainerLanguage; + /*0x1D*/ u8 winningTrainerLanguage; + /*0x1E*/ u8 losingTrainerLanguage; } contestLiveUpdates; // TVSHOW_3_CHEERS_FOR_POKEBLOCKS diff --git a/include/graphics.h b/include/graphics.h index 5dcf464eb..4c98bee47 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4786,10 +4786,10 @@ extern const u32 gOldContestGfx[]; extern const u32 gOldContestPalette[]; extern const u32 gUnknown_08C17170[]; extern const u32 gUnknown_08C17980[]; -extern const u32 gTiles_8C19450[]; +extern const u32 gContestSliderHeart_Gfx[]; extern const u32 gContestNextTurnGfx[]; extern const u16 gContestPal[]; -extern const u32 gUnknown_08C19168[]; +extern const u32 gContestFaces_Gfx[]; extern const u32 gContestApplauseGfx[]; extern const u32 gContestJudgeGfx[]; extern const u32 gContestJudgeSymbolsGfx[]; diff --git a/include/link.h b/include/link.h index 25e62ff1e..de10bb8dc 100644 --- a/include/link.h +++ b/include/link.h @@ -49,11 +49,11 @@ (((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) #define LINKCMD_SEND_LINK_TYPE 0x2222 -#define LINKCMD_0x2FFE 0x2FFE +#define LINKCMD_READY_EXIT_STANDBY 0x2FFE #define LINKCMD_SEND_HELD_KEYS 0x4444 #define LINKCMD_0x5555 0x5555 #define LINKCMD_0x5566 0x5566 -#define LINKCMD_0x5FFF 0x5FFF +#define LINKCMD_READY_CLOSE_LINK 0x5FFF #define LINKCMD_0x6666 0x6666 #define LINKCMD_0x7777 0x7777 #define LINKCMD_CONT_BLOCK 0x8888 @@ -64,7 +64,7 @@ #define LINKCMD_INIT_BLOCK 0xBBBB #define LINKCMD_READY_CANCEL_TRADE 0xBBCC #define LINKCMD_SEND_HELD_KEYS_2 0xCAFE -#define LINKCMD_0xCCCC 0xCCCC +#define LINKCMD_SEND_BLOCK_REQ 0xCCCC #define LINKCMD_START_TRADE 0xCCDD #define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA #define LINKCMD_SET_MONS_TO_TRADE 0xDDDD @@ -273,11 +273,11 @@ bool32 InUnionRoom(void); void LoadWirelessStatusIndicatorSpriteGfx(void); bool8 IsLinkTaskFinished(void); void CreateWirelessStatusIndicatorSprite(u8, u8); -void sub_800ADF8(void); +void SetLinkStandbyCallback(void); void SetWirelessCommType1(void); void CheckShouldAdvanceLinkState(void); u8 IsLinkMaster(void); -void sub_800AC34(void); +void SetCloseLinkCallback(void); bool8 HandleLinkConnection(void); void SetLinkDebugValues(u32 seed, u32 flags); void sub_800A418(void); @@ -305,9 +305,9 @@ extern u16 gLinkHeldKeys; extern u32 gLinkStatus; extern u8 gUnknown_030030E4; extern u8 gUnknown_030030E8; -extern u8 gUnknown_030030EC[MAX_LINK_PLAYERS]; -extern u8 gUnknown_030030F0[MAX_LINK_PLAYERS]; -extern u16 gUnknown_030030F4; +extern bool8 gReadyToExitStandby[MAX_LINK_PLAYERS]; +extern bool8 gReadyToCloseLink[MAX_LINK_PLAYERS]; +extern u16 gReadyCloseLinkType; extern u8 gSuppressLinkErrorMessage; extern u8 gWirelessCommType; extern bool8 gSavedLinkPlayerCount; @@ -334,15 +334,15 @@ bool32 LinkDummy_Return2(void); void SetLocalLinkPlayerId(u8); u8 GetSavedPlayerCount(void); void sub_8009FAC(void); -bool8 sub_800A4D8(u8 a0); +bool8 SendBlockRequest(u8 type); u8 GetLinkPlayerCountAsBitFlags(void); u8 sub_800A0C8(s32, s32); u8 GetSavedLinkPlayerCountAsBitFlags(void); -void sub_800AD10(void); +void SetCloseLinkCallbackHandleJP(void); void CheckLinkPlayersMatchSaved(void); void StartSendingKeysToLink(void); bool8 DoesLinkPlayerCountMatchSaved(void); -void sub_800ABF4(u16 a0); +void SetCloseLinkCallbackAndType(u16 type); bool32 IsSendingKeysToLink(void); u32 GetLinkRecvQueueLength(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index eede41d60..4d00039eb 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -8,11 +8,11 @@ #define RFU_COMMAND_0x4400 0x4400 #define RFU_COMMAND_0x8800 0x8800 #define RFU_COMMAND_0x8900 0x8900 -#define RFU_COMMAND_0xA100 0xA100 +#define RFU_COMMAND_SEND_BLOCK_REQ 0xA100 #define RFU_COMMAND_0x7700 0x7700 #define RFU_COMMAND_0x7800 0x7800 -#define RFU_COMMAND_0x6600 0x6600 -#define RFU_COMMAND_0x5F00 0x5F00 +#define RFU_COMMAND_READY_EXIT_STANDBY 0x6600 +#define RFU_COMMAND_READY_CLOSE_LINK 0x5F00 #define RFU_COMMAND_0x2F00 0x2F00 #define RFU_COMMAND_0xBE00 0xBE00 #define RFU_COMMAND_0xEE00 0xEE00 @@ -125,7 +125,7 @@ struct GFRfuManager /* 0x012 */ u16 unk_12; /* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14]; /* 0x04c */ u8 unk_4c[14]; - /* 0x05a */ u8 unk_5a; + /* 0x05a */ u8 blockRequestType; /* 0x05b */ u8 unk_5b; /* 0x05c */ bool8 blockReceived[MAX_RFU_PLAYERS]; /* 0x061 */ bool8 numBlocksReceived[MAX_RFU_PLAYERS]; @@ -134,14 +134,14 @@ struct GFRfuManager /* 0x068 */ u8 filler_68[4]; /* 0x06c */ struct RfuBlockSend sendBlock; /* 0x080 */ struct RfuBlockSend recvBlock[MAX_RFU_PLAYERS]; - /* 0x0e4 */ u8 unk_e4[5]; - /* 0x0e9 */ u8 unk_e9[5]; + /* 0x0e4 */ bool8 readyCloseLink[MAX_RFU_PLAYERS]; + /* 0x0e9 */ bool8 readyExitStandby[MAX_RFU_PLAYERS]; /* 0x0ee */ vu8 errorState; /* 0x0ef */ bool8 isShuttingDown; /* 0x0f0 */ u8 linkLossRecoveryState; /* 0x0f1 */ u8 status; /* 0x0f2 */ u16 unk_f2[6]; - /* 0x0fe */ u16 unk_fe; + /* 0x0fe */ u16 resendExitStandbyTimer; /* 0x100 */ u16 unk_100; /* 0x102 */ u8 unk_102; /* 0x103 */ u8 filler_103[0x10A - 0x103]; @@ -203,11 +203,11 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size); void ClearLinkRfuCallback(void); u8 Rfu_GetLinkPlayerCount(void); u8 Rfu_GetMultiplayerId(void); -bool8 sub_8010100(u8 a0); +bool8 Rfu_SendBlockRequest(u8 type); bool8 IsLinkRfuTaskFinished(void); bool8 Rfu_IsMaster(void); -void task_add_05_task_del_08FA224_when_no_RfuFunc(void); -void sub_8010434(void); +void Rfu_SetCloseLinkCallback(void); +void Rfu_SetLinkStandbyCallback(void); void ResetLinkRfuGFLayer(void); void UpdateWirelessStatusIndicatorSprite(void); void InitRFU(void); diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h deleted file mode 100644 index 8dd7ed0c0..000000000 --- a/include/script_pokemon_80F8.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef GUARD_SCRIPTPOKE80F8_H -#define GUARD_SCRIPTPOKE80F8_H - -void ShowContestWinner(void); -u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); -u8 ScriptGiveEgg(u16); -void CreateScriptedWildMon(u16, u8, u16); -void ScriptSetMonMoveSlot(u8, u16, u8); - -#endif diff --git a/include/script_pokemon_util.h b/include/script_pokemon_util.h new file mode 100644 index 000000000..120c28a63 --- /dev/null +++ b/include/script_pokemon_util.h @@ -0,0 +1,11 @@ +#ifndef GUARD_SCRIPT_POKEMON_UTIL +#define GUARD_SCRIPT_POKEMON_UTIL + +u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); +u8 ScriptGiveEgg(u16); +void CreateScriptedWildMon(u16, u8, u16); +void ScriptSetMonMoveSlot(u8, u16, u8); +void ReducePlayerPartyToSelectedMons(void); +void HealPlayerParty(void); + +#endif // GUARD_SCRIPT_POKEMON_UTIL diff --git a/include/script_pokemon_util_80F87D8.h b/include/script_pokemon_util_80F87D8.h deleted file mode 100644 index 7c246b745..000000000 --- a/include/script_pokemon_util_80F87D8.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H -#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H - -u16 GetContestRand(void); -void ReducePlayerPartyToSelectedMons(void); -void HealPlayerParty(void); -u8 CountPlayerContestPaintings(void); - -#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H diff --git a/include/tv.h b/include/tv.h index e2c50cad2..4dc14143c 100644 --- a/include/tv.h +++ b/include/tv.h @@ -59,11 +59,11 @@ void SaveRecordedItemPurchasesForTVShow(void); bool8 ShouldAirFrontierTVShow(void); void sub_80EE8C8(u16 winStreak, u8 facilityAndMode); void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace); -void ContestLiveUpdates_BeforeInterview_1(u8 a0); -void ContestLiveUpdates_BeforeInterview_2(u8 a0); -void ContestLiveUpdates_BeforeInterview_3(u8 a0); -void ContestLiveUpdates_BeforeInterview_4(u16 a0); -void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1); +void ContestLiveUpdates_Init(u8 round1Placing); +void ContestLiveUpdates_SetRound2Placing(u8 round2Placing); +void ContestLiveUpdates_SetWinnerAppealFlag(u8 flag); +void ContestLiveUpdates_SetWinnerMoveUsed(u16 move); +void ContestLiveUpdates_SetLoserData(u8 flag, u8 loser); void ResetGabbyAndTy(void); #endif //GUARD_TV_H |