From 845307b3a6f5d1cb65669e8a971bee22ae6419d0 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Mon, 1 Apr 2019 22:09:14 -0400 Subject: Rename contest AI stuff --- include/contest.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index a0b1a6b34..5178d657b 100644 --- a/include/contest.h +++ b/include/contest.h @@ -216,7 +216,7 @@ struct ContestPokemon /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; /*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1]; /*0x15*/ u8 trainerGfxId; - /*0x18*/ u32 flags; + /*0x18*/ u32 aiChecks; /*0x1C*/ u8 whichRank:2; // 0x1 0x2 u8 aiPool_Cool:1; // 0x4 u8 aiPool_Beauty:1; // 0x8 @@ -352,13 +352,13 @@ struct UnknownContestStruct7 struct ContestAIInfo { /*0x00*/ u8 aiState; - /*0x02*/ u16 unk2; - /*0x04*/ u8 unk4; + /*0x02*/ u16 nextMove; + /*0x04*/ u8 nextMoveIndex; /*0x05*/ u8 unk5[4]; /*0x09*/ u8 aiAction; /*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here - /*0x10*/ u8 unk10; - /*0x14*/ u32 flags; + /*0x10*/ u8 currentAICheck; + /*0x14*/ u32 aiChecks; /*0x18*/ s16 scriptResult; /*0x1A*/ s16 scriptArr[3]; /*0x20*/ const u8 *stack[8]; -- cgit v1.2.3 From c3200c0beb50b17311da7aa4402f6a682af1da01 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Tue, 2 Apr 2019 00:35:57 -0400 Subject: Cleanup some of gContestResources --- include/contest.h | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index 5178d657b..be4bea489 100644 --- a/include/contest.h +++ b/include/contest.h @@ -235,10 +235,8 @@ struct ContestPokemon /*0x3C*/ u32 otId; // otId }; -struct Shared18000 +struct Shared1A004 { - /*0x18000*/ u8 unk18000; - /*0x18001*/ u8 filler18001[3]; /*0x18004*/ u16 unk18004[16][16]; /*0x18204*/ u16 unk18204[0x200]; /*0x18604*/ u16 unk18604[0x200]; @@ -294,11 +292,11 @@ struct ContestantStatus { /*0x00*/ s16 appeal1; // move appeal? /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe? - /*0x04*/ s16 unk4; + /*0x04*/ s16 pointTotal; /*0x06*/ u16 currMove; /*0x08*/ u16 prevMove; /*0x0A*/ u8 moveCategory; - /*0x0B*/ u8 unkB_0:2; + /*0x0B*/ u8 ranking:2; u8 unkB_2:2; u8 moveRepeatCount:3; u8 noMoreTurns:1; // used a one-time move? @@ -408,7 +406,7 @@ struct ContestResourcesField20 struct ContestResources { - struct Contest *field_0; + struct Contest *contest; struct ContestantStatus *field_4; struct UnknownContestStruct7 *field_8; struct ContestAIInfo *field_C; @@ -423,15 +421,16 @@ struct ContestResources void * field_3c; }; -#define sContest (*gContestResources->field_0) -#define sContestantStatus (gContestResources->field_4) -#define shared192D0 (*gContestResources->field_8) -#define eContestAI (gContestResources->field_C) -#define shared19328 (*gContestResources->field_10) -#define shared19338 (*gContestResources->field_14) -#define shared15800 (gHeap + 0x18000) -#define shared16800 (gHeap + 0x19000) -#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000)) +#define eContest (*gContestResources->contest) +#define eContestantStatus (gContestResources->field_4) +#define eContestResources8 (*gContestResources->field_8) +#define eContestAI (*gContestResources->field_C) +#define eContestResources10 (*gContestResources->field_10) +#define eContestResources14 (*gContestResources->field_14) +#define eUnknownHeap18000 (gHeap + 0x18000) +#define eUnknownHeap19000 (gHeap + 0x19000) +#define eUnknownHeap1A000 (gHeap[0x1a000]) +#define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004)) extern struct ContestPokemon gContestMons[4]; extern s16 gContestMonConditions[4]; -- cgit v1.2.3 From 99e8e8e53f1b23cf4fae3223af87c54feddfe1a2 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Tue, 2 Apr 2019 20:00:05 -0400 Subject: More cleanup, document contestant sorting --- include/contest.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index be4bea489..c62749770 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H +#define CONTESTANT_COUNT 4 + enum { CONTEST_CATEGORY_COOL, @@ -258,7 +260,7 @@ struct Contest { /*0x0*/ u8 playerMoveChoice; /*0x1*/ u8 turnNumber; - /*0x2*/ u8 unk19206[4]; // seems to only be used by an unref function + /*0x2*/ u8 unused2[CONTESTANT_COUNT]; /*0x6*/ u16 unk1920A_0:1; // Task active flags? u16 unk1920A_1:1; u16 unk1920A_2:1; @@ -279,7 +281,7 @@ struct Contest /*0x11*/ u8 unk19215; /*0x12*/ u8 unk19216; // sprite ID /*0x13*/ s8 applauseLevel; - /*0x19218*/ u8 unk19218[4]; + /*0x19218*/ u8 unk19218[CONTESTANT_COUNT]; /*0x1921C*/ u32 unk1921C; // saved RNG value? u16 unk19220[5][4]; // move history? u8 unk19248[5][4]; // excitement history @@ -339,11 +341,11 @@ struct ContestantStatus struct UnknownContestStruct7 { - u8 turnOrder[4]; + u8 turnOrder[CONTESTANT_COUNT]; s16 jam; s16 jam2; u8 jamQueue[5]; - u8 unnervedPokes[4]; + u8 unnervedPokes[CONTESTANT_COUNT]; u8 contestant; }; @@ -407,9 +409,9 @@ struct ContestResourcesField20 struct ContestResources { struct Contest *contest; - struct ContestantStatus *field_4; + struct ContestantStatus *status; struct UnknownContestStruct7 *field_8; - struct ContestAIInfo *field_C; + struct ContestAIInfo *aiData; struct UnknownContestStruct5 *field_10; struct UnknownContestStruct4 *field_14; struct ContestStruct_field_18 *field_18; @@ -422,9 +424,9 @@ struct ContestResources }; #define eContest (*gContestResources->contest) -#define eContestantStatus (gContestResources->field_4) +#define eContestantStatus (gContestResources->status) #define eContestResources8 (*gContestResources->field_8) -#define eContestAI (*gContestResources->field_C) +#define eContestAI (*gContestResources->aiData) #define eContestResources10 (*gContestResources->field_10) #define eContestResources14 (*gContestResources->field_14) #define eUnknownHeap18000 (gHeap + 0x18000) @@ -440,7 +442,7 @@ extern s16 gUnknown_02039F18[4]; extern u8 gContestFinalStandings[4]; extern u8 gContestMonPartyIndex; extern u8 gContestPlayerMonIndex; -extern u8 gUnknown_02039F26[4]; +extern u8 gContestantTurnOrder[4]; extern u8 gIsLinkContest; extern u8 gUnknown_02039F2B; extern u16 gSpecialVar_ContestCategory; @@ -467,7 +469,7 @@ void sub_80DB09C(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); bool8 Contest_IsMonsTurnDisabled(u8 a); void sub_80DBED4(void); -void sub_80DCE58(u8 a); +void SortContestants(bool8 a); void SetContestantEffectStringID(u8 a, u8 b); void SetContestantEffectStringID2(u8 a, u8 b); void SetStartledString(u8 contestant, u8 jam); -- cgit v1.2.3 From 8f13e991d2b8245556a485ff014fbcba3813ca34 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Tue, 2 Apr 2019 21:51:21 -0400 Subject: Found a debug system for pokemon contests --- include/contest.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index c62749770..9b4ecc10a 100644 --- a/include/contest.h +++ b/include/contest.h @@ -3,6 +3,14 @@ #define CONTESTANT_COUNT 4 +#define CONTEST_DEBUG_MODE_OFF 0 +// Prints the totalPoints value for each contestant. +#define CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL 1 +// Prints the ContestResourcesField1C::unk_C value as a bitstring for each contestant. +#define CONTEST_DEBUG_MODE_PRINT_UNK_C 2 +// Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant. +#define CONTEST_DEBUG_MODE_PRINT_UNK_D 3 + enum { CONTEST_CATEGORY_COOL, @@ -281,7 +289,7 @@ struct Contest /*0x11*/ u8 unk19215; /*0x12*/ u8 unk19216; // sprite ID /*0x13*/ s8 applauseLevel; - /*0x19218*/ u8 unk19218[CONTESTANT_COUNT]; + /*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT]; /*0x1921C*/ u32 unk1921C; // saved RNG value? u16 unk19220[5][4]; // move history? u8 unk19248[5][4]; // excitement history @@ -417,7 +425,7 @@ struct ContestResources struct ContestStruct_field_18 *field_18; struct ContestResourcesField1C * field_1c; struct ContestResourcesField20 * field_20; - u8 * field_24[4]; + u8 * ContestantInfoTilemaps[CONTESTANT_COUNT]; void * field_34; void * field_38; void * field_3c; @@ -431,7 +439,7 @@ struct ContestResources #define eContestResources14 (*gContestResources->field_14) #define eUnknownHeap18000 (gHeap + 0x18000) #define eUnknownHeap19000 (gHeap + 0x19000) -#define eUnknownHeap1A000 (gHeap[0x1a000]) +#define eContestDebugMode (gHeap[0x1a000]) #define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004)) extern struct ContestPokemon gContestMons[4]; @@ -460,7 +468,7 @@ extern u32 gContestRngValue; // contest.c void ResetLinkContestBoolean(void); void LoadContestBgAfterMoveAnim(void); -void sub_80D7B24(void); +void CB2_ContestMain(void); void sub_80DA8C8(u8 partyIndex); void sub_80DAB8C(u8 contestType, u8 rank); void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame); -- cgit v1.2.3 From f82bdb332af669681fdc7edda689753c97ebeede Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Wed, 3 Apr 2019 03:00:06 -0400 Subject: Document applause meter code --- include/contest.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index 9b4ecc10a..c4e752072 100644 --- a/include/contest.h +++ b/include/contest.h @@ -1,7 +1,10 @@ #ifndef GUARD_CONTEST_H #define GUARD_CONTEST_H +#include "palette.h" + #define CONTESTANT_COUNT 4 +#define APPLAUSE_METER_SIZE 5 #define CONTEST_DEBUG_MODE_OFF 0 // Prints the totalPoints value for each contestant. @@ -247,10 +250,10 @@ struct ContestPokemon struct Shared1A004 { - /*0x18004*/ u16 unk18004[16][16]; - /*0x18204*/ u16 unk18204[0x200]; - /*0x18604*/ u16 unk18604[0x200]; - /*0x18A04*/ u8 unk18A04[0x800]; + u16 unk18004[16][16]; // Saved palette data before a move happens? + u16 unk18204[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferUnfaded + u16 unk18604[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferFaded + u8 savedJunk[0x800]; }; struct ContestStruct_field_18 @@ -274,8 +277,8 @@ struct Contest u16 unk1920A_2:1; u16 unk1920A_3:1; u16 unk1920A_4:1; - u16 unk1920A_5:1; - u16 unk1920A_6:1; + u16 isShowingApplauseMeter:1; + u16 applauseMeterIsMoving:1; u16 unk1920A_7:1; /*0x7*/ u16 unk1920B_0:1; u16 unk1920B_1:1; -- cgit v1.2.3 From 3a2ea401882d9ce47709d048f57a6d18f890b5f4 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Wed, 3 Apr 2019 17:24:32 -0400 Subject: Rename and document more contest setup functions Also properly label the link contest flags variable, and label the contest window ID's. --- include/contest.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index c4e752072..2f986f217 100644 --- a/include/contest.h +++ b/include/contest.h @@ -14,6 +14,10 @@ // Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant. #define CONTEST_DEBUG_MODE_PRINT_UNK_D 3 +#define LINK_CONTEST_FLAG_IS_LINK (1 << 0) +#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) +#define LINK_CONTEST_FLAG_HAS_RS_PLAYER (1 << 2) + enum { CONTEST_CATEGORY_COOL, @@ -250,7 +254,7 @@ struct ContestPokemon struct Shared1A004 { - u16 unk18004[16][16]; // Saved palette data before a move happens? + u16 cachedWindowPalettes[16][16]; // Saved palette data before a move happens? u16 unk18204[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferUnfaded u16 unk18604[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferFaded u8 savedJunk[0x800]; @@ -297,7 +301,7 @@ struct Contest u16 unk19220[5][4]; // move history? u8 unk19248[5][4]; // excitement history u8 applauseMeterSpriteId; // sprite ID - /*0x1925D*/ u8 unk1925D; + /*0x1925D*/ u8 contestSetupState; /*0x1925E*/ u8 unk1925E; }; @@ -428,7 +432,7 @@ struct ContestResources struct ContestStruct_field_18 *field_18; struct ContestResourcesField1C * field_1c; struct ContestResourcesField20 * field_20; - u8 * ContestantInfoTilemaps[CONTESTANT_COUNT]; + u8 * contestBgTilemaps[CONTESTANT_COUNT]; void * field_34; void * field_38; void * field_3c; @@ -440,7 +444,7 @@ struct ContestResources #define eContestAI (*gContestResources->aiData) #define eContestResources10 (*gContestResources->field_10) #define eContestResources14 (*gContestResources->field_14) -#define eUnknownHeap18000 (gHeap + 0x18000) +#define eUnzippedContestAudienceGfx (gHeap + 0x18000) #define eUnknownHeap19000 (gHeap + 0x19000) #define eContestDebugMode (gHeap[0x1a000]) #define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004)) @@ -454,7 +458,7 @@ extern u8 gContestFinalStandings[4]; extern u8 gContestMonPartyIndex; extern u8 gContestPlayerMonIndex; extern u8 gContestantTurnOrder[4]; -extern u8 gIsLinkContest; +extern u8 gLinkContestFlags; extern u8 gUnknown_02039F2B; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; @@ -471,7 +475,7 @@ extern u32 gContestRngValue; // contest.c void ResetLinkContestBoolean(void); void LoadContestBgAfterMoveAnim(void); -void CB2_ContestMain(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); -- cgit v1.2.3 From 3b3b2dd031868f116e09b7bbff7e8b8b6ceb7a9a Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Wed, 3 Apr 2019 20:43:23 -0400 Subject: General cleanup of the second half of contest.c --- include/contest.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index 2f986f217..1fba54885 100644 --- a/include/contest.h +++ b/include/contest.h @@ -5,6 +5,7 @@ #define CONTESTANT_COUNT 4 #define APPLAUSE_METER_SIZE 5 +#define CONTEST_TURN_COUNT 5 #define CONTEST_DEBUG_MODE_OFF 0 // Prints the totalPoints value for each contestant. @@ -298,9 +299,9 @@ struct Contest /*0x13*/ s8 applauseLevel; /*0x19218*/ u8 prevTurnOrder[CONTESTANT_COUNT]; /*0x1921C*/ u32 unk1921C; // saved RNG value? - u16 unk19220[5][4]; // move history? - u8 unk19248[5][4]; // excitement history - u8 applauseMeterSpriteId; // sprite ID + u16 moveHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT]; + u8 excitementHistory[CONTEST_TURN_COUNT][CONTESTANT_COUNT]; + u8 applauseMeterSpriteId; /*0x1925D*/ u8 contestSetupState; /*0x1925E*/ u8 unk1925E; }; @@ -483,7 +484,7 @@ u8 sub_80DAE0C(struct Pokemon *pkmn); void sub_80DB09C(u8 contestCategory); bool8 IsSpeciesNotUnown(u16 species); bool8 Contest_IsMonsTurnDisabled(u8 a); -void sub_80DBED4(void); +void SaveLinkContestResults(void); void SortContestants(bool8 a); void SetContestantEffectStringID(u8 a, u8 b); void SetContestantEffectStringID2(u8 a, u8 b); -- cgit v1.2.3 From 1360b3a477f1107785900cd0c4e73ebf018f058c Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Thu, 4 Apr 2019 17:05:46 -0400 Subject: RGB Constants --- include/contest.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'include/contest.h') diff --git a/include/contest.h b/include/contest.h index 1fba54885..a4e209bcb 100644 --- a/include/contest.h +++ b/include/contest.h @@ -7,13 +7,16 @@ #define APPLAUSE_METER_SIZE 5 #define CONTEST_TURN_COUNT 5 -#define CONTEST_DEBUG_MODE_OFF 0 -// Prints the totalPoints value for each contestant. -#define CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL 1 -// Prints the ContestResourcesField1C::unk_C value as a bitstring for each contestant. -#define CONTEST_DEBUG_MODE_PRINT_UNK_C 2 -// Prints the ContestResourcesField1C::unk_D value as a bitstring for each contestant. -#define CONTEST_DEBUG_MODE_PRINT_UNK_D 3 +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 +}; #define LINK_CONTEST_FLAG_IS_LINK (1 << 0) #define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1) -- cgit v1.2.3