diff options
Diffstat (limited to 'src/engine/trainer_card.c')
-rw-r--r-- | src/engine/trainer_card.c | 97 |
1 files changed, 95 insertions, 2 deletions
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 9d09575c8..daa513145 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -5,6 +5,7 @@ #include "field_effect.h" #include "graphics.h" #include "link.h" +#include "m4a.h" #include "main.h" #include "menu.h" #include "money.h" @@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; -extern const u8 gBadgesTiles[]; extern const u16 gUnknown_083B5F0C[]; extern const u16 gBadgesPalette[]; extern const u16 gUnknown_083B5F4C[]; @@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; +#ifdef DEBUG +const struct TrainerCard gUnknown_Debug_083E0448 = +{ + .gender = FEMALE, + .stars = 4, + .hasPokedex = TRUE, + .var_3 = TRUE, + .var_4 = TRUE, + .firstHallOfFameA = 999, + .firstHallOfFameB = 99, + .firstHallOfFameC = 99, + .pokedexSeen = 411, + .trainerId = 12345, + .playTimeHours = 99, + .playTimeMinutes = 99, + .linkBattleWins = 9999, + .linkBattleLosses = 9999, + .battleTowerWins = 9999, + .battleTowerLosses = 9999, + .contestsWithFriends = 999, + .pokeblocksWithFriends = 0xFFFF, + .pokemonTrades = 0xFFFF, + .money = 99999, + .var_28 = {1, 2, 3, 4}, + .playerName = _("てすと"), +}; +#endif + bool8 TrainerCard_Init(struct Task *); bool8 TrainerCard_WaitForFadeInToFinish(struct Task *); bool8 TrainerCard_WaitForKeys(struct Task *); @@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); +#ifdef DEBUG +static u8 gDebug_03000748; +#endif + void TrainerCard_ShowPlayerCard(Callback arg1) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForPlayer(arg1); SetMainCallback2(sub_8093174); ewram0_2.language = GAME_LANGUAGE; @@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1) void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); SetMainCallback2(sub_8093174); ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } +#ifdef DEBUG +void debug_sub_80A0710(Callback callback) +{ + gDebug_03000748 = TRUE; + TrainerCard_InitScreenForPlayer(callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A073C(Callback callback) +{ + memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); + gDebug_03000748=TRUE; + TrainerCard_InitScreenForLinkPlayer(0, callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A0780() +{ + int i; + + for (i = 0; i < 4; i++) + memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); +} +#endif + static void sub_8093174(void) { switch (gMain.state) @@ -553,6 +618,19 @@ static void TrainerCard_FillFlags(void) } } } + +#ifdef DEBUG + if (gDebug_03000748 != 0) + { + ewram0_2.showHallOfFame = TRUE; + ewram0_2.showLinkBattleStatus = TRUE; + ewram0_2.showBattleTowerStatus = TRUE; + ewram0_2.showContestRecord = TRUE; + ewram0_2.showMixingRecord = TRUE; + ewram0_2.showTradingRecord = TRUE; + memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges)); + } +#endif } void sub_80937A4() @@ -645,6 +723,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task) } return TRUE; } +#ifdef DEBUG + else if (gDebug_03000748 && gMain.newKeys & R_BUTTON) + { + ewram0_2.starCount++; + ewram0_2.starCount %= 5; + TrainerCard_LoadPalettes(); + if (ewram0_2.backSideShown == 0) + TrainerCard_DrawStars(); + } +#endif + return FALSE; } @@ -1372,7 +1461,11 @@ static void TrainerCard_Front_PrintPokedexCount(void) { u8 buffer[16]; - if (!ewram0_2.showPokedexCount) + if ( +#ifdef DEBUG + gDebug_03000748 == 0 && +#endif + !ewram0_2.showPokedexCount) { TrainerCard_ClearPokedexLabel(); } |