Decompile whole contest

This commit is contained in:
DizzyEggg 2019-01-28 18:13:07 +01:00
parent 26a2a4f9e7
commit ad59811154
6 changed files with 860 additions and 1707 deletions

File diff suppressed because it is too large Load Diff

View File

@ -221,22 +221,6 @@ struct ContestPokemon
/*0x3C*/ u32 otId; // otId
}; // wow
extern struct ContestPokemon gContestMons[4];
extern u8 gContestMonPartyIndex;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F2B;
extern u8 gNumLinkContestPlayers;
extern u8 gHighestRibbonRank;
extern u8 gContestFinalStandings[4];
extern u8 gContestPlayerMonIndex;
extern s16 gUnknown_02039F08[4];
extern s16 gUnknown_02039F10[4];
extern s16 gUnknown_02039F18[4];
extern s16 gContestMonConditions[4];
extern u8 gIsLinkContest;
extern struct ContestWinner gUnknown_02039F3C;
struct Shared18000
{
/*0x18000*/ u8 unk18000;
@ -260,10 +244,10 @@ struct ContestStruct_field_18
struct Contest
{
/*0x19204*/ u8 playerMoveChoice;
/*0x19205*/ u8 turnNumber;
/*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
/*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
/*0x0*/ u8 playerMoveChoice;
/*0x1*/ u8 turnNumber;
/*0x2*/ u8 unk19206[4]; // seems to only be used by an unref function
/*0x6*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
@ -271,18 +255,18 @@ struct Contest
u16 unk1920A_5:1;
u16 unk1920A_6:1;
u16 unk1920A_7:1;
/*0x1920B*/ u16 unk1920B_0:1;
/*0x7*/ u16 unk1920B_0:1;
u16 unk1920B_1:1;
u16 unk1920B_2:1;
/*0x1920C*/ u8 mainTaskId;
/*0x1920D*/ u8 unk1920D[4];
/*0x19211*/ u8 unk19211;
/*0x19212*/ u8 unk19212;
/*0x19213*/ u8 filler19213;
/*0x19214*/ u8 unk19214;
/*0x19215*/ u8 unk19215;
/*0x19216*/ u8 unk19216; // sprite ID
/*0x19217*/ s8 applauseLevel;
/*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 unk19218[4];
/*0x1921C*/ u32 unk1921C; // saved RNG value?
u16 unk19220[5][4]; // move history?
@ -395,7 +379,12 @@ struct UnknownContestStruct6
struct ContestResourcesField1C
{
u8 filler_00[0x40];
u16 unk0[5];
s16 unkA;
u8 unkC;
u8 unkD;
u8 unkE_1:1;
u8 unkE_2:1;
};
struct ContestResourcesField20
@ -420,42 +409,62 @@ struct ContestResources
void * field_3c;
};
extern struct ContestResources *gContestResources;
#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))
extern struct ContestPokemon gContestMons[4];
extern s16 gContestMonConditions[4];
extern s16 gUnknown_02039F08[4];
extern s16 gUnknown_02039F10[4];
extern s16 gUnknown_02039F18[4];
extern u8 gContestFinalStandings[4];
extern u8 gContestMonPartyIndex;
extern u8 gContestPlayerMonIndex;
extern u8 gUnknown_02039F26[4];
extern u8 gIsLinkContest;
extern u8 gUnknown_02039F2B;
extern u16 gSpecialVar_ContestCategory;
extern u16 gSpecialVar_ContestRank;
extern u8 gNumLinkContestPlayers;
extern u8 gHighestRibbonRank;
extern struct ContestResources *gContestResources;
extern u8 sContestBgCopyFlags;
extern struct ContestWinner gUnknown_02039F3C;
extern u32 gContestRngValue;
extern u8 gUnknown_02039F26[4];
bool8 IsSpeciesNotUnown(u16 species);
// contest.c
void ResetLinkContestBoolean(void);
void LoadContestBgAfterMoveAnim(void);
void sub_80D7B24(void);
void sub_80DA8C8(u8 partyIndex);
void sub_80DAB8C(u8 contestType, u8 rank);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
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 sub_80DCE58(u8 a);
void SetContestantEffectStringID(u8 a, u8 b);
void SetContestantEffectStringID2(u8 a, u8 b);
void SetStartledString(u8 contestant, u8 jam);
void MakeContestantNervous(u8 p);
bool8 Contest_IsMonsTurnDisabled(u8 a);
s8 Contest_GetMoveExcitement(u16 move);
bool8 sub_80DE1E8(u8 a);
void SetStartledString(u8 a, u8 b);
s8 Contest_GetMoveExcitement(u16);
u8 sub_80DAE0C(struct Pokemon *);
bool8 sub_80DEDA8(u8);
void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame);
void sub_80DB09C(u8 contestCategory);
void sub_80DCE58(u8);
void sub_80DFA08(struct ContestPokemon *mon, int language);
void sub_80DBED4(void);
u8 sub_80DEFA8(u8, u8);
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);
@ -468,5 +477,4 @@ bool8 sub_80FC55C(void);
bool8 sub_80FC530(u8);
u8 sub_80F86E0(u8 *);
#endif //GUARD_CONTEST_H

View File

@ -13,10 +13,15 @@
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
#define CHAR_DOUBLE_QUOTATION_LEFT 0xB1
#define CHAR_DOUBLE_QUOTATION_RIGHT 0xB2
#define CHAR_SINGLE_QUOTATION_LEFT 0xB3
#define CHAR_SINGLE_QUOTATION_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7

View File

@ -56,5 +56,10 @@ void SaveRecordedItemPurchasesForTVShow(void);
bool8 sub_80EE818(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);
#endif //GUARD_TV_H

View File

@ -136,7 +136,6 @@ SECTIONS {
src/battle_anim_80D51AC.o(.text);
src/item.o(.text);
src/contest.o(.text);
asm/contest.o(.text);
src/shop.o(.text);
src/fldeff_escalator.o(.text);
src/berry.o(.text);

File diff suppressed because it is too large Load Diff