Merge pull request #1336 from GriffinRichards/giftribbons
Document some ribbon usage
This commit is contained in:
@@ -2765,7 +2765,11 @@ static void AwardBattleTowerRibbons(void)
|
||||
{
|
||||
s32 i;
|
||||
u32 partyIndex;
|
||||
#ifdef BUGFIX
|
||||
struct RibbonCounter ribbons[MAX_FRONTIER_PARTY_SIZE];
|
||||
#else
|
||||
struct RibbonCounter ribbons[3]; // BUG: 4 Pokemon can receive ribbons in a double battle mode.
|
||||
#endif
|
||||
u8 ribbonType = 0;
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
|
||||
|
||||
@@ -46,7 +46,7 @@ const u8 gGiftRibbonDescriptionPart2_LovedPokemon[] = _("for a loved POKéMON.")
|
||||
const u8 gGiftRibbonDescriptionPart1_LoveForPokemon[] = _("RIBBON that shows");
|
||||
const u8 gGiftRibbonDescriptionPart2_LoveForPokemon[] = _("love for POKéMON.");
|
||||
|
||||
const u8 *const gGiftRibbonDescriptionPointers[][2] =
|
||||
const u8 *const gGiftRibbonDescriptionPointers[MAX_GIFT_RIBBON][2] =
|
||||
{
|
||||
{gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
|
||||
{gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion},
|
||||
|
||||
@@ -20,29 +20,29 @@ const u8 gRibbonDescriptionPart2_Effort[] = _("being a hard worker.");
|
||||
|
||||
const u8 *const gRibbonDescriptionPointers[][2] =
|
||||
{
|
||||
{gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
|
||||
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
|
||||
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
|
||||
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
|
||||
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
|
||||
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
|
||||
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
|
||||
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
|
||||
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
|
||||
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
|
||||
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
|
||||
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
|
||||
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
|
||||
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
|
||||
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
|
||||
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
|
||||
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
|
||||
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
|
||||
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
|
||||
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
|
||||
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
|
||||
{gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
|
||||
{gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
|
||||
{gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
|
||||
{gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
|
||||
[CHAMPION_RIBBON] = {gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
|
||||
[COOL_RIBBON_NORMAL] = {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
|
||||
[COOL_RIBBON_SUPER] = {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
|
||||
[COOL_RIBBON_HYPER] = {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
|
||||
[COOL_RIBBON_MASTER] = {gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
|
||||
[BEAUTY_RIBBON_NORMAL] = {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
|
||||
[BEAUTY_RIBBON_SUPER] = {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
|
||||
[BEAUTY_RIBBON_HYPER] = {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
|
||||
[BEAUTY_RIBBON_MASTER] = {gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
|
||||
[CUTE_RIBBON_NORMAL] = {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
|
||||
[CUTE_RIBBON_SUPER] = {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
|
||||
[CUTE_RIBBON_HYPER] = {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
|
||||
[CUTE_RIBBON_MASTER] = {gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
|
||||
[SMART_RIBBON_NORMAL] = {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
|
||||
[SMART_RIBBON_SUPER] = {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
|
||||
[SMART_RIBBON_HYPER] = {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
|
||||
[SMART_RIBBON_MASTER] = {gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
|
||||
[TOUGH_RIBBON_NORMAL] = {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
|
||||
[TOUGH_RIBBON_SUPER] = {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
|
||||
[TOUGH_RIBBON_HYPER] = {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
|
||||
[TOUGH_RIBBON_MASTER] = {gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
|
||||
[WINNING_RIBBON] = {gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
|
||||
[VICTORY_RIBBON] = {gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
|
||||
[ARTIST_RIBBON] = {gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
|
||||
[EFFORT_RIBBON] = {gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
|
||||
};
|
||||
|
||||
@@ -553,20 +553,20 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
|
||||
const struct Evolution *evos2;
|
||||
|
||||
CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, (&gEvolutionTable[preEvoSpecies][1].targetSpecies));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies);
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]);
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data);
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data);
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data);
|
||||
|
||||
for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++)
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
|
||||
for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FILLER; i++)
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data);
|
||||
for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_UNUSED_RIBBONS; i++)
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data);
|
||||
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, &data);
|
||||
data = 0xFF;
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, (&data));
|
||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, &data);
|
||||
|
||||
CalculateMonStats(&gPlayerParty[gPlayerPartyCount]);
|
||||
CalculatePlayerPartyCount();
|
||||
|
||||
@@ -1408,7 +1408,7 @@ void GiveLeadMonEffortRibbon(void)
|
||||
SetMonData(leadMon, MON_DATA_EFFORT_RIBBON, &ribbonSet);
|
||||
if (GetRibbonCount(leadMon) > NUM_CUTIES_RIBBONS)
|
||||
{
|
||||
TryPutSpotTheCutiesOnAir(leadMon, 0x47);
|
||||
TryPutSpotTheCutiesOnAir(leadMon, MON_DATA_EFFORT_RIBBON);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1506,11 +1506,9 @@ const u16 gWallpaperPalettes_Ribbon[][16] =
|
||||
const u32 gWallpaperTiles_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.4bpp.lz");
|
||||
const u32 gWallpaperTilemap_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.bin.lz");
|
||||
|
||||
// pokenav
|
||||
|
||||
const u16 gUnknown_08DDE010[] = INCBIN_U16("graphics/pokenav/ribbons.gbapal");
|
||||
const u32 gUnknown_08DDE030[] = INCBIN_U32("graphics/pokenav/ribbons.4bpp.lz");
|
||||
const u32 gUnknown_08DDE12C[] = INCBIN_U32("graphics/pokenav/ribbons.bin.lz");
|
||||
const u16 gPokenavRibbonsSummaryBg_Pal[] = INCBIN_U16("graphics/pokenav/ribbons/summary_bg.gbapal");
|
||||
const u32 gPokenavRibbonsSummaryBg_Gfx[] = INCBIN_U32("graphics/pokenav/ribbons/summary_bg.4bpp.lz");
|
||||
const u32 gPokenavRibbonsSummaryBg_Tilemap[] = INCBIN_U32("graphics/pokenav/ribbons/summary_bg.bin.lz");
|
||||
|
||||
const u16 gMonIconPalettes[][16] =
|
||||
{
|
||||
|
||||
@@ -3928,8 +3928,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
|
||||
case MON_DATA_WORLD_RIBBON:
|
||||
retVal = substruct3->worldRibbon;
|
||||
break;
|
||||
case MON_DATA_FILLER:
|
||||
retVal = substruct3->filler;
|
||||
case MON_DATA_UNUSED_RIBBONS:
|
||||
retVal = substruct3->unusedRibbons;
|
||||
break;
|
||||
case MON_DATA_EVENT_LEGAL:
|
||||
retVal = substruct3->eventLegal;
|
||||
@@ -4307,8 +4307,8 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
|
||||
case MON_DATA_WORLD_RIBBON:
|
||||
SET8(substruct3->worldRibbon);
|
||||
break;
|
||||
case MON_DATA_FILLER:
|
||||
SET8(substruct3->filler);
|
||||
case MON_DATA_UNUSED_RIBBONS:
|
||||
SET8(substruct3->unusedRibbons);
|
||||
break;
|
||||
case MON_DATA_EVENT_LEGAL:
|
||||
SET8(substruct3->eventLegal);
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#define POKE_ICON_BASE_PAL_TAG 56000
|
||||
|
||||
#define INVALID_ICON_SPECIES SPECIES_OLD_UNOWN_J // Oddly specific, used when an icon should be a ?. Any of the 'old unown' would work
|
||||
|
||||
struct MonIconSpriteTemplate
|
||||
{
|
||||
const struct OamData *oam;
|
||||
@@ -1086,7 +1088,7 @@ u16 GetIconSpecies(u16 species, u32 personality)
|
||||
else
|
||||
{
|
||||
if (species > NUM_SPECIES)
|
||||
result = 260;
|
||||
result = INVALID_ICON_SPECIES;
|
||||
else
|
||||
result = species;
|
||||
}
|
||||
@@ -1117,7 +1119,7 @@ u16 sub_80D2E84(u16 species)
|
||||
else
|
||||
{
|
||||
if (species > (SPECIES_UNOWN_B - 1))
|
||||
species = SPECIES_OLD_UNOWN_J; // That's an oddly specific species.
|
||||
species = INVALID_ICON_SPECIES;
|
||||
return GetIconSpecies(species, 0);
|
||||
}
|
||||
}
|
||||
@@ -1144,7 +1146,7 @@ void SafeLoadMonIconPalette(u16 species)
|
||||
{
|
||||
u8 palIndex;
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
species = INVALID_ICON_SPECIES;
|
||||
palIndex = gMonIconPaletteIndices[species];
|
||||
if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF)
|
||||
LoadSpritePalette(&gMonIconPaletteTable[palIndex]);
|
||||
@@ -1160,7 +1162,7 @@ void LoadMonIconPalette(u16 species)
|
||||
void FreeMonIconPalettes(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 6; i++)
|
||||
for (i = 0; i < ARRAY_COUNT(gMonIconPaletteTable); i++)
|
||||
FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag);
|
||||
}
|
||||
|
||||
@@ -1169,7 +1171,7 @@ void SafeFreeMonIconPalette(u16 species)
|
||||
{
|
||||
u8 palIndex;
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
species = INVALID_ICON_SPECIES;
|
||||
palIndex = gMonIconPaletteIndices[species];
|
||||
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
|
||||
}
|
||||
@@ -1216,7 +1218,7 @@ void sub_80D304C(u16 offset)
|
||||
u8 GetValidMonIconPalIndex(u16 species)
|
||||
{
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
species = INVALID_ICON_SPECIES;
|
||||
return gMonIconPaletteIndices[species];
|
||||
}
|
||||
|
||||
@@ -1228,7 +1230,7 @@ u8 GetMonIconPaletteIndexFromSpecies(u16 species)
|
||||
const u16* GetValidMonIconPalettePtr(u16 species)
|
||||
{
|
||||
if (species > NUM_SPECIES)
|
||||
species = 260;
|
||||
species = INVALID_ICON_SPECIES;
|
||||
return gMonIconPaletteTable[gMonIconPaletteIndices[species]].data;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@ static const struct UnknownStruct sBigMonSizeTable[] =
|
||||
{ 1700, 1, -26 },
|
||||
};
|
||||
|
||||
static const u8 sGiftRibbonsMonDataIds[] =
|
||||
// - 4 for unused gift ribbon bits in MON_DATA_UNUSED_RIBBONS
|
||||
static const u8 sGiftRibbonsMonDataIds[GIFT_RIBBONS_COUNT - 4] =
|
||||
{
|
||||
MON_DATA_MARINE_RIBBON, MON_DATA_LAND_RIBBON, MON_DATA_SKY_RIBBON,
|
||||
MON_DATA_COUNTRY_RIBBON, MON_DATA_NATIONAL_RIBBON, MON_DATA_EARTH_RIBBON,
|
||||
@@ -197,10 +198,10 @@ void GiveGiftRibbonToParty(u8 index, u8 ribbonId)
|
||||
s32 i;
|
||||
bool32 gotRibbon = FALSE;
|
||||
u8 data = 1;
|
||||
u8 array[8];
|
||||
u8 array[ARRAY_COUNT(sGiftRibbonsMonDataIds)];
|
||||
memcpy(array, sGiftRibbonsMonDataIds, sizeof(sGiftRibbonsMonDataIds));
|
||||
|
||||
if (index < 11 && ribbonId < 65)
|
||||
if (index < GIFT_RIBBONS_COUNT && ribbonId <= MAX_GIFT_RIBBON)
|
||||
{
|
||||
gSaveBlock1Ptr->giftRibbons[index] = ribbonId;
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
|
||||
@@ -44,7 +44,7 @@ struct PokenavSub10
|
||||
static u32 HandleRibbonsMonListInput_WaitListInit(struct PokenavSub9 *structPtr);
|
||||
static u32 HandleRibbonsMonListInput(struct PokenavSub9 *structPtr);
|
||||
static u32 RibbonsMonMenu_ReturnToMainMenu(struct PokenavSub9 *structPtr);
|
||||
static u32 sub_81CFB10(struct PokenavSub9 *structPtr);
|
||||
static u32 RibbonsMonMenu_ToSummaryScreen(struct PokenavSub9 *structPtr);
|
||||
static u32 BuildPartyMonRibbonList(s32 state);
|
||||
static u32 InitBoxMonRibbonList(s32 state);
|
||||
static u32 BuildBoxMonRibbonList(s32 state);
|
||||
@@ -71,10 +71,10 @@ static const LoopedTask sMonRibbonListLoopTaskFuncs[] =
|
||||
BuildBoxMonRibbonList
|
||||
};
|
||||
|
||||
static const u16 sMonRibbonListFramePal[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
|
||||
static const u32 sMonRibbonListFrameTiles[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
|
||||
static const u32 sMonRibbonListFrameTilemap[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
|
||||
static const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
|
||||
static const u16 sMonRibbonListFramePal[] = INCBIN_U16("graphics/pokenav/ribbons/list_bg.gbapal");
|
||||
static const u32 sMonRibbonListFrameTiles[] = INCBIN_U32("graphics/pokenav/ribbons/list_bg.4bpp.lz");
|
||||
static const u32 sMonRibbonListFrameTilemap[] = INCBIN_U32("graphics/pokenav/ribbons/list_bg.bin.lz");
|
||||
static const u16 sMonRibbonListUi_Pal[] = INCBIN_U16("graphics/pokenav/ribbons/list_ui.gbapal");
|
||||
|
||||
static const struct BgTemplate sMonRibbonListBgTemplates[] =
|
||||
{
|
||||
@@ -192,7 +192,7 @@ static u32 HandleRibbonsMonListInput(struct PokenavSub9 *structPtr)
|
||||
{
|
||||
structPtr->monList->currIndex = GetSelectedPokenavListIndex();
|
||||
structPtr->saveMonList = 1;
|
||||
structPtr->callback = sub_81CFB10;
|
||||
structPtr->callback = RibbonsMonMenu_ToSummaryScreen;
|
||||
return RIBBONS_MON_LIST_FUNC_OPEN_RIBBONS_SUMMARY;
|
||||
}
|
||||
return RIBBONS_MON_LIST_FUNC_NONE;
|
||||
@@ -203,7 +203,7 @@ static u32 RibbonsMonMenu_ReturnToMainMenu(struct PokenavSub9 *structPtr)
|
||||
return POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS;
|
||||
}
|
||||
|
||||
static u32 sub_81CFB10(struct PokenavSub9 *structPtr)
|
||||
static u32 RibbonsMonMenu_ToSummaryScreen(struct PokenavSub9 *structPtr)
|
||||
{
|
||||
return POKENAV_RIBBONS_SUMMARY_SCREEN;
|
||||
}
|
||||
@@ -342,8 +342,8 @@ static void sub_81CFCEC(struct PokenavSub9 *structPtr, struct PokenavMonList *it
|
||||
structPtr->monList->listCount++;
|
||||
}
|
||||
|
||||
//unused
|
||||
static bool32 Unused_PlayerHasRibbonsMon(void)
|
||||
// Unused
|
||||
static bool32 PlayerHasRibbonsMon(void)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
@@ -446,7 +446,7 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state)
|
||||
case 2:
|
||||
if (FreeTempTileDataBuffersIfPossible())
|
||||
return LT_PAUSE;
|
||||
CopyPaletteIntoBufferUnfaded(gUnknown_08623790, 0x20, 0x20);
|
||||
CopyPaletteIntoBufferUnfaded(sMonRibbonListUi_Pal, 0x20, 0x20);
|
||||
InitMonRibbonPokenavListMenuTemplate();
|
||||
return LT_INC_AND_PAUSE;
|
||||
case 3:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -110,7 +110,7 @@ static EWRAM_DATA struct {
|
||||
/*0x007F*/ u8 unused_7F;
|
||||
/*0x0080*/ u16 linkData[20];
|
||||
/*0x00A8*/ u8 timer;
|
||||
/*0x00A9*/ u8 giftRibbons[11];
|
||||
/*0x00A9*/ u8 giftRibbons[GIFT_RIBBONS_COUNT];
|
||||
/*0x00B4*/ u8 filler_B4[0x8D0-0xB4];
|
||||
/*0x08D0*/ struct {
|
||||
bool8 queued;
|
||||
|
||||
220
src/tv.c
220
src/tv.c
@@ -139,7 +139,7 @@ static void sub_80EF120(u16 days);
|
||||
static void sub_80EDA48(u16 days);
|
||||
static void sub_80EEB98(u16 days);
|
||||
void PutFishingAdviceShowOnTheAir(void);
|
||||
u8 TV_MonDataIdxToRibbon(u8 monDataIdx);
|
||||
static u8 MonDataIdxToRibbon(u8 monDataIdx);
|
||||
static void sub_80EEBF4(u8 actionIdx);
|
||||
bool8 IsPriceDiscounted(u8 newsKind);
|
||||
static void InterviewBefore_FanClubLetter(void);
|
||||
@@ -592,22 +592,22 @@ static const u8 *const sTVTrainerFanClubTextGroup[] = {
|
||||
};
|
||||
|
||||
static const u8 *const sTVCutiesTextGroup[] = {
|
||||
gTVCutiesText00,
|
||||
gTVCutiesText01,
|
||||
gTVCutiesText02,
|
||||
gTVCutiesText03,
|
||||
gTVCutiesText04,
|
||||
gTVCutiesText05,
|
||||
gTVCutiesText06,
|
||||
gTVCutiesText07,
|
||||
gTVCutiesText08,
|
||||
gTVCutiesText09,
|
||||
gTVCutiesText10,
|
||||
gTVCutiesText11,
|
||||
gTVCutiesText12,
|
||||
gTVCutiesText13,
|
||||
gTVCutiesText14,
|
||||
gTVCutiesText15
|
||||
[SPOTCUTIES_STATE_INTRO] = TVSpotTheCuties_Text_Intro,
|
||||
[SPOTCUTIES_STATE_RIBBONS_LOW] = TVSpotTheCuties_Text_RibbonsLow,
|
||||
[SPOTCUTIES_STATE_RIBBONS_MID] = TVSpotTheCuties_Text_RibbonsMid,
|
||||
[SPOTCUTIES_STATE_RIBBONS_HIGH] = TVSpotTheCuties_Text_RibbonsHigh,
|
||||
[SPOTCUTIES_STATE_RIBBON_INTRO] = TVSpotTheCuties_Text_RibbonIntro,
|
||||
[SPOTCUTIES_STATE_RIBBON_CHAMPION] = TVSpotTheCuties_Text_RibbonChampion,
|
||||
[SPOTCUTIES_STATE_RIBBON_COOL] = TVSpotTheCuties_Text_RibbonCool,
|
||||
[SPOTCUTIES_STATE_RIBBON_BEAUTY] = TVSpotTheCuties_Text_RibbonBeauty,
|
||||
[SPOTCUTIES_STATE_RIBBON_CUTE] = TVSpotTheCuties_Text_RibbonCute,
|
||||
[SPOTCUTIES_STATE_RIBBON_SMART] = TVSpotTheCuties_Text_RibbonSmart,
|
||||
[SPOTCUTIES_STATE_RIBBON_TOUGH] = TVSpotTheCuties_Text_RibbonTough,
|
||||
[SPOTCUTIES_STATE_RIBBON_WINNING] = TVSpotTheCuties_Text_RibbonWinning,
|
||||
[SPOTCUTIES_STATE_RIBBON_VICTORY] = TVSpotTheCuties_Text_RibbonVictory,
|
||||
[SPOTCUTIES_STATE_RIBBON_ARTIST] = TVSpotTheCuties_Text_RibbonArtist,
|
||||
[SPOTCUTIES_STATE_RIBBON_EFFORT] = TVSpotTheCuties_Text_RibbonEffort,
|
||||
[SPOTCUTIES_STATE_OUTRO] = TVSpotTheCuties_Text_Outro
|
||||
};
|
||||
|
||||
static const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
|
||||
@@ -2369,7 +2369,7 @@ void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx)
|
||||
GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname);
|
||||
StripExtCtrlCodes(show->cuties.nickname);
|
||||
show->cuties.nRibbons = GetRibbonCount(pokemon);
|
||||
show->cuties.selectedRibbon = TV_MonDataIdxToRibbon(ribbonMonDataIdx);
|
||||
show->cuties.selectedRibbon = MonDataIdxToRibbon(ribbonMonDataIdx);
|
||||
tv_store_id_3x(show);
|
||||
show->cuties.language = gGameLanguage;
|
||||
if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
|
||||
@@ -2408,26 +2408,26 @@ u8 GetRibbonCount(struct Pokemon *pokemon)
|
||||
return nRibbons;
|
||||
}
|
||||
|
||||
u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
|
||||
static u8 MonDataIdxToRibbon(u8 monDataIdx)
|
||||
{
|
||||
if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return 0;
|
||||
if (monDataIdx == MON_DATA_COOL_RIBBON) return 1;
|
||||
if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return 5;
|
||||
if (monDataIdx == MON_DATA_CUTE_RIBBON) return 9;
|
||||
if (monDataIdx == MON_DATA_SMART_RIBBON) return 13;
|
||||
if (monDataIdx == MON_DATA_TOUGH_RIBBON) return 17;
|
||||
if (monDataIdx == MON_DATA_WINNING_RIBBON) return 21;
|
||||
if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
|
||||
if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
|
||||
if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
|
||||
if (monDataIdx == MON_DATA_MARINE_RIBBON) return 25;
|
||||
if (monDataIdx == MON_DATA_LAND_RIBBON) return 26;
|
||||
if (monDataIdx == MON_DATA_SKY_RIBBON) return 27;
|
||||
if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return 28;
|
||||
if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return 29;
|
||||
if (monDataIdx == MON_DATA_EARTH_RIBBON) return 30;
|
||||
if (monDataIdx == MON_DATA_WORLD_RIBBON) return 31;
|
||||
return 0;
|
||||
if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return CHAMPION_RIBBON;
|
||||
if (monDataIdx == MON_DATA_COOL_RIBBON) return COOL_RIBBON_NORMAL;
|
||||
if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return BEAUTY_RIBBON_NORMAL;
|
||||
if (monDataIdx == MON_DATA_CUTE_RIBBON) return CUTE_RIBBON_NORMAL;
|
||||
if (monDataIdx == MON_DATA_SMART_RIBBON) return SMART_RIBBON_NORMAL;
|
||||
if (monDataIdx == MON_DATA_TOUGH_RIBBON) return TOUGH_RIBBON_NORMAL;
|
||||
if (monDataIdx == MON_DATA_WINNING_RIBBON) return WINNING_RIBBON;
|
||||
if (monDataIdx == MON_DATA_VICTORY_RIBBON) return VICTORY_RIBBON;
|
||||
if (monDataIdx == MON_DATA_ARTIST_RIBBON) return ARTIST_RIBBON;
|
||||
if (monDataIdx == MON_DATA_EFFORT_RIBBON) return EFFORT_RIBBON;
|
||||
if (monDataIdx == MON_DATA_MARINE_RIBBON) return MARINE_RIBBON;
|
||||
if (monDataIdx == MON_DATA_LAND_RIBBON) return LAND_RIBBON;
|
||||
if (monDataIdx == MON_DATA_SKY_RIBBON) return SKY_RIBBON;
|
||||
if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return COUNTRY_RIBBON;
|
||||
if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return NATIONAL_RIBBON;
|
||||
if (monDataIdx == MON_DATA_EARTH_RIBBON) return EARTH_RIBBON;
|
||||
if (monDataIdx == MON_DATA_WORLD_RIBBON) return WORLD_RIBBON;
|
||||
return CHAMPION_RIBBON;
|
||||
}
|
||||
|
||||
void TrySetUpTrainerFanClubSpecial(void)
|
||||
@@ -6603,98 +6603,100 @@ static void DoTVShowSpotTheCuties(void)
|
||||
|
||||
show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
|
||||
gSpecialVar_Result = FALSE;
|
||||
|
||||
// For each state, in addition to the switch a message
|
||||
// is printed from the table at the bottom
|
||||
state = sTVShowState;
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
case SPOTCUTIES_STATE_INTRO:
|
||||
TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
|
||||
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
|
||||
|
||||
// Comments following the intro depend on how many ribbons the pokemon has
|
||||
if (show->cuties.nRibbons < 10)
|
||||
{
|
||||
sTVShowState = 1;
|
||||
}
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBONS_LOW;
|
||||
else if (show->cuties.nRibbons < 20)
|
||||
{
|
||||
sTVShowState = 2;
|
||||
}
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBONS_MID;
|
||||
else
|
||||
{
|
||||
sTVShowState = 3;
|
||||
}
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBONS_HIGH;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case SPOTCUTIES_STATE_RIBBONS_LOW:
|
||||
case SPOTCUTIES_STATE_RIBBONS_MID:
|
||||
case SPOTCUTIES_STATE_RIBBONS_HIGH:
|
||||
TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
|
||||
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
|
||||
TV_PrintIntToStringVar(2, show->cuties.nRibbons);
|
||||
sTVShowState = 4;
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_INTRO;
|
||||
break;
|
||||
case 4:
|
||||
case SPOTCUTIES_STATE_RIBBON_INTRO:
|
||||
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
|
||||
switch (show->cuties.selectedRibbon)
|
||||
{
|
||||
case 0:
|
||||
sTVShowState = 5;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
sTVShowState = 6;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
sTVShowState = 7;
|
||||
break;
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
sTVShowState = 8;
|
||||
break;
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
case 16:
|
||||
sTVShowState = 9;
|
||||
break;
|
||||
case 17:
|
||||
case 18:
|
||||
case 19:
|
||||
case 20:
|
||||
sTVShowState = 10;
|
||||
break;
|
||||
case 21:
|
||||
sTVShowState = 11;
|
||||
break;
|
||||
case 22:
|
||||
sTVShowState = 12;
|
||||
break;
|
||||
case 23:
|
||||
sTVShowState = 13;
|
||||
break;
|
||||
case 24:
|
||||
sTVShowState = 14;
|
||||
break;
|
||||
case CHAMPION_RIBBON:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_CHAMPION;
|
||||
break;
|
||||
case COOL_RIBBON_NORMAL:
|
||||
case COOL_RIBBON_SUPER:
|
||||
case COOL_RIBBON_HYPER:
|
||||
case COOL_RIBBON_MASTER:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_COOL;
|
||||
break;
|
||||
case BEAUTY_RIBBON_NORMAL:
|
||||
case BEAUTY_RIBBON_SUPER:
|
||||
case BEAUTY_RIBBON_HYPER:
|
||||
case BEAUTY_RIBBON_MASTER:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_BEAUTY;
|
||||
break;
|
||||
case CUTE_RIBBON_NORMAL:
|
||||
case CUTE_RIBBON_SUPER:
|
||||
case CUTE_RIBBON_HYPER:
|
||||
case CUTE_RIBBON_MASTER:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_CUTE;
|
||||
break;
|
||||
case SMART_RIBBON_NORMAL:
|
||||
case SMART_RIBBON_SUPER:
|
||||
case SMART_RIBBON_HYPER:
|
||||
case SMART_RIBBON_MASTER:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_SMART;
|
||||
break;
|
||||
case TOUGH_RIBBON_NORMAL:
|
||||
case TOUGH_RIBBON_SUPER:
|
||||
case TOUGH_RIBBON_HYPER:
|
||||
case TOUGH_RIBBON_MASTER:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_TOUGH;
|
||||
break;
|
||||
case WINNING_RIBBON:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_WINNING;
|
||||
break;
|
||||
case VICTORY_RIBBON:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_VICTORY;
|
||||
break;
|
||||
case ARTIST_RIBBON:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_ARTIST;
|
||||
break;
|
||||
case EFFORT_RIBBON:
|
||||
sTVShowState = SPOTCUTIES_STATE_RIBBON_EFFORT;
|
||||
break;
|
||||
// No comment is made for any of the gift ribbons.
|
||||
// If the show is created for a gift ribbon
|
||||
// then this state will repeat indefinitely
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case SPOTCUTIES_STATE_RIBBON_CHAMPION:
|
||||
case SPOTCUTIES_STATE_RIBBON_COOL:
|
||||
case SPOTCUTIES_STATE_RIBBON_BEAUTY:
|
||||
case SPOTCUTIES_STATE_RIBBON_CUTE:
|
||||
case SPOTCUTIES_STATE_RIBBON_SMART:
|
||||
case SPOTCUTIES_STATE_RIBBON_TOUGH:
|
||||
case SPOTCUTIES_STATE_RIBBON_WINNING:
|
||||
case SPOTCUTIES_STATE_RIBBON_VICTORY:
|
||||
case SPOTCUTIES_STATE_RIBBON_ARTIST:
|
||||
case SPOTCUTIES_STATE_RIBBON_EFFORT:
|
||||
TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
|
||||
sTVShowState = 15;
|
||||
sTVShowState = SPOTCUTIES_STATE_OUTRO;
|
||||
break;
|
||||
case 15:
|
||||
case SPOTCUTIES_STATE_OUTRO:
|
||||
TVShowDone();
|
||||
}
|
||||
ShowFieldMessage(sTVCutiesTextGroup[state]);
|
||||
|
||||
Reference in New Issue
Block a user