Merge pull request #1415 from GriffinRichards/doc-contestutil
Some Contest clean up
This commit is contained in:
52 files changed
+439
-378
No files matched your search
@@ -918,10 +918,10 @@
|
|||||||
.byte 0x76
|
.byte 0x76
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Draws an image of the winner of the contest. In FireRed, this command is a nop. (The argument is discarded.)
|
@ Draws an image of the winner of the contest. winnerId is any CONTEST_WINNER_* constant.
|
||||||
.macro showcontestwinner a:req
|
.macro showcontestpainting winnerId:req
|
||||||
.byte 0x77
|
.byte 0x77
|
||||||
.byte \a
|
.byte \winnerId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille
|
@ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ LilycoveCity_EventScript_MotelSign:: @ 81E2D11
|
|||||||
|
|
||||||
LilycoveCity_EventScript_MuseumSign:: @ 81E2D1A
|
LilycoveCity_EventScript_MuseumSign:: @ 81E2D1A
|
||||||
lockall
|
lockall
|
||||||
specialvar VAR_0x8004, CountPlayerContestPaintings
|
specialvar VAR_0x8004, CountPlayerMuseumPaintings
|
||||||
switch VAR_0x8004
|
switch VAR_0x8004
|
||||||
case 0, LilycoveCity_EventScript_MuseumSignNoPaintings
|
case 0, LilycoveCity_EventScript_MuseumSignNoPaintings
|
||||||
msgbox LilycoveCity_Text_MuseumSignPlayersExhibit, MSGBOX_DEFAULT
|
msgbox LilycoveCity_Text_MuseumSignPlayersExhibit, MSGBOX_DEFAULT
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ LilycoveCity_ContestLobby_EventScript_ContestArtist:: @ 821A264
|
|||||||
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
|
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_ARTIST
|
showcontestpainting CONTEST_WINNER_ARTIST
|
||||||
lockall
|
lockall
|
||||||
msgbox LilycoveCity_ContestLobby_Text_ShouldITakePaintingToMuseum, MSGBOX_YESNO
|
msgbox LilycoveCity_ContestLobby_Text_ShouldITakePaintingToMuseum, MSGBOX_YESNO
|
||||||
compare VAR_RESULT, YES
|
compare VAR_RESULT, YES
|
||||||
@@ -108,7 +108,7 @@ LilycoveCity_ContestLobby_EventScript_ReceivedArtistRibbon:: @ 821A314
|
|||||||
return
|
return
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_UpdateMuseumPatrons:: @ 821A360
|
LilycoveCity_ContestLobby_EventScript_UpdateMuseumPatrons:: @ 821A360
|
||||||
specialvar VAR_0x8004, CountPlayerContestPaintings
|
specialvar VAR_0x8004, CountPlayerMuseumPaintings
|
||||||
switch VAR_0x8004
|
switch VAR_0x8004
|
||||||
case 1, LilycoveCity_ContestLobby_EventScript_ShowPatron1
|
case 1, LilycoveCity_ContestLobby_EventScript_ShowPatron1
|
||||||
case 2, LilycoveCity_ContestLobby_EventScript_ShowPatron2
|
case 2, LilycoveCity_ContestLobby_EventScript_ShowPatron2
|
||||||
@@ -223,7 +223,7 @@ LilycoveCity_ContestLobby_EventScript_LinkContestArtist:: @ 821A436
|
|||||||
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
|
msgbox LilycoveCity_ContestLobby_Text_YourPokemonSpurredMeToPaint, MSGBOX_DEFAULT
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_ARTIST
|
showcontestpainting CONTEST_WINNER_ARTIST
|
||||||
msgbox LilycoveCity_ContestLobby_Text_ShouldITakePaintingToMuseum, MSGBOX_YESNO
|
msgbox LilycoveCity_ContestLobby_Text_ShouldITakePaintingToMuseum, MSGBOX_YESNO
|
||||||
compare VAR_RESULT, YES
|
compare VAR_RESULT, YES
|
||||||
goto_if_eq LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseumLink
|
goto_if_eq LilycoveCity_ContestLobby_EventScript_TakePaintingToMuseumLink
|
||||||
@@ -511,42 +511,42 @@ LilycoveCity_ContestLobby_EventScript_NinjaBoy:: @ 821A735
|
|||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner1:: @ 821A73E
|
LilycoveCity_ContestLobby_EventScript_ContestWinner1:: @ 821A73E
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_1
|
showcontestpainting CONTEST_WINNER_HALL_1
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner2:: @ 821A745
|
LilycoveCity_ContestLobby_EventScript_ContestWinner2:: @ 821A745
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_2
|
showcontestpainting CONTEST_WINNER_HALL_2
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner3:: @ 821A74C
|
LilycoveCity_ContestLobby_EventScript_ContestWinner3:: @ 821A74C
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_3
|
showcontestpainting CONTEST_WINNER_HALL_3
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner4:: @ 821A753
|
LilycoveCity_ContestLobby_EventScript_ContestWinner4:: @ 821A753
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_4
|
showcontestpainting CONTEST_WINNER_HALL_4
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner5:: @ 821A75A
|
LilycoveCity_ContestLobby_EventScript_ContestWinner5:: @ 821A75A
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_5
|
showcontestpainting CONTEST_WINNER_HALL_5
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_ContestLobby_EventScript_ContestWinner6:: @ 821A761
|
LilycoveCity_ContestLobby_EventScript_ContestWinner6:: @ 821A761
|
||||||
lockall
|
lockall
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_HALL_6
|
showcontestpainting CONTEST_WINNER_HALL_6
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ LilycoveCity_LilycoveMuseum_2F_Movement_FaceExhibitHall: @ 8219863
|
|||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_Curator:: @ 8219866
|
LilycoveCity_LilycoveMuseum_2F_EventScript_Curator:: @ 8219866
|
||||||
lockall
|
lockall
|
||||||
goto_if_set FLAG_RECEIVED_GLASS_ORNAMENT, LilycoveCity_LilycoveMuseum_2F_EventScript_ReceivedGlassOrnament
|
goto_if_set FLAG_RECEIVED_GLASS_ORNAMENT, LilycoveCity_LilycoveMuseum_2F_EventScript_ReceivedGlassOrnament
|
||||||
specialvar VAR_0x8004, CountPlayerContestPaintings
|
specialvar VAR_0x8004, CountPlayerMuseumPaintings
|
||||||
switch VAR_0x8004
|
switch VAR_0x8004
|
||||||
case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_AddedPainting
|
case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_AddedPainting
|
||||||
case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_AddedPainting
|
case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_AddedPainting
|
||||||
@@ -185,35 +185,35 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_RichBoy:: @ 821999C
|
|||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowCoolPainting:: @ 82199A5
|
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowCoolPainting:: @ 82199A5
|
||||||
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_MUSEUM_COOL
|
showcontestpainting CONTEST_WINNER_MUSEUM_COOL
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowBeautyPainting:: @ 82199B3
|
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowBeautyPainting:: @ 82199B3
|
||||||
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_MUSEUM_BEAUTY
|
showcontestpainting CONTEST_WINNER_MUSEUM_BEAUTY
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowCutePainting:: @ 82199C1
|
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowCutePainting:: @ 82199C1
|
||||||
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_MUSEUM_CUTE
|
showcontestpainting CONTEST_WINNER_MUSEUM_CUTE
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowSmartPainting:: @ 82199CF
|
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowSmartPainting:: @ 82199CF
|
||||||
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_MUSEUM_SMART
|
showcontestpainting CONTEST_WINNER_MUSEUM_SMART
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowToughPainting:: @ 82199DD
|
LilycoveCity_LilycoveMuseum_2F_EventScript_ShowToughPainting:: @ 82199DD
|
||||||
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
msgbox LilycoveCity_LilycoveMuseum_2F_Text_ItsPaintingOfPokemon, MSGBOX_SIGN
|
||||||
fadescreen FADE_TO_BLACK
|
fadescreen FADE_TO_BLACK
|
||||||
showcontestwinner CONTEST_WINNER_MUSEUM_TOUGH
|
showcontestpainting CONTEST_WINNER_MUSEUM_TOUGH
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ gScriptCmdTable:: @ 81DB67C
|
|||||||
.4byte ScrCmd_drawboxtext @ 0x74
|
.4byte ScrCmd_drawboxtext @ 0x74
|
||||||
.4byte ScrCmd_showmonpic @ 0x75
|
.4byte ScrCmd_showmonpic @ 0x75
|
||||||
.4byte ScrCmd_hidemonpic @ 0x76
|
.4byte ScrCmd_hidemonpic @ 0x76
|
||||||
.4byte ScrCmd_showcontestwinner @ 0x77
|
.4byte ScrCmd_showcontestpainting @ 0x77
|
||||||
.4byte ScrCmd_braillemessage @ 0x78
|
.4byte ScrCmd_braillemessage @ 0x78
|
||||||
.4byte ScrCmd_givemon @ 0x79
|
.4byte ScrCmd_givemon @ 0x79
|
||||||
.4byte ScrCmd_giveegg @ 0x7a
|
.4byte ScrCmd_giveegg @ 0x7a
|
||||||
|
|||||||
+5
-5
@@ -89,14 +89,14 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special ResetTVShowState
|
def_special ResetTVShowState
|
||||||
def_special GetContestWinnerId
|
def_special GetContestWinnerId
|
||||||
def_special GetContestPlayerId
|
def_special GetContestPlayerId
|
||||||
def_special sub_80F8814
|
def_special GetNpcContestantLocalId
|
||||||
def_special BufferContestWinnerTrainerName
|
def_special BufferContestWinnerTrainerName
|
||||||
def_special BufferContestWinnerMonName
|
def_special BufferContestWinnerMonName
|
||||||
def_special BufferContestTrainerAndMonNames
|
def_special BufferContestTrainerAndMonNames
|
||||||
def_special GetContestMonConditionRanking
|
def_special GetContestMonConditionRanking
|
||||||
def_special SetContestTrainerGfxIds
|
def_special SetContestTrainerGfxIds
|
||||||
def_special TryEnterContestMon
|
def_special TryEnterContestMon
|
||||||
def_special sub_80F8970
|
def_special GetContestantNamesAtRank
|
||||||
def_special SetLinkContestPlayerGfx
|
def_special SetLinkContestPlayerGfx
|
||||||
def_special GetContestMonCondition
|
def_special GetContestMonCondition
|
||||||
def_special HasMonWonThisContestBefore
|
def_special HasMonWonThisContestBefore
|
||||||
@@ -147,9 +147,9 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
|
def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
|
||||||
def_special ShouldReadyContestArtist
|
def_special ShouldReadyContestArtist
|
||||||
def_special SaveMuseumContestPainting
|
def_special SaveMuseumContestPainting
|
||||||
def_special DoesContestCategoryHaveWinner
|
def_special DoesContestCategoryHaveMuseumPainting
|
||||||
def_special CountPlayerContestPaintings
|
def_special CountPlayerMuseumPaintings
|
||||||
def_special ShowContestWinnerPainting
|
def_special ShowContestPainting @ Unused, redundant with showcontestpainting command
|
||||||
def_special MauvilleGymSetDefaultBarriers
|
def_special MauvilleGymSetDefaultBarriers
|
||||||
def_special MauvilleGymPressSwitch
|
def_special MauvilleGymPressSwitch
|
||||||
def_special ShowFieldMessageStringVar4
|
def_special ShowFieldMessageStringVar4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
gContestPaintingCaption:: @ 827EA0C
|
gContestHallPaintingCaption:: @ 827EA0C
|
||||||
.string "{STR_VAR_1}\n"
|
.string "{STR_VAR_1}\n"
|
||||||
.string "{STR_VAR_2}'s {STR_VAR_3}$"
|
.string "{STR_VAR_2}'s {STR_VAR_3}$"
|
||||||
|
|
||||||
|
|||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -476,7 +476,7 @@ $(RAYQUAZAGFXDIR)/scene_4/streaks.4bpp: %.4bpp: %.png
|
|||||||
$(RAYQUAZAGFXDIR)/scene_4/rayquaza.4bpp: %.4bpp: %.png
|
$(RAYQUAZAGFXDIR)/scene_4/rayquaza.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 155
|
$(GFX) $< $@ -num_tiles 155
|
||||||
|
|
||||||
graphics/picture_frame/frame5.4bpp: %.4bpp: %.png
|
graphics/picture_frame/lobby.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 86
|
$(GFX) $< $@ -num_tiles 86
|
||||||
|
|
||||||
$(ROULETTEGFXDIR)/roulette_tilt.4bpp: $(ROULETTEGFXDIR)/shroomish.4bpp \
|
$(ROULETTEGFXDIR)/roulette_tilt.4bpp: $(ROULETTEGFXDIR)/shroomish.4bpp \
|
||||||
|
|||||||
@@ -22,7 +22,9 @@
|
|||||||
#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
|
#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
|
||||||
#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
|
#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
|
||||||
|
|
||||||
#define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved
|
// IDs below - 1 are indexes into gSaveBlock1Ptr->contestWinners[]
|
||||||
|
// CONTEST_WINNER_ARTIST is for the winner of the most recent contest, and is not saved.
|
||||||
|
#define CONTEST_WINNER_ARTIST 0
|
||||||
#define CONTEST_WINNER_HALL_1 1
|
#define CONTEST_WINNER_HALL_1 1
|
||||||
#define CONTEST_WINNER_HALL_2 2
|
#define CONTEST_WINNER_HALL_2 2
|
||||||
#define CONTEST_WINNER_HALL_3 3
|
#define CONTEST_WINNER_HALL_3 3
|
||||||
@@ -30,8 +32,8 @@
|
|||||||
#define CONTEST_WINNER_HALL_5 5
|
#define CONTEST_WINNER_HALL_5 5
|
||||||
#define CONTEST_WINNER_HALL_6 6
|
#define CONTEST_WINNER_HALL_6 6
|
||||||
#define NUM_CONTEST_HALL_WINNERS 6
|
#define NUM_CONTEST_HALL_WINNERS 6
|
||||||
#define CONTEST_WINNER_7 7
|
#define CONTEST_WINNER_HALL_UNUSED_1 7 // These two have data for gDefaultContestWinners
|
||||||
#define CONTEST_WINNER_8 8
|
#define CONTEST_WINNER_HALL_UNUSED_2 8 // but there are only 6 paintings in the Contest Hall
|
||||||
#define CONTEST_WINNER_MUSEUM_COOL 9
|
#define CONTEST_WINNER_MUSEUM_COOL 9
|
||||||
#define CONTEST_WINNER_MUSEUM_BEAUTY 10
|
#define CONTEST_WINNER_MUSEUM_BEAUTY 10
|
||||||
#define CONTEST_WINNER_MUSEUM_CUTE 11
|
#define CONTEST_WINNER_MUSEUM_CUTE 11
|
||||||
@@ -39,6 +41,14 @@
|
|||||||
#define CONTEST_WINNER_MUSEUM_TOUGH 13
|
#define CONTEST_WINNER_MUSEUM_TOUGH 13
|
||||||
// NUM_CONTEST_WINNERS in constants/global.h
|
// NUM_CONTEST_WINNERS in constants/global.h
|
||||||
|
|
||||||
|
#define MUSEUM_CONTEST_WINNERS_START (CONTEST_WINNER_MUSEUM_COOL - 1)
|
||||||
|
|
||||||
|
#define CONTEST_SAVE_FOR_MUSEUM ((u8)-1)
|
||||||
|
#define CONTEST_SAVE_FOR_ARTIST ((u8)-2)
|
||||||
|
|
||||||
|
// The number of possible captions for a Contest painting, per category
|
||||||
|
#define NUM_PAINTING_CAPTIONS 3
|
||||||
|
|
||||||
#define CANT_ENTER_CONTEST 0
|
#define CANT_ENTER_CONTEST 0
|
||||||
#define CAN_ENTER_CONTEST_EQUAL_RANK 1
|
#define CAN_ENTER_CONTEST_EQUAL_RANK 1
|
||||||
#define CAN_ENTER_CONTEST_HIGH_RANK 2
|
#define CAN_ENTER_CONTEST_HIGH_RANK 2
|
||||||
|
|||||||
+8
-8
@@ -111,11 +111,11 @@ struct ContestPokemon
|
|||||||
u32 otId;
|
u32 otId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Shared1A004
|
struct ContestTempSave
|
||||||
{
|
{
|
||||||
u16 cachedWindowPalettes[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 cachedPlttBufferUnfaded[PLTT_BUFFER_SIZE];
|
||||||
u16 unk18604[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferFaded
|
u16 cachedPlttBufferFaded[PLTT_BUFFER_SIZE];
|
||||||
u8 savedJunk[0x800];
|
u8 savedJunk[0x800];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ struct ContestResources
|
|||||||
#define eUnzippedContestAudience_Gfx (gHeap + 0x18000)
|
#define eUnzippedContestAudience_Gfx (gHeap + 0x18000)
|
||||||
#define eContestAudienceFrame2_Gfx (gHeap + 0x19000)
|
#define eContestAudienceFrame2_Gfx (gHeap + 0x19000)
|
||||||
#define eContestDebugMode (gHeap[0x1a000])
|
#define eContestDebugMode (gHeap[0x1a000])
|
||||||
#define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004))
|
#define eContestTempSave (*(struct ContestTempSave *)(gHeap + 0x1a004))
|
||||||
|
|
||||||
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
|
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
|
||||||
extern s16 gContestMonRound1Points[CONTESTANT_COUNT];
|
extern s16 gContestMonRound1Points[CONTESTANT_COUNT];
|
||||||
@@ -326,8 +326,8 @@ extern u8 gHighestRibbonRank;
|
|||||||
extern struct ContestResources *gContestResources;
|
extern struct ContestResources *gContestResources;
|
||||||
extern u8 sContestBgCopyFlags;
|
extern u8 sContestBgCopyFlags;
|
||||||
extern struct ContestWinner gCurContestWinner;
|
extern struct ContestWinner gCurContestWinner;
|
||||||
extern u8 gUnknown_02039F5C;
|
extern u8 gCurContestWinnerIsForArtist;
|
||||||
extern u8 gUnknown_02039F5D;
|
extern u8 gCurContestWinnerSaveIdx;
|
||||||
extern u32 gContestRngValue;
|
extern u32 gContestRngValue;
|
||||||
|
|
||||||
// contest.c
|
// contest.c
|
||||||
@@ -351,8 +351,8 @@ s8 Contest_GetMoveExcitement(u16 move);
|
|||||||
bool8 IsContestantAllowedToCombo(u8 contestant);
|
bool8 IsContestantAllowedToCombo(u8 contestant);
|
||||||
void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
|
void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
|
||||||
void ResetContestLinkResults(void);
|
void ResetContestLinkResults(void);
|
||||||
bool8 sub_80DEDA8(u8 a);
|
bool8 SaveContestWinner(u8 rank);
|
||||||
u8 sub_80DEFA8(u8 a, u8 b);
|
u8 GetContestWinnerSaveIdx(u8 rank, bool8 shift);
|
||||||
void ClearContestWinnerPicsInContestHall(void);
|
void ClearContestWinnerPicsInContestHall(void);
|
||||||
void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language);
|
void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language);
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ void StartContest(void);
|
|||||||
void BufferContestantMonSpecies(void);
|
void BufferContestantMonSpecies(void);
|
||||||
void ShowContestResults(void);
|
void ShowContestResults(void);
|
||||||
void ContestLinkTransfer(u8);
|
void ContestLinkTransfer(u8);
|
||||||
void ShowContestWinnerPainting(void);
|
void ShowContestPainting(void);
|
||||||
u16 GetContestRand(void);
|
u16 GetContestRand(void);
|
||||||
u8 CountPlayerContestPaintings(void);
|
u8 CountPlayerMuseumPaintings(void);
|
||||||
|
|
||||||
#endif // GUARD_CONTEST_UTIL_H
|
#endif // GUARD_CONTEST_UTIL_H
|
||||||
+14
-14
@@ -4924,21 +4924,21 @@ extern const u32 gRouletteMultiplier_Gfx[];
|
|||||||
|
|
||||||
// Contest util
|
// Contest util
|
||||||
extern const u32 gContestResults_Gfx[];
|
extern const u32 gContestResults_Gfx[];
|
||||||
extern const u32 gUnknown_08C19EEC[];
|
extern const u32 gContestResults_WinnerBanner_Tilemap[];
|
||||||
extern const u32 gUnknown_08C1A000[];
|
extern const u32 gContestResults_Interface_Tilemap[];
|
||||||
extern const u32 gUnknown_08C1A12C[];
|
extern const u32 gContestResults_Bg_Tilemap[];
|
||||||
extern const u32 gContestResults_Pal[];
|
extern const u32 gContestResults_Pal[];
|
||||||
extern const u16 gLinkContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Link_Tilemap[];
|
||||||
extern const u16 gNormalContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Normal_Tilemap[];
|
||||||
extern const u16 gSuperContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Super_Tilemap[];
|
||||||
extern const u16 gHyperContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Hyper_Tilemap[];
|
||||||
extern const u16 gMasterContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Master_Tilemap[];
|
||||||
extern const u16 gCoolContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Cool_Tilemap[];
|
||||||
extern const u16 gBeautyContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Beauty_Tilemap[];
|
||||||
extern const u16 gCuteContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Cute_Tilemap[];
|
||||||
extern const u16 gSmartContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Smart_Tilemap[];
|
||||||
extern const u16 gToughContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Tough_Tilemap[];
|
||||||
extern const u16 gContestResults_Tilemap[];
|
extern const u16 gContestResultsTitle_Tilemap[];
|
||||||
|
|
||||||
// Trainer Card.
|
// Trainer Card.
|
||||||
extern const u16 gHoennTrainerCard0Star_Pal[];
|
extern const u16 gHoennTrainerCard0Star_Pal[];
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ void CopyMonCategoryText(int dexNum, u8 *dest);
|
|||||||
u8 *sub_81DB494(u8 *str, int fontId, const u8 *str2, int totalStringWidth);
|
u8 *sub_81DB494(u8 *str, int fontId, const u8 *str2, int totalStringWidth);
|
||||||
void PadNameString(u8 *dest, u8 padChar);
|
void PadNameString(u8 *dest, u8 padChar);
|
||||||
void ConvertInternationalPlayerNameStripChar(u8 *, u8);
|
void ConvertInternationalPlayerNameStripChar(u8 *, u8);
|
||||||
void sub_81DB5AC(u8 *);
|
void ConvertInternationalContestantName(u8 *);
|
||||||
int sub_81DB604(u8 *);
|
int sub_81DB604(u8 *);
|
||||||
void sub_81DB620(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows);
|
void sub_81DB620(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows);
|
||||||
|
|
||||||
|
|||||||
+44
-31
@@ -350,8 +350,8 @@ EWRAM_DATA u8 gHighestRibbonRank = 0;
|
|||||||
EWRAM_DATA struct ContestResources *gContestResources = NULL;
|
EWRAM_DATA struct ContestResources *gContestResources = NULL;
|
||||||
EWRAM_DATA u8 sContestBgCopyFlags = 0;
|
EWRAM_DATA u8 sContestBgCopyFlags = 0;
|
||||||
EWRAM_DATA struct ContestWinner gCurContestWinner = {0};
|
EWRAM_DATA struct ContestWinner gCurContestWinner = {0};
|
||||||
EWRAM_DATA bool8 gUnknown_02039F5C = 0;
|
EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0;
|
||||||
EWRAM_DATA u8 gUnknown_02039F5D = 0;
|
EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
|
||||||
|
|
||||||
// IWRAM common vars.
|
// IWRAM common vars.
|
||||||
u32 gContestRngValue;
|
u32 gContestRngValue;
|
||||||
@@ -1034,7 +1034,7 @@ void LoadContestBgAfterMoveAnim(void)
|
|||||||
{
|
{
|
||||||
u32 contestantWindowId = 5 + i;
|
u32 contestantWindowId = 5 + i;
|
||||||
|
|
||||||
LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId])));
|
LoadPalette(eContestTempSave.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eContestTempSave.cachedWindowPalettes[contestantWindowId])));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1320,7 +1320,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
|
|||||||
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
|
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
|
||||||
CopyBgTilemapBufferToVram(2);
|
CopyBgTilemapBufferToVram(2);
|
||||||
// This is a bug, and copies random junk. savedJunk is never read.
|
// This is a bug, and copies random junk. savedJunk is never read.
|
||||||
DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eUnknownHeap1A004.savedJunk, sizeof(eUnknownHeap1A004.savedJunk));
|
DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
LoadCompressedPalette(gOldContestPalette, 0, 0x200);
|
LoadCompressedPalette(gOldContestPalette, 0, 0x200);
|
||||||
@@ -1328,7 +1328,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
|
|||||||
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
|
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
|
||||||
CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
|
CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
|
||||||
CpuCopy32(tempPalette1, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
|
CpuCopy32(tempPalette1, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
|
||||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.cachedWindowPalettes, sizeof(eUnknownHeap1A004.cachedWindowPalettes));
|
DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, sizeof(eContestTempSave.cachedWindowPalettes));
|
||||||
LoadContestPalettes();
|
LoadContestPalettes();
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
@@ -1468,7 +1468,7 @@ static void Task_DisplayAppealNumberText(u8 taskId)
|
|||||||
gBattle_BG0_Y = 0;
|
gBattle_BG0_Y = 0;
|
||||||
gBattle_BG2_Y = 0;
|
gBattle_BG2_Y = 0;
|
||||||
ContestDebugDoPrint();
|
ContestDebugDoPrint();
|
||||||
DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2);
|
DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
||||||
ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
|
ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||||
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
|
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
|
||||||
StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed);
|
StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed);
|
||||||
@@ -1667,8 +1667,8 @@ static void Task_HideMoveSelectScreen(u8 taskId)
|
|||||||
}
|
}
|
||||||
Contest_SetBgCopyFlags(0);
|
Contest_SetBgCopyFlags(0);
|
||||||
// This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
|
// This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
|
||||||
DmaCopy32Defvars(3, gPlttBufferFaded, eUnknownHeap1A004.unk18604, PLTT_BUFFER_SIZE * 2);
|
DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, PLTT_BUFFER_SIZE * 2);
|
||||||
LoadPalette(eUnknownHeap1A004.unk18204, 0, PLTT_BUFFER_SIZE * 2);
|
LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, PLTT_BUFFER_SIZE * 2);
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].data[0] = 0;
|
||||||
gTasks[taskId].data[1] = 0;
|
gTasks[taskId].data[1] = 0;
|
||||||
gTasks[taskId].func = Task_HideApplauseMeterForAppealStart;
|
gTasks[taskId].func = Task_HideApplauseMeterForAppealStart;
|
||||||
@@ -2554,7 +2554,7 @@ static void Task_WaitForHeartSliders(u8 taskId)
|
|||||||
|
|
||||||
static void sub_80DA348(u8 taskId)
|
static void sub_80DA348(u8 taskId)
|
||||||
{
|
{
|
||||||
DmaCopy32Defvars(3, eUnknownHeap1A004.unk18204, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].data[0] = 0;
|
||||||
gTasks[taskId].data[1] = 2;
|
gTasks[taskId].data[1] = 2;
|
||||||
gTasks[taskId].func = Task_WaitPrintRoundResult;
|
gTasks[taskId].func = Task_WaitPrintRoundResult;
|
||||||
@@ -4412,7 +4412,7 @@ static void DrawContestantWindows(void)
|
|||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
s32 windowId = i + 5;
|
s32 windowId = i + 5;
|
||||||
LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eUnknownHeap1A004.cachedWindowPalettes[0]));
|
LoadPalette(eContestTempSave.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eContestTempSave.cachedWindowPalettes[0]));
|
||||||
}
|
}
|
||||||
DrawContestantWindowText();
|
DrawContestantWindowText();
|
||||||
}
|
}
|
||||||
@@ -5516,40 +5516,46 @@ void ResetContestLinkResults(void)
|
|||||||
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
|
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80DEDA8(u8 rank)
|
bool8 SaveContestWinner(u8 rank)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
u8 r7 = Random() % 3;
|
u8 captionId = Random() % NUM_PAINTING_CAPTIONS;
|
||||||
|
|
||||||
|
// Get the index of the winner among the contestants
|
||||||
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
||||||
{
|
|
||||||
if (gContestFinalStandings[i] == 0)
|
if (gContestFinalStandings[i] == 0)
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
if (rank == 0xFF && i != gContestPlayerMonIndex)
|
// Exit if attempting to save a Pokémon other than the player's to the museum
|
||||||
|
if (rank == CONTEST_SAVE_FOR_MUSEUM && i != gContestPlayerMonIndex)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
// Adjust the random painting caption depending on the category
|
||||||
switch (gSpecialVar_ContestCategory)
|
switch (gSpecialVar_ContestCategory)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
r7 += 0;
|
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_BEAUTY:
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
r7 += 3;
|
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_CUTE:
|
case CONTEST_CATEGORY_CUTE:
|
||||||
r7 += 6;
|
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_SMART:
|
case CONTEST_CATEGORY_SMART:
|
||||||
r7 += 9;
|
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_TOUGH:
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
r7 += 12;
|
captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (rank != 0xFE)
|
|
||||||
{
|
|
||||||
u8 id = sub_80DEFA8(rank, 1);
|
|
||||||
|
|
||||||
|
if (rank != CONTEST_SAVE_FOR_ARTIST)
|
||||||
|
{
|
||||||
|
// Save winner in the saveblock
|
||||||
|
// Used to save any winner for the Contest Hall or the Museum
|
||||||
|
// but excludes the temporary save used by the artist
|
||||||
|
u8 id = GetContestWinnerSaveIdx(rank, TRUE);
|
||||||
gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality;
|
gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality;
|
||||||
gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species;
|
gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species;
|
||||||
gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId;
|
gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId;
|
||||||
@@ -5560,24 +5566,29 @@ bool8 sub_80DEDA8(u8 rank)
|
|||||||
else
|
else
|
||||||
gSaveBlock1Ptr->contestWinners[id].contestRank = gSpecialVar_ContestRank;
|
gSaveBlock1Ptr->contestWinners[id].contestRank = gSpecialVar_ContestRank;
|
||||||
|
|
||||||
if (rank != 0xFF)
|
if (rank != CONTEST_SAVE_FOR_MUSEUM)
|
||||||
gSaveBlock1Ptr->contestWinners[id].contestCategory = gSpecialVar_ContestCategory;
|
gSaveBlock1Ptr->contestWinners[id].contestCategory = gSpecialVar_ContestCategory;
|
||||||
else
|
else
|
||||||
gSaveBlock1Ptr->contestWinners[id].contestCategory = r7;
|
gSaveBlock1Ptr->contestWinners[id].contestCategory = captionId;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Set the most recent winner so the artist can show the player their painting
|
||||||
gCurContestWinner.personality = gContestMons[i].personality;
|
gCurContestWinner.personality = gContestMons[i].personality;
|
||||||
gCurContestWinner.trainerId = gContestMons[i].otId;
|
gCurContestWinner.trainerId = gContestMons[i].otId;
|
||||||
gCurContestWinner.species = gContestMons[i].species;
|
gCurContestWinner.species = gContestMons[i].species;
|
||||||
StringCopy(gCurContestWinner.monName, gContestMons[i].nickname);
|
StringCopy(gCurContestWinner.monName, gContestMons[i].nickname);
|
||||||
StringCopy(gCurContestWinner.trainerName, gContestMons[i].trainerName);
|
StringCopy(gCurContestWinner.trainerName, gContestMons[i].trainerName);
|
||||||
gCurContestWinner.contestCategory = r7;
|
gCurContestWinner.contestCategory = captionId;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 sub_80DEFA8(u8 rank, u8 b)
|
// Rank is either a regular contest rank (for saving winners to show in the Contest Hall)
|
||||||
|
// Or one of two special IDs listed below (for saving winners to show in Museum, or from the artist)
|
||||||
|
// If just retrieving the index where the winner *would* go, shift is FALSE
|
||||||
|
// If actually preparing to insert the winner into the saveblock, shift is TRUE
|
||||||
|
u8 GetContestWinnerSaveIdx(u8 rank, bool8 shift)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
@@ -5587,13 +5598,15 @@ u8 sub_80DEFA8(u8 rank, u8 b)
|
|||||||
case CONTEST_RANK_SUPER:
|
case CONTEST_RANK_SUPER:
|
||||||
case CONTEST_RANK_HYPER:
|
case CONTEST_RANK_HYPER:
|
||||||
case CONTEST_RANK_MASTER:
|
case CONTEST_RANK_MASTER:
|
||||||
if (b != 0)
|
if (shift)
|
||||||
{
|
{
|
||||||
for (i = NUM_CONTEST_HALL_WINNERS - 1; i >= 1; i--)
|
for (i = NUM_CONTEST_HALL_WINNERS - 1; i > 0; i--)
|
||||||
memcpy(&gSaveBlock1Ptr->contestWinners[i], &gSaveBlock1Ptr->contestWinners[i - 1], sizeof(struct ContestWinner));
|
memcpy(&gSaveBlock1Ptr->contestWinners[i], &gSaveBlock1Ptr->contestWinners[i - 1], sizeof(struct ContestWinner));
|
||||||
}
|
}
|
||||||
return 0;
|
return CONTEST_WINNER_HALL_1 - 1;
|
||||||
default:
|
default:
|
||||||
|
// case CONTEST_SAVE_FOR_MUSEUM:
|
||||||
|
// case CONTEST_SAVE_FOR_ARTIST:
|
||||||
switch (gSpecialVar_ContestCategory)
|
switch (gSpecialVar_ContestCategory)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
@@ -5615,7 +5628,7 @@ void ClearContestWinnerPicsInContestHall(void)
|
|||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < MUSEUM_CONTEST_WINNERS_START; i++)
|
||||||
gSaveBlock1Ptr->contestWinners[i] = gDefaultContestWinners[i];
|
gSaveBlock1Ptr->contestWinners[i] = gDefaultContestWinners[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+130
-125
@@ -21,18 +21,16 @@
|
|||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
// IWRAM common
|
|
||||||
u16 (*gContestMonPixels)[][32];
|
u16 (*gContestMonPixels)[][32];
|
||||||
struct ImageProcessingContext gImageProcessingContext;
|
struct ImageProcessingContext gImageProcessingContext;
|
||||||
struct ContestWinner *gContestPaintingWinner;
|
struct ContestWinner *gContestPaintingWinner;
|
||||||
u16 *gContestPaintingMonPalette;
|
u16 *gContestPaintingMonPalette;
|
||||||
|
|
||||||
// IWRAM bss
|
static u8 sHoldState;
|
||||||
static u8 gContestPaintingState;
|
static u16 sMosaicVal;
|
||||||
static u16 gContestPaintingMosaicVal;
|
static u16 sFadeCounter;
|
||||||
static u16 gContestPaintingFadeCounter;
|
static bool8 sVarsInitialized;
|
||||||
static bool8 gUnknown_030011F6;
|
static u8 sWindowId;
|
||||||
static u8 gContestPaintingWindowId;
|
|
||||||
|
|
||||||
static void ShowContestPainting(void);
|
static void ShowContestPainting(void);
|
||||||
static void HoldContestPainting(void);
|
static void HoldContestPainting(void);
|
||||||
@@ -44,7 +42,7 @@ static void PrintContestPaintingCaption(u8, u8);
|
|||||||
static void VBlankCB_ContestPainting(void);
|
static void VBlankCB_ContestPainting(void);
|
||||||
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]);
|
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]);
|
||||||
|
|
||||||
extern const u8 gContestPaintingCaption[];
|
extern const u8 gContestHallPaintingCaption[];
|
||||||
extern const u8 gContestCoolness[];
|
extern const u8 gContestCoolness[];
|
||||||
extern const u8 gContestBeauty[];
|
extern const u8 gContestBeauty[];
|
||||||
extern const u8 gContestCuteness[];
|
extern const u8 gContestCuteness[];
|
||||||
@@ -71,39 +69,39 @@ extern const u8 gContestPaintingTough1[];
|
|||||||
extern const u8 gContestPaintingTough2[];
|
extern const u8 gContestPaintingTough2[];
|
||||||
extern const u8 gContestPaintingTough3[];
|
extern const u8 gContestPaintingTough3[];
|
||||||
|
|
||||||
const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
|
static const u16 sPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
|
||||||
const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
|
static const u8 sPictureFrameTiles_Cool[] = INCBIN_U8("graphics/picture_frame/cool.4bpp.rl");
|
||||||
const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
|
static const u8 sPictureFrameTiles_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty.4bpp.rl");
|
||||||
const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
|
static const u8 sPictureFrameTiles_Cute[] = INCBIN_U8("graphics/picture_frame/cute.4bpp.rl");
|
||||||
const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
|
static const u8 sPictureFrameTiles_Smart[] = INCBIN_U8("graphics/picture_frame/smart.4bpp.rl");
|
||||||
const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
|
static const u8 sPictureFrameTiles_Tough[] = INCBIN_U8("graphics/picture_frame/tough.4bpp.rl");
|
||||||
const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
|
static const u8 sPictureFrameTiles_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby.4bpp.rl");
|
||||||
const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
|
static const u8 sPictureFrameTilemap_Cool[] = INCBIN_U8("graphics/picture_frame/cool_map.bin.rl");
|
||||||
const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
|
static const u8 sPictureFrameTilemap_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty_map.bin.rl");
|
||||||
const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
|
static const u8 sPictureFrameTilemap_Cute[] = INCBIN_U8("graphics/picture_frame/cute_map.bin.rl");
|
||||||
const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
|
static const u8 sPictureFrameTilemap_Smart[] = INCBIN_U8("graphics/picture_frame/smart_map.bin.rl");
|
||||||
const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
|
static const u8 sPictureFrameTilemap_Tough[] = INCBIN_U8("graphics/picture_frame/tough_map.bin.rl");
|
||||||
const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
|
static const u8 sPictureFrameTilemap_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby_map.bin.rl");
|
||||||
|
|
||||||
static const u8 *const sContestCategoryNames_Unused[] =
|
static const u8 *const sContestCategoryNames_Unused[] =
|
||||||
{
|
{
|
||||||
gContestCoolness,
|
[CONTEST_CATEGORY_COOL] = gContestCoolness,
|
||||||
gContestBeauty,
|
[CONTEST_CATEGORY_BEAUTY] = gContestBeauty,
|
||||||
gContestCuteness,
|
[CONTEST_CATEGORY_CUTE] = gContestCuteness,
|
||||||
gContestSmartness,
|
[CONTEST_CATEGORY_SMART] = gContestSmartness,
|
||||||
gContestToughness,
|
[CONTEST_CATEGORY_TOUGH] = gContestToughness,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 *const sContestRankNames[] =
|
static const u8 *const sContestRankNames[] =
|
||||||
{
|
{
|
||||||
gContestRankNormal,
|
[CONTEST_RANK_NORMAL] = gContestRankNormal,
|
||||||
gContestRankSuper,
|
[CONTEST_RANK_SUPER] = gContestRankSuper,
|
||||||
gContestRankHyper,
|
[CONTEST_RANK_HYPER] = gContestRankHyper,
|
||||||
gContestRankMaster,
|
[CONTEST_RANK_MASTER] = gContestRankMaster,
|
||||||
gContestLink,
|
[CONTEST_RANK_LINK] = gContestLink,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct BgTemplate sContestPaintingBgTemplates[] =
|
static const struct BgTemplate sBgTemplates[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.bg = 1,
|
.bg = 1,
|
||||||
@@ -116,7 +114,7 @@ static const struct BgTemplate sContestPaintingBgTemplates[] =
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct WindowTemplate sContestPaintingWindowTemplate =
|
static const struct WindowTemplate sWindowTemplate =
|
||||||
{
|
{
|
||||||
.bg = 1,
|
.bg = 1,
|
||||||
.tilemapLeft = 2,
|
.tilemapLeft = 2,
|
||||||
@@ -127,23 +125,23 @@ static const struct WindowTemplate sContestPaintingWindowTemplate =
|
|||||||
.baseBlock = 1,
|
.baseBlock = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 *const sContestPaintingDescriptionPointers[] =
|
static const u8 *const sMuseumCaptions[NUM_PAINTING_CAPTIONS * CONTEST_CATEGORIES_COUNT] =
|
||||||
{
|
{
|
||||||
gContestPaintingCool1,
|
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool1,
|
||||||
gContestPaintingCool2,
|
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool2,
|
||||||
gContestPaintingCool3,
|
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool3,
|
||||||
gContestPaintingBeauty1,
|
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty1,
|
||||||
gContestPaintingBeauty2,
|
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty2,
|
||||||
gContestPaintingBeauty3,
|
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty3,
|
||||||
gContestPaintingCute1,
|
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute1,
|
||||||
gContestPaintingCute2,
|
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute2,
|
||||||
gContestPaintingCute3,
|
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute3,
|
||||||
gContestPaintingSmart1,
|
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart1,
|
||||||
gContestPaintingSmart2,
|
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart2,
|
||||||
gContestPaintingSmart3,
|
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart3,
|
||||||
gContestPaintingTough1,
|
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough1,
|
||||||
gContestPaintingTough2,
|
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough2,
|
||||||
gContestPaintingTough3,
|
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough3,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct OamData sContestPaintingMonOamData =
|
static const struct OamData sContestPaintingMonOamData =
|
||||||
@@ -161,15 +159,15 @@ static const struct OamData sContestPaintingMonOamData =
|
|||||||
.paletteNum = 0,
|
.paletteNum = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)};
|
static const u16 sBgPalette[] = {RGB_BLACK, RGB_BLACK};
|
||||||
|
|
||||||
void SetContestWinnerForPainting(int contestWinnerId)
|
void SetContestWinnerForPainting(int contestWinnerId)
|
||||||
{
|
{
|
||||||
u8 *ptr1 = &gUnknown_02039F5D;
|
u8 *saveIdx = &gCurContestWinnerSaveIdx;
|
||||||
u8 *ptr2 = &gUnknown_02039F5C;
|
u8 *isForArtist = &gCurContestWinnerIsForArtist;
|
||||||
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
|
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
|
||||||
*ptr1 = contestWinnerId - 1;
|
*saveIdx = contestWinnerId - 1;
|
||||||
*ptr2 = FALSE;
|
*isForArtist = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CB2_ContestPainting(void)
|
void CB2_ContestPainting(void)
|
||||||
@@ -189,7 +187,7 @@ static void CB2_QuitContestPainting(void)
|
|||||||
SetMainCallback2(gMain.savedCallback);
|
SetMainCallback2(gMain.savedCallback);
|
||||||
FREE_AND_SET_NULL(gContestPaintingMonPalette);
|
FREE_AND_SET_NULL(gContestPaintingMonPalette);
|
||||||
FREE_AND_SET_NULL(gContestMonPixels);
|
FREE_AND_SET_NULL(gContestMonPixels);
|
||||||
RemoveWindow(gContestPaintingWindowId);
|
RemoveWindow(sWindowId);
|
||||||
Free(GetBgTilemapBuffer(1));
|
Free(GetBgTilemapBuffer(1));
|
||||||
FreeMonSpritesGfx();
|
FreeMonSpritesGfx();
|
||||||
}
|
}
|
||||||
@@ -203,13 +201,13 @@ static void ShowContestPainting(void)
|
|||||||
SetVBlankCallback(NULL);
|
SetVBlankCallback(NULL);
|
||||||
AllocateMonSpritesGfx();
|
AllocateMonSpritesGfx();
|
||||||
gContestPaintingWinner = &gCurContestWinner;
|
gContestPaintingWinner = &gCurContestWinner;
|
||||||
InitContestPaintingVars(1);
|
InitContestPaintingVars(TRUE);
|
||||||
InitContestPaintingBg();
|
InitContestPaintingBg();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
ResetPaletteFade();
|
ResetPaletteFade();
|
||||||
DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000);
|
DmaFillLarge32(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
|
||||||
ResetSpriteData();
|
ResetSpriteData();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
@@ -220,16 +218,16 @@ static void ShowContestPainting(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
CreateContestPaintingPicture(gUnknown_02039F5D, gUnknown_02039F5C);
|
CreateContestPaintingPicture(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C);
|
PrintContestPaintingCaption(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
|
||||||
LoadPalette(gUnknown_085B0838, 0, 1 * 2);
|
LoadPalette(sBgPalette, 0, 1 * 2);
|
||||||
DmaClear32(3, PLTT, PLTT_SIZE);
|
DmaClear32(3, PLTT, PLTT_SIZE);
|
||||||
BeginFastPaletteFade(2);
|
BeginFastPaletteFade(2);
|
||||||
SetVBlankCallback(VBlankCB_ContestPainting);
|
SetVBlankCallback(VBlankCB_ContestPainting);
|
||||||
gContestPaintingState = 0;
|
sHoldState = 0;
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
|
||||||
SetMainCallback2(CB2_HoldContestPainting);
|
SetMainCallback2(CB2_HoldContestPainting);
|
||||||
break;
|
break;
|
||||||
@@ -238,29 +236,29 @@ static void ShowContestPainting(void)
|
|||||||
|
|
||||||
static void HoldContestPainting(void)
|
static void HoldContestPainting(void)
|
||||||
{
|
{
|
||||||
switch (gContestPaintingState)
|
switch (sHoldState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
gContestPaintingState = 1;
|
sHoldState = 1;
|
||||||
if (gUnknown_030011F6 && gContestPaintingFadeCounter)
|
if (sVarsInitialized && sFadeCounter)
|
||||||
gContestPaintingFadeCounter--;
|
sFadeCounter--;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
|
if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
|
||||||
{
|
{
|
||||||
gContestPaintingState++;
|
sHoldState++;
|
||||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB(0, 0, 0));
|
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB(0, 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gUnknown_030011F6)
|
if (sVarsInitialized)
|
||||||
gContestPaintingFadeCounter = 0;
|
sFadeCounter = 0;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
SetMainCallback2(CB2_QuitContestPainting);
|
SetMainCallback2(CB2_QuitContestPainting);
|
||||||
if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30)
|
if (sVarsInitialized && sFadeCounter < 30)
|
||||||
gContestPaintingFadeCounter++;
|
sFadeCounter++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,45 +266,48 @@ static void HoldContestPainting(void)
|
|||||||
static void InitContestPaintingWindow(void)
|
static void InitContestPaintingWindow(void)
|
||||||
{
|
{
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
InitBgsFromTemplates(0, sContestPaintingBgTemplates, ARRAY_COUNT(sContestPaintingBgTemplates));
|
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
|
||||||
ChangeBgX(1, 0, 0);
|
ChangeBgX(1, 0, 0);
|
||||||
ChangeBgY(1, 0, 0);
|
ChangeBgY(1, 0, 0);
|
||||||
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
|
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
|
||||||
gContestPaintingWindowId = AddWindow(&sContestPaintingWindowTemplate);
|
sWindowId = AddWindow(&sWindowTemplate);
|
||||||
DeactivateAllTextPrinters();
|
DeactivateAllTextPrinters();
|
||||||
FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0));
|
FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0));
|
||||||
PutWindowTilemap(gContestPaintingWindowId);
|
PutWindowTilemap(sWindowId);
|
||||||
CopyWindowToVram(gContestPaintingWindowId, 3);
|
CopyWindowToVram(sWindowId, 3);
|
||||||
ShowBg(1);
|
ShowBg(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PrintContestPaintingCaption(u8 contestType, bool8 arg1)
|
static void PrintContestPaintingCaption(u8 contestType, bool8 isForArtist)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
u8 category;
|
u8 category;
|
||||||
|
|
||||||
if (arg1 == TRUE)
|
// Artist's painting has no caption
|
||||||
|
if (isForArtist == TRUE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
category = gContestPaintingWinner->contestCategory;
|
category = gContestPaintingWinner->contestCategory;
|
||||||
if (contestType < 8)
|
if (contestType < MUSEUM_CONTEST_WINNERS_START)
|
||||||
{
|
{
|
||||||
|
// Contest Hall caption
|
||||||
BufferContestName(gStringVar1, category);
|
BufferContestName(gStringVar1, category);
|
||||||
StringAppend(gStringVar1, gText_Space);
|
StringAppend(gStringVar1, gText_Space);
|
||||||
StringAppend(gStringVar1, sContestRankNames[gContestPaintingWinner->contestRank]);
|
StringAppend(gStringVar1, sContestRankNames[gContestPaintingWinner->contestRank]);
|
||||||
StringCopy(gStringVar2, gContestPaintingWinner->trainerName);
|
StringCopy(gStringVar2, gContestPaintingWinner->trainerName);
|
||||||
sub_81DB5AC(gStringVar2);
|
ConvertInternationalContestantName(gStringVar2);
|
||||||
StringCopy(gStringVar3, gContestPaintingWinner->monName);
|
StringCopy(gStringVar3, gContestPaintingWinner->monName);
|
||||||
StringExpandPlaceholders(gStringVar4, gContestPaintingCaption);
|
StringExpandPlaceholders(gStringVar4, gContestHallPaintingCaption);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Museum caption
|
||||||
StringCopy(gStringVar1, gContestPaintingWinner->monName);
|
StringCopy(gStringVar1, gContestPaintingWinner->monName);
|
||||||
StringExpandPlaceholders(gStringVar4, sContestPaintingDescriptionPointers[category]);
|
StringExpandPlaceholders(gStringVar4, sMuseumCaptions[category]);
|
||||||
}
|
}
|
||||||
|
|
||||||
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
|
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
|
||||||
AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0);
|
AddTextPrinterParameterized(sWindowId, 1, gStringVar4, x, 1, 0, 0);
|
||||||
CopyBgTilemapBufferToVram(1);
|
CopyBgTilemapBufferToVram(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,33 +322,34 @@ static void InitContestPaintingBg(void)
|
|||||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void InitContestPaintingVars(bool8 arg0)
|
static void InitContestPaintingVars(bool8 reset)
|
||||||
{
|
{
|
||||||
if (arg0 == FALSE)
|
if (reset == FALSE)
|
||||||
{
|
{
|
||||||
gUnknown_030011F6 = FALSE;
|
// Never reached
|
||||||
gContestPaintingMosaicVal = 0;
|
sVarsInitialized = FALSE;
|
||||||
gContestPaintingFadeCounter = 0;
|
sMosaicVal = 0;
|
||||||
|
sFadeCounter = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gUnknown_030011F6 = TRUE;
|
sVarsInitialized = TRUE;
|
||||||
gContestPaintingMosaicVal = 15;
|
sMosaicVal = 15;
|
||||||
gContestPaintingFadeCounter = 30;
|
sFadeCounter = 30;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void UpdateContestPaintingMosaicEffect(void)
|
static void UpdateContestPaintingMosaicEffect(void)
|
||||||
{
|
{
|
||||||
if (!gUnknown_030011F6)
|
if (!sVarsInitialized)
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_MOSAIC, 0);
|
SetGpuReg(REG_OFFSET_MOSAIC, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
|
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
|
||||||
gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2;
|
sMosaicVal = sFadeCounter / 2;
|
||||||
SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0));
|
SetGpuReg(REG_OFFSET_MOSAIC, (sMosaicVal << 12) | (sMosaicVal << 8) | (sMosaicVal << 4) | (sMosaicVal << 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -414,34 +416,35 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
|
|||||||
|
|
||||||
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
||||||
|
|
||||||
static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
|
static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 isForArtist)
|
||||||
{
|
{
|
||||||
u8 x, y;
|
u8 x, y;
|
||||||
|
|
||||||
LoadPalette(gPictureFramePalettes, 0, 0x100);
|
LoadPalette(sPictureFramePalettes, 0, 0x100);
|
||||||
if (arg1 == TRUE)
|
if (isForArtist == TRUE)
|
||||||
{
|
{
|
||||||
switch (gContestPaintingWinner->contestCategory / 3)
|
// Load Artist's frame
|
||||||
|
switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
|
||||||
RLUnCompWram(gPictureFrameTilemap_0, gContestMonPixels);
|
RLUnCompWram(sPictureFrameTilemap_Cool, gContestMonPixels);
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_BEAUTY:
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
|
||||||
RLUnCompWram(gPictureFrameTilemap_1, gContestMonPixels);
|
RLUnCompWram(sPictureFrameTilemap_Beauty, gContestMonPixels);
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_CUTE:
|
case CONTEST_CATEGORY_CUTE:
|
||||||
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
|
||||||
RLUnCompWram(gPictureFrameTilemap_2, gContestMonPixels);
|
RLUnCompWram(sPictureFrameTilemap_Cute, gContestMonPixels);
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_SMART:
|
case CONTEST_CATEGORY_SMART:
|
||||||
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
|
||||||
RLUnCompWram(gPictureFrameTilemap_3, gContestMonPixels);
|
RLUnCompWram(sPictureFrameTilemap_Smart, gContestMonPixels);
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_TOUGH:
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
|
||||||
RLUnCompWram(gPictureFrameTilemap_4, gContestMonPixels);
|
RLUnCompWram(sPictureFrameTilemap_Tough, gContestMonPixels);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -463,34 +466,36 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
|
|||||||
for (x = 0; x < 16; x++)
|
for (x = 0; x < 16; x++)
|
||||||
VRAM_PICTURE_DATA(x + 7, 2) = (*gContestMonPixels)[2][7];
|
VRAM_PICTURE_DATA(x + 7, 2) = (*gContestMonPixels)[2][7];
|
||||||
}
|
}
|
||||||
else if (contestWinnerId < 8)
|
else if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
|
||||||
{
|
{
|
||||||
RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
|
// Load Contest Hall lobby frame
|
||||||
RLUnCompVram(gPictureFrameTilemap_5, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTiles_HallLobby, (void *)VRAM);
|
||||||
|
RLUnCompVram(sPictureFrameTilemap_HallLobby, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (gContestPaintingWinner->contestCategory / 3)
|
// Load Museum frame
|
||||||
|
switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
|
||||||
RLUnCompVram(gPictureFrameTilemap_0, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTilemap_Cool, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_BEAUTY:
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
|
||||||
RLUnCompVram(gPictureFrameTilemap_1, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTilemap_Beauty, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_CUTE:
|
case CONTEST_CATEGORY_CUTE:
|
||||||
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
|
||||||
RLUnCompVram(gPictureFrameTilemap_2, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTilemap_Cute, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_SMART:
|
case CONTEST_CATEGORY_SMART:
|
||||||
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
|
||||||
RLUnCompVram(gPictureFrameTilemap_3, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTilemap_Smart, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_TOUGH:
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
|
RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
|
||||||
RLUnCompVram(gPictureFrameTilemap_4, (void *)(BG_SCREEN_ADDR(12)));
|
RLUnCompVram(sPictureFrameTilemap_Tough, (void *)(BG_SCREEN_ADDR(12)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -519,10 +524,10 @@ static u8 GetImageEffectForContestWinner(u8 contestWinnerId)
|
|||||||
{
|
{
|
||||||
u8 contestCategory;
|
u8 contestCategory;
|
||||||
|
|
||||||
if (contestWinnerId < 8)
|
if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
|
||||||
contestCategory = gContestPaintingWinner->contestCategory;
|
contestCategory = gContestPaintingWinner->contestCategory;
|
||||||
else
|
else
|
||||||
contestCategory = gContestPaintingWinner->contestCategory / 3;
|
contestCategory = gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS;
|
||||||
|
|
||||||
switch (contestCategory)
|
switch (contestCategory)
|
||||||
{
|
{
|
||||||
@@ -584,12 +589,12 @@ static void DoContestPaintingImageProcessing(u8 imageEffect)
|
|||||||
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
|
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 arg1)
|
static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 isForArtist)
|
||||||
{
|
{
|
||||||
AllocPaintingResources();
|
AllocPaintingResources();
|
||||||
InitContestMonPixels(gContestPaintingWinner->species, 0);
|
InitContestMonPixels(gContestPaintingWinner->species, 0);
|
||||||
DoContestPaintingImageProcessing(GetImageEffectForContestWinner(contestWinnerId));
|
DoContestPaintingImageProcessing(GetImageEffectForContestWinner(contestWinnerId));
|
||||||
InitPaintingMonOamData(contestWinnerId);
|
InitPaintingMonOamData(contestWinnerId);
|
||||||
LoadContestPaintingFrame(contestWinnerId, arg1);
|
LoadContestPaintingFrame(contestWinnerId, isForArtist);
|
||||||
}
|
}
|
||||||
|
|
||||||
+167
-132
@@ -61,10 +61,29 @@ enum {
|
|||||||
|
|
||||||
#define GET_CONTEST_WINNER_ID(i) { for ((i) = 0; (i) < CONTESTANT_COUNT && gContestFinalStandings[(i)] != 0; (i)++); }
|
#define GET_CONTEST_WINNER_ID(i) { for ((i) = 0; (i) < CONTESTANT_COUNT && gContestFinalStandings[(i)] != 0; (i)++); }
|
||||||
|
|
||||||
|
// Gfx/pal tags for the text window sprites on the contest results screen.
|
||||||
|
// Both types of text windows are made up of 4 individual sprites
|
||||||
|
// These tags are used by the spritesheets, and implicitly in the loop in CreateResultsTextWindowSprites
|
||||||
|
#define TAG_TEXT_WINDOW_BASE 3009
|
||||||
|
enum {
|
||||||
|
TAG_RESULTS_TEXT_WINDOW_LEFT = TAG_TEXT_WINDOW_BASE,
|
||||||
|
TAG_RESULTS_TEXT_WINDOW_MIDLEFT,
|
||||||
|
TAG_RESULTS_TEXT_WINDOW_MIDRIGHT,
|
||||||
|
TAG_RESULTS_TEXT_WINDOW_RIGHT,
|
||||||
|
TAG_LINK_TEXT_WINDOW_LEFT,
|
||||||
|
TAG_LINK_TEXT_WINDOW_MIDLEFT,
|
||||||
|
TAG_LINK_TEXT_WINDOW_MIDRIGHT,
|
||||||
|
TAG_LINK_TEXT_WINDOW_RIGHT, // 3016
|
||||||
|
};
|
||||||
#define TAG_CONFETTI 3017
|
#define TAG_CONFETTI 3017
|
||||||
|
#define TAG_WIRELESS_INDICATOR_WINDOW 22222
|
||||||
|
|
||||||
#define MAX_BAR_LENGTH 87
|
#define MAX_BAR_LENGTH 87
|
||||||
|
|
||||||
|
// Starting x/y for the sliding results screen text box
|
||||||
|
#define TEXT_BOX_X (DISPLAY_WIDTH + 32)
|
||||||
|
#define TEXT_BOX_Y (DISPLAY_HEIGHT - 16)
|
||||||
|
|
||||||
struct ContestResultsInternal
|
struct ContestResultsInternal
|
||||||
{
|
{
|
||||||
u8 slidingTextBoxSpriteId;
|
u8 slidingTextBoxSpriteId;
|
||||||
@@ -105,14 +124,14 @@ struct ContestResults
|
|||||||
static EWRAM_DATA struct ContestResults *sContestResults = NULL;
|
static EWRAM_DATA struct ContestResults *sContestResults = NULL;
|
||||||
|
|
||||||
static void LoadAllContestMonIconPalettes(void);
|
static void LoadAllContestMonIconPalettes(void);
|
||||||
static void LoadContestResultsTilemaps(void);
|
static void LoadContestResultsTitleBarTilemaps(void);
|
||||||
static u8 GetNumPreliminaryPoints(u8, bool8);
|
static u8 GetNumPreliminaryPoints(u8, bool8);
|
||||||
static s8 GetNumRound2Points(u8, bool8);
|
static s8 GetNumRound2Points(u8, bool8);
|
||||||
static void AddContestTextPrinter(int, u8 *, int);
|
static void AddContestTextPrinter(int, u8 *, int);
|
||||||
static void AllocContestResults(void);
|
static void AllocContestResults(void);
|
||||||
static void FreeContestResults(void);
|
static void FreeContestResults(void);
|
||||||
static void LoadAllContestMonIcons(u8, u8);
|
static void LoadAllContestMonIcons(u8, u8);
|
||||||
static void LoadContestResultSprites(void);
|
static void CreateResultsTextWindowSprites(void);
|
||||||
static void TryCreateWirelessSprites(void);
|
static void TryCreateWirelessSprites(void);
|
||||||
static void Task_StartShowContestResults(u8 taskId);
|
static void Task_StartShowContestResults(u8 taskId);
|
||||||
static void CB2_StartShowContestResults(void);
|
static void CB2_StartShowContestResults(void);
|
||||||
@@ -166,11 +185,11 @@ static void SpriteCB_Confetti(struct Sprite *sprite);
|
|||||||
static void Task_ShowContestEntryMonPic(u8 taskId);
|
static void Task_ShowContestEntryMonPic(u8 taskId);
|
||||||
static void Task_LinkContestWaitForConnection(u8 taskId);
|
static void Task_LinkContestWaitForConnection(u8 taskId);
|
||||||
|
|
||||||
static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal");
|
static const u16 sResultsTextWindow_Pal[] = INCBIN_U16("graphics/contest/results_screen/text_window.gbapal");
|
||||||
static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp");
|
static const u8 sResultsTextWindow_Gfx[] = INCBIN_U8("graphics/contest/results_screen/text_window.4bpp");
|
||||||
static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
|
static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
|
||||||
|
|
||||||
static const struct OamData sOamData_858D7F0 =
|
static const struct OamData sOamData_ResultsTextWindow =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = ST_OAM_AFFINE_OFF,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
@@ -187,33 +206,33 @@ static const struct OamData sOamData_858D7F0 =
|
|||||||
.affineParam = 0,
|
.affineParam = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteTemplate sSpriteTemplate_858D7F8 =
|
static const struct SpriteTemplate sSpriteTemplate_ResultsTextWindow =
|
||||||
{
|
{
|
||||||
.tileTag = 3009,
|
.tileTag = TAG_TEXT_WINDOW_BASE,
|
||||||
.paletteTag = 3009,
|
.paletteTag = TAG_TEXT_WINDOW_BASE,
|
||||||
.oam = &sOamData_858D7F0,
|
.oam = &sOamData_ResultsTextWindow,
|
||||||
.anims = gDummySpriteAnimTable,
|
.anims = gDummySpriteAnimTable,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = SpriteCallbackDummy
|
.callback = SpriteCallbackDummy
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet sUnknown_0858D810[] =
|
static const struct SpriteSheet sSpriteSheets_ResultsTextWindow[] =
|
||||||
{
|
{
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3009 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_LEFT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3010 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDLEFT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3011 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDRIGHT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3012 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_RIGHT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3013 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_LEFT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3014 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDLEFT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3015 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDRIGHT },
|
||||||
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3016 },
|
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_RIGHT },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpritePalette sUnknown_0858D850 =
|
static const struct SpritePalette sSpritePalette_ResultsTextWindow =
|
||||||
{
|
{
|
||||||
.data = sMiscBlank_Pal,
|
.data = sMiscBlank_Pal,
|
||||||
.tag = 3009,
|
.tag = TAG_TEXT_WINDOW_BASE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct OamData sOamData_Confetti =
|
static const struct OamData sOamData_Confetti =
|
||||||
@@ -339,7 +358,7 @@ static const struct WindowTemplate sWindowTemplates[] =
|
|||||||
DUMMY_WIN_TEMPLATE,
|
DUMMY_WIN_TEMPLATE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct OamData sUnknown_0858D8C0 =
|
static const struct OamData sOamData_WirelessIndicatorWindow =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = ST_OAM_AFFINE_OFF,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
@@ -357,22 +376,22 @@ static const struct OamData sUnknown_0858D8C0 =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static const struct SpriteTemplate sSpriteTemplate_858D8C8 =
|
static const struct SpriteTemplate sSpriteTemplate_WirelessIndicatorWindow =
|
||||||
{
|
{
|
||||||
.tileTag = 22222,
|
.tileTag = TAG_WIRELESS_INDICATOR_WINDOW,
|
||||||
.paletteTag = 0,
|
.paletteTag = 0,
|
||||||
.oam = &sUnknown_0858D8C0,
|
.oam = &sOamData_WirelessIndicatorWindow,
|
||||||
.anims = gDummySpriteAnimTable,
|
.anims = gDummySpriteAnimTable,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = SpriteCallbackDummy
|
.callback = SpriteCallbackDummy
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet sUnknown_0858D8E0 =
|
static const struct SpriteSheet sSpriteSheet_WirelessIndicatorWindow =
|
||||||
{
|
{
|
||||||
.data = gMiscBlank_Gfx,
|
.data = gMiscBlank_Gfx,
|
||||||
.size = 0x200,
|
.size = 0x200,
|
||||||
.tag = 22222
|
.tag = TAG_WIRELESS_INDICATOR_WINDOW
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 sContestLinkTextColors[4] = {TEXT_COLOR_WHITE, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
|
static const u8 sContestLinkTextColors[4] = {TEXT_COLOR_WHITE, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
|
||||||
@@ -430,12 +449,12 @@ static void LoadContestResultsBgGfx(void)
|
|||||||
u16 tile1, tile2;
|
u16 tile1, tile2;
|
||||||
|
|
||||||
LZDecompressVram(gContestResults_Gfx, (void *)BG_CHAR_ADDR(0));
|
LZDecompressVram(gContestResults_Gfx, (void *)BG_CHAR_ADDR(0));
|
||||||
CopyToBgTilemapBuffer(3, gUnknown_08C1A12C, 0, 0);
|
CopyToBgTilemapBuffer(3, gContestResults_Bg_Tilemap, 0, 0);
|
||||||
CopyToBgTilemapBuffer(2, gUnknown_08C1A000, 0, 0);
|
CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0);
|
||||||
CopyToBgTilemapBuffer(0, gUnknown_08C19EEC, 0, 0);
|
CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0);
|
||||||
LoadContestResultsTilemaps();
|
LoadContestResultsTitleBarTilemaps();
|
||||||
LoadCompressedPalette(gContestResults_Pal, 0, 0x200);
|
LoadCompressedPalette(gContestResults_Pal, 0, 0x200);
|
||||||
LoadPalette(sUnknown_0858D6B0, 0xF0, 0x20);
|
LoadPalette(sResultsTextWindow_Pal, 0xF0, sizeof(sResultsTextWindow_Pal));
|
||||||
|
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
@@ -515,14 +534,14 @@ static void CB2_StartShowContestResults(void)
|
|||||||
LoadAllContestMonNames();
|
LoadAllContestMonNames();
|
||||||
memset(sContestResults->data, 0, sizeof(*sContestResults->data));
|
memset(sContestResults->data, 0, sizeof(*sContestResults->data));
|
||||||
memset(sContestResults->monResults, 0, sizeof(*sContestResults->monResults));
|
memset(sContestResults->monResults, 0, sizeof(*sContestResults->monResults));
|
||||||
LoadContestResultSprites();
|
CreateResultsTextWindowSprites();
|
||||||
TryCreateWirelessSprites();
|
TryCreateWirelessSprites();
|
||||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
|
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
|
||||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||||
sContestResults->data->showResultsTaskId = CreateTask(Task_ShowContestResults, 5);
|
sContestResults->data->showResultsTaskId = CreateTask(Task_ShowContestResults, 5);
|
||||||
SetMainCallback2(CB2_ShowContestResults);
|
SetMainCallback2(CB2_ShowContestResults);
|
||||||
gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH);
|
gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH);
|
||||||
gBattle_WIN1V = WIN_RANGE(128, DISPLAY_HEIGHT);
|
gBattle_WIN1V = WIN_RANGE(DISPLAY_HEIGHT - 32, DISPLAY_HEIGHT);
|
||||||
CreateTask(Task_SlideContestResultsBg, 20);
|
CreateTask(Task_SlideContestResultsBg, 20);
|
||||||
CalculateContestantsResultData();
|
CalculateContestantsResultData();
|
||||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
|
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
|
||||||
@@ -587,10 +606,10 @@ static void Task_ShowContestResults(u8 taskId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
||||||
sub_80DEDA8(gSpecialVar_ContestRank);
|
SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
|
||||||
sub_80DEDA8(0xFE);
|
SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
|
||||||
gUnknown_02039F5C = TRUE;
|
gCurContestWinnerIsForArtist = TRUE;
|
||||||
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
|
gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
|
||||||
var = VarGet(VAR_CONTEST_HALL_STATE);
|
var = VarGet(VAR_CONTEST_HALL_STATE);
|
||||||
VarSet(VAR_CONTEST_HALL_STATE, 0);
|
VarSet(VAR_CONTEST_HALL_STATE, 0);
|
||||||
SetContinueGameWarpStatusToDynamicWarp();
|
SetContinueGameWarpStatusToDynamicWarp();
|
||||||
@@ -637,10 +656,10 @@ static void Task_ShowContestResults(u8 taskId)
|
|||||||
if (gContestFinalStandings[gContestPlayerMonIndex] == 0)
|
if (gContestFinalStandings[gContestPlayerMonIndex] == 0)
|
||||||
IncrementGameStat(GAME_STAT_WON_CONTEST);
|
IncrementGameStat(GAME_STAT_WON_CONTEST);
|
||||||
|
|
||||||
sub_80DEDA8(gSpecialVar_ContestRank);
|
SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
|
||||||
sub_80DEDA8(0xFE);
|
SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
|
||||||
gUnknown_02039F5C = TRUE;
|
gCurContestWinnerIsForArtist = TRUE;
|
||||||
gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
|
gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
|
||||||
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
|
||||||
gTasks[taskId].func = Task_AnnouncePreliminaryResults;
|
gTasks[taskId].func = Task_AnnouncePreliminaryResults;
|
||||||
}
|
}
|
||||||
@@ -679,7 +698,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
|
|||||||
{
|
{
|
||||||
CreateTask(Task_FlashStarsAndHearts, 20);
|
CreateTask(Task_FlashStarsAndHearts, 20);
|
||||||
x = DrawResultsTextWindow(gText_AnnouncingResults, sContestResults->data->slidingTextBoxSpriteId);
|
x = DrawResultsTextWindow(gText_AnnouncingResults, sContestResults->data->slidingTextBoxSpriteId);
|
||||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, 120, 1088);
|
StartTextBoxSlideIn(x, TEXT_BOX_Y, 120, 1088);
|
||||||
gTasks[taskId].tState++;
|
gTasks[taskId].tState++;
|
||||||
}
|
}
|
||||||
else if (gTasks[taskId].tState == 1)
|
else if (gTasks[taskId].tState == 1)
|
||||||
@@ -702,7 +721,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
|
|||||||
else if (gTasks[taskId].tState == 3)
|
else if (gTasks[taskId].tState == 3)
|
||||||
{
|
{
|
||||||
x = DrawResultsTextWindow(gText_PreliminaryResults, sContestResults->data->slidingTextBoxSpriteId);
|
x = DrawResultsTextWindow(gText_PreliminaryResults, sContestResults->data->slidingTextBoxSpriteId);
|
||||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||||
gTasks[taskId].tState++;
|
gTasks[taskId].tState++;
|
||||||
}
|
}
|
||||||
else if (gTasks[taskId].tState == 4)
|
else if (gTasks[taskId].tState == 4)
|
||||||
@@ -752,7 +771,7 @@ static void Task_AnnounceRound2Results(u8 taskId)
|
|||||||
{
|
{
|
||||||
gTasks[taskId].tTimer = 0;
|
gTasks[taskId].tTimer = 0;
|
||||||
x = DrawResultsTextWindow(gText_Round2Results, sContestResults->data->slidingTextBoxSpriteId);
|
x = DrawResultsTextWindow(gText_Round2Results, sContestResults->data->slidingTextBoxSpriteId);
|
||||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sContestResults->data->slidingTextBoxState == SLIDING_TEXT_ARRIVED)
|
else if (sContestResults->data->slidingTextBoxState == SLIDING_TEXT_ARRIVED)
|
||||||
@@ -837,11 +856,11 @@ static void Task_AnnounceWinner(u8 taskId)
|
|||||||
gTasks[taskId].tTimer = 0;
|
gTasks[taskId].tTimer = 0;
|
||||||
GET_CONTEST_WINNER_ID(i);
|
GET_CONTEST_WINNER_ID(i);
|
||||||
StringCopy(gStringVar1, gContestMons[i].trainerName);
|
StringCopy(gStringVar1, gContestMons[i].trainerName);
|
||||||
sub_81DB5AC(gStringVar1);
|
ConvertInternationalContestantName(gStringVar1);
|
||||||
StringCopy(gStringVar2, gContestMons[i].nickname);
|
StringCopy(gStringVar2, gContestMons[i].nickname);
|
||||||
StringExpandPlaceholders(winnerTextBuffer, gText_ContestantsMonWon);
|
StringExpandPlaceholders(winnerTextBuffer, gText_ContestantsMonWon);
|
||||||
x = DrawResultsTextWindow(winnerTextBuffer, sContestResults->data->slidingTextBoxSpriteId);
|
x = DrawResultsTextWindow(winnerTextBuffer, sContestResults->data->slidingTextBoxSpriteId);
|
||||||
StartTextBoxSlideIn(x, DISPLAY_HEIGHT - 16, -1, 1088);
|
StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
|
||||||
gTasks[taskId].tState++;
|
gTasks[taskId].tState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -892,7 +911,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
|
|||||||
LoadCompressedSpritePalette(pokePal);
|
LoadCompressedSpritePalette(pokePal);
|
||||||
SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT);
|
SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT);
|
||||||
gMultiuseSpriteTemplate.paletteTag = pokePal->tag;
|
gMultiuseSpriteTemplate.paletteTag = pokePal->tag;
|
||||||
spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, 80, 10);
|
spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10);
|
||||||
gSprites[spriteId].data[1] = species;
|
gSprites[spriteId].data[1] = species;
|
||||||
gSprites[spriteId].oam.priority = 0;
|
gSprites[spriteId].oam.priority = 0;
|
||||||
gSprites[spriteId].callback = SpriteCB_WinnerMonSlideIn;
|
gSprites[spriteId].callback = SpriteCB_WinnerMonSlideIn;
|
||||||
@@ -1136,9 +1155,9 @@ static void TryCreateWirelessSprites(void)
|
|||||||
LoadWirelessStatusIndicatorSpriteGfx();
|
LoadWirelessStatusIndicatorSpriteGfx();
|
||||||
CreateWirelessStatusIndicatorSprite(8, 8);
|
CreateWirelessStatusIndicatorSprite(8, 8);
|
||||||
gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1;
|
gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1;
|
||||||
sheet = LoadSpriteSheet(&sUnknown_0858D8E0);
|
sheet = LoadSpriteSheet(&sSpriteSheet_WirelessIndicatorWindow);
|
||||||
RequestDma3Fill(0xFFFFFFFF, (void *)BG_CHAR_ADDR(4) + sheet * 0x20, 0x80, 1);
|
RequestDma3Fill(0xFFFFFFFF, (void *)BG_CHAR_ADDR(4) + sheet * 0x20, 0x80, 1);
|
||||||
spriteId = CreateSprite(&sSpriteTemplate_858D8C8, 8, 8, 0);
|
spriteId = CreateSprite(&sSpriteTemplate_WirelessIndicatorWindow, 8, 8, 0);
|
||||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
|
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1150,14 +1169,13 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
|||||||
int strWidth;
|
int strWidth;
|
||||||
u8 *spriteTilePtrs[4];
|
u8 *spriteTilePtrs[4];
|
||||||
u8 *dst;
|
u8 *dst;
|
||||||
{
|
|
||||||
struct WindowTemplate windowTemplate;
|
struct WindowTemplate windowTemplate;
|
||||||
memset(&windowTemplate, 0, sizeof(windowTemplate));
|
memset(&windowTemplate, 0, sizeof(windowTemplate));
|
||||||
windowTemplate.width = 30;
|
windowTemplate.width = 30;
|
||||||
windowTemplate.height = 2;
|
windowTemplate.height = 2;
|
||||||
windowId = AddWindow(&windowTemplate);
|
windowId = AddWindow(&windowTemplate);
|
||||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
|
||||||
}
|
|
||||||
|
|
||||||
origWidth = GetStringWidth(1, text, 0);
|
origWidth = GetStringWidth(1, text, 0);
|
||||||
strWidth = (origWidth + 9) / 8;
|
strWidth = (origWidth + 9) / 8;
|
||||||
@@ -1169,16 +1187,16 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
|||||||
s32 i;
|
s32 i;
|
||||||
struct Sprite *sprite;
|
struct Sprite *sprite;
|
||||||
const u8 *src, *windowTilesPtr;
|
const u8 *src, *windowTilesPtr;
|
||||||
windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
|
windowTilesPtr = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
|
||||||
src = (u8 *)(sUnknown_0858D6D0);
|
src = (u8 *)sResultsTextWindow_Gfx;
|
||||||
|
|
||||||
sprite = &gSprites[spriteId];
|
sprite = &gSprites[spriteId];
|
||||||
spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + OBJ_VRAM0);
|
spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + OBJ_VRAM0);
|
||||||
|
|
||||||
for (i = 1; i < 4; i++)
|
for (i = 1; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
|
||||||
spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + OBJ_VRAM0);
|
spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + OBJ_VRAM0);
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
|
||||||
CpuFill32(0, spriteTilePtrs[i], 0x400);
|
CpuFill32(0, spriteTilePtrs[i], 0x400);
|
||||||
|
|
||||||
dst = spriteTilePtrs[0];
|
dst = spriteTilePtrs[0];
|
||||||
@@ -1208,27 +1226,31 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
|
|||||||
return (DISPLAY_WIDTH - (strWidth + 2) * 8) / 2;
|
return (DISPLAY_WIDTH - (strWidth + 2) * 8) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadContestResultSprites(void)
|
static void CreateResultsTextWindowSprites(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct SpriteTemplate template;
|
struct SpriteTemplate template;
|
||||||
u8 spriteIds[ARRAY_COUNT(sUnknown_0858D810)];
|
u8 spriteIds[ARRAY_COUNT(sSpriteSheets_ResultsTextWindow)];
|
||||||
|
|
||||||
template = sSpriteTemplate_858D7F8;
|
template = sSpriteTemplate_ResultsTextWindow;
|
||||||
for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
|
for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
|
||||||
LoadSpriteSheet(&sUnknown_0858D810[i]);
|
LoadSpriteSheet(&sSpriteSheets_ResultsTextWindow[i]);
|
||||||
|
|
||||||
LoadSpritePalette(&sUnknown_0858D850);
|
LoadSpritePalette(&sSpritePalette_ResultsTextWindow);
|
||||||
for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
|
|
||||||
|
// Create sprites for the two window types, each made up of 4 sprites
|
||||||
|
for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
|
||||||
{
|
{
|
||||||
spriteIds[i] = CreateSprite(&template, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT - 16, 10);
|
spriteIds[i] = CreateSprite(&template, TEXT_BOX_X, TEXT_BOX_Y, 10);
|
||||||
template.tileTag++;
|
template.tileTag++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save sprite ids of the sliding text box onto its leftmost sprite
|
||||||
gSprites[spriteIds[0]].data[0] = spriteIds[1];
|
gSprites[spriteIds[0]].data[0] = spriteIds[1];
|
||||||
gSprites[spriteIds[0]].data[1] = spriteIds[2];
|
gSprites[spriteIds[0]].data[1] = spriteIds[2];
|
||||||
gSprites[spriteIds[0]].data[2] = spriteIds[3];
|
gSprites[spriteIds[0]].data[2] = spriteIds[3];
|
||||||
|
|
||||||
|
// Save sprite ids of the link text box onto its leftmost sprite
|
||||||
gSprites[spriteIds[4]].data[0] = spriteIds[5];
|
gSprites[spriteIds[4]].data[0] = spriteIds[5];
|
||||||
gSprites[spriteIds[4]].data[1] = spriteIds[6];
|
gSprites[spriteIds[4]].data[1] = spriteIds[6];
|
||||||
gSprites[spriteIds[4]].data[2] = spriteIds[7];
|
gSprites[spriteIds[4]].data[2] = spriteIds[7];
|
||||||
@@ -1248,7 +1270,7 @@ static void LoadContestResultSprites(void)
|
|||||||
static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrement)
|
static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrement)
|
||||||
{
|
{
|
||||||
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
|
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
|
||||||
sprite->pos1.x = DISPLAY_WIDTH + 32;
|
sprite->pos1.x = TEXT_BOX_X;
|
||||||
sprite->pos1.y = y;
|
sprite->pos1.y = y;
|
||||||
sprite->pos2.x = 0;
|
sprite->pos2.x = 0;
|
||||||
sprite->pos2.y = 0;
|
sprite->pos2.y = 0;
|
||||||
@@ -1275,8 +1297,8 @@ static void StartTextBoxSlideOut(u16 slideIncrement)
|
|||||||
|
|
||||||
static void EndTextBoxSlideOut(struct Sprite *sprite)
|
static void EndTextBoxSlideOut(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->pos1.x = DISPLAY_WIDTH + 32;
|
sprite->pos1.x = TEXT_BOX_X;
|
||||||
sprite->pos1.y = DISPLAY_HEIGHT - 16;
|
sprite->pos1.y = TEXT_BOX_Y;
|
||||||
sprite->pos2.y = 0;
|
sprite->pos2.y = 0;
|
||||||
sprite->pos2.x = 0;
|
sprite->pos2.x = 0;
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
@@ -1377,7 +1399,7 @@ static void HideLinkResultsTextBox(void)
|
|||||||
| WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
|
| WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadContestResultsTilemaps(void)
|
static void LoadContestResultsTitleBarTilemaps(void)
|
||||||
{
|
{
|
||||||
u8 palette;
|
u8 palette;
|
||||||
int x, y;
|
int x, y;
|
||||||
@@ -1386,58 +1408,58 @@ static void LoadContestResultsTilemaps(void)
|
|||||||
y = 1;
|
y = 1;
|
||||||
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
|
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
|
||||||
{
|
{
|
||||||
CopyToBgTilemapBufferRect(2, gLinkContestResults_Tilemap, 5, 1, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Link_Tilemap, 5, 1, 5, 2);
|
||||||
x = 10;
|
x = 10;
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_NORMAL)
|
else if (gSpecialVar_ContestRank == CONTEST_RANK_NORMAL)
|
||||||
{
|
{
|
||||||
CopyToBgTilemapBufferRect(2, gNormalContestResults_Tilemap, 5, 1, 10, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Normal_Tilemap, 5, 1, 10, 2);
|
||||||
x = 15;
|
x = 15;
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_SUPER)
|
else if (gSpecialVar_ContestRank == CONTEST_RANK_SUPER)
|
||||||
{
|
{
|
||||||
CopyToBgTilemapBufferRect(2, gSuperContestResults_Tilemap, 5, 1, 10, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Super_Tilemap, 5, 1, 10, 2);
|
||||||
x = 15;
|
x = 15;
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestRank == CONTEST_RANK_HYPER)
|
else if (gSpecialVar_ContestRank == CONTEST_RANK_HYPER)
|
||||||
{
|
{
|
||||||
CopyToBgTilemapBufferRect(2, gHyperContestResults_Tilemap, 5, 1, 10, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Hyper_Tilemap, 5, 1, 10, 2);
|
||||||
x = 15;
|
x = 15;
|
||||||
}
|
}
|
||||||
else // CONTEST_RANK_MASTER
|
else // CONTEST_RANK_MASTER
|
||||||
{
|
{
|
||||||
CopyToBgTilemapBufferRect(2, gMasterContestResults_Tilemap, 5, 1, 10, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Master_Tilemap, 5, 1, 10, 2);
|
||||||
x = 15;
|
x = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_COOL)
|
if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_COOL)
|
||||||
{
|
{
|
||||||
palette = 0;
|
palette = 0;
|
||||||
CopyToBgTilemapBufferRect(2, gCoolContestResults_Tilemap, x, y, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cool_Tilemap, x, y, 5, 2);
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_BEAUTY)
|
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_BEAUTY)
|
||||||
{
|
{
|
||||||
palette = 1;
|
palette = 1;
|
||||||
CopyToBgTilemapBufferRect(2, gBeautyContestResults_Tilemap, x, y, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Beauty_Tilemap, x, y, 5, 2);
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_CUTE)
|
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_CUTE)
|
||||||
{
|
{
|
||||||
palette = 2;
|
palette = 2;
|
||||||
CopyToBgTilemapBufferRect(2, gCuteContestResults_Tilemap, x, y, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cute_Tilemap, x, y, 5, 2);
|
||||||
}
|
}
|
||||||
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_SMART)
|
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_SMART)
|
||||||
{
|
{
|
||||||
palette = 3;
|
palette = 3;
|
||||||
CopyToBgTilemapBufferRect(2, gSmartContestResults_Tilemap, x, y, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Smart_Tilemap, x, y, 5, 2);
|
||||||
}
|
}
|
||||||
else // CONTEST_CATEGORY_TOUGH
|
else // CONTEST_CATEGORY_TOUGH
|
||||||
{
|
{
|
||||||
palette = 4;
|
palette = 4;
|
||||||
CopyToBgTilemapBufferRect(2, gToughContestResults_Tilemap, x, y, 5, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tough_Tilemap, x, y, 5, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
x += 5;
|
x += 5;
|
||||||
CopyToBgTilemapBufferRect(2, gContestResults_Tilemap, x, y, 6, 2);
|
CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tilemap, x, y, 6, 2);
|
||||||
CopyToBgTilemapBufferRect_ChangePalette(2, sContestResults->tilemapBuffers[2], 0, 0, 32, 4, palette);
|
CopyToBgTilemapBufferRect_ChangePalette(2, sContestResults->tilemapBuffers[2], 0, 0, 32, 4, palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1567,10 +1589,10 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
|
|||||||
sprite->pos1.x -= delta >> 8;
|
sprite->pos1.x -= delta >> 8;
|
||||||
sprite->data[1] += 0x600;
|
sprite->data[1] += 0x600;
|
||||||
sprite->data[1] &= 0xFF;
|
sprite->data[1] &= 0xFF;
|
||||||
if (sprite->pos1.x < 120)
|
if (sprite->pos1.x < DISPLAY_WIDTH / 2)
|
||||||
sprite->pos1.x = 120;
|
sprite->pos1.x = DISPLAY_WIDTH / 2;
|
||||||
|
|
||||||
if (sprite->pos1.x == 120)
|
if (sprite->pos1.x == DISPLAY_WIDTH / 2)
|
||||||
{
|
{
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
sprite->data[1] = 0;
|
sprite->data[1] = 0;
|
||||||
@@ -1628,7 +1650,7 @@ static void SpriteCB_Confetti(struct Sprite *sprite)
|
|||||||
if (sContestResults->data->destroyConfetti)
|
if (sContestResults->data->destroyConfetti)
|
||||||
sprite->invisible = TRUE;
|
sprite->invisible = TRUE;
|
||||||
|
|
||||||
if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
|
if (sprite->pos1.x > DISPLAY_WIDTH + 8 || sprite->pos1.y > 116)
|
||||||
{
|
{
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
sContestResults->data->confettiCount--;
|
sContestResults->data->confettiCount--;
|
||||||
@@ -2035,7 +2057,7 @@ void GiveMonContestRibbon(void)
|
|||||||
void BufferContestantTrainerName(void)
|
void BufferContestantTrainerName(void)
|
||||||
{
|
{
|
||||||
StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
|
StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
|
||||||
sub_81DB5AC(gStringVar1);
|
ConvertInternationalContestantName(gStringVar1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferContestantMonNickname(void)
|
void BufferContestantMonNickname(void)
|
||||||
@@ -2074,7 +2096,7 @@ void BufferContestWinnerTrainerName(void)
|
|||||||
u8 i;
|
u8 i;
|
||||||
GET_CONTEST_WINNER_ID(i);
|
GET_CONTEST_WINNER_ID(i);
|
||||||
StringCopy(gStringVar3, gContestMons[i].trainerName);
|
StringCopy(gStringVar3, gContestMons[i].trainerName);
|
||||||
sub_81DB5AC(gStringVar3);
|
ConvertInternationalContestantName(gStringVar3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferContestWinnerMonName(void)
|
void BufferContestWinnerMonName(void)
|
||||||
@@ -2257,6 +2279,10 @@ static void Task_LinkContest_WaitDisconnect(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
A section of contest script functions starts here
|
||||||
|
*/
|
||||||
|
|
||||||
void SetContestTrainerGfxIds(void)
|
void SetContestTrainerGfxIds(void)
|
||||||
{
|
{
|
||||||
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
|
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
|
||||||
@@ -2265,27 +2291,27 @@ void SetContestTrainerGfxIds(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Unused
|
// Unused
|
||||||
void sub_80F8814(void)
|
void GetNpcContestantLocalId(void)
|
||||||
{
|
{
|
||||||
u16 var1;
|
u16 localId;
|
||||||
u8 var0 = gSpecialVar_0x8005;
|
u8 contestant = gSpecialVar_0x8005;
|
||||||
switch (var0)
|
switch (contestant)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
var1 = 3;
|
localId = 3;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
var1 = 4;
|
localId = 4;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
var1 = 5;
|
localId = 5;
|
||||||
break;
|
break;
|
||||||
default:
|
default: // Invalid
|
||||||
var1 = 100;
|
localId = 100;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gSpecialVar_0x8004 = var1;
|
gSpecialVar_0x8004 = localId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferContestTrainerAndMonNames(void)
|
void BufferContestTrainerAndMonNames(void)
|
||||||
@@ -2296,26 +2322,26 @@ void BufferContestTrainerAndMonNames(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Unused
|
// Unused
|
||||||
void DoesContestCategoryHaveWinner(void)
|
void DoesContestCategoryHaveMuseumPainting(void)
|
||||||
{
|
{
|
||||||
int contestWinner;
|
int contestWinner;
|
||||||
switch (gSpecialVar_ContestCategory)
|
switch (gSpecialVar_ContestCategory)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
contestWinner = 8;
|
contestWinner = CONTEST_WINNER_MUSEUM_COOL - 1;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_BEAUTY:
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
contestWinner = 9;
|
contestWinner = CONTEST_WINNER_MUSEUM_BEAUTY - 1;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_CUTE:
|
case CONTEST_CATEGORY_CUTE:
|
||||||
contestWinner = 10;
|
contestWinner = CONTEST_WINNER_MUSEUM_CUTE - 1;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_SMART:
|
case CONTEST_CATEGORY_SMART:
|
||||||
contestWinner = 11;
|
contestWinner = CONTEST_WINNER_MUSEUM_SMART - 1;
|
||||||
break;
|
break;
|
||||||
case CONTEST_CATEGORY_TOUGH:
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
default:
|
default:
|
||||||
contestWinner = 12;
|
contestWinner = CONTEST_WINNER_MUSEUM_TOUGH - 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2327,7 +2353,7 @@ void DoesContestCategoryHaveWinner(void)
|
|||||||
|
|
||||||
void SaveMuseumContestPainting(void)
|
void SaveMuseumContestPainting(void)
|
||||||
{
|
{
|
||||||
sub_80DEDA8(0xFF);
|
SaveContestWinner(CONTEST_SAVE_FOR_MUSEUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShouldReadyContestArtist(void)
|
void ShouldReadyContestArtist(void)
|
||||||
@@ -2344,14 +2370,14 @@ void ShouldReadyContestArtist(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 CountPlayerContestPaintings(void)
|
u8 CountPlayerMuseumPaintings(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u8 count = 0;
|
u8 count = 0;
|
||||||
|
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < NUM_CONTEST_WINNERS - MUSEUM_CONTEST_WINNERS_START; i++)
|
||||||
{
|
{
|
||||||
if (gSaveBlock1Ptr->contestWinners[8 + i].species)
|
if (gSaveBlock1Ptr->contestWinners[MUSEUM_CONTEST_WINNERS_START + i].species)
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2359,19 +2385,21 @@ u8 CountPlayerContestPaintings(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Unused
|
// Unused
|
||||||
void sub_80F8970(void)
|
void GetContestantNamesAtRank(void)
|
||||||
{
|
{
|
||||||
s16 conditions[CONTESTANT_COUNT];
|
s16 conditions[CONTESTANT_COUNT];
|
||||||
int i, j;
|
int i, j;
|
||||||
s16 condition;
|
s16 condition;
|
||||||
s8 var0;
|
s8 numAtCondition;
|
||||||
u8 var2;
|
u8 contestantOffset;
|
||||||
u8 r8;
|
u8 tieRank;
|
||||||
u8 r7;
|
u8 rank;
|
||||||
|
|
||||||
|
// Get round 1 points
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
conditions[i] = gContestMonRound1Points[i];
|
conditions[i] = gContestMonRound1Points[i];
|
||||||
|
|
||||||
|
// Sort round 1 points
|
||||||
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
|
||||||
{
|
{
|
||||||
for (j = CONTESTANT_COUNT - 1; j > i; j--)
|
for (j = CONTESTANT_COUNT - 1; j > i; j--)
|
||||||
@@ -2384,58 +2412,65 @@ void sub_80F8970(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get round 1 points at specified rank
|
||||||
condition = conditions[gSpecialVar_0x8006];
|
condition = conditions[gSpecialVar_0x8006];
|
||||||
var0 = 0;
|
|
||||||
r8 = 0;
|
// Count number of contestants with the same number of points
|
||||||
|
numAtCondition = 0;
|
||||||
|
tieRank = 0;
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (conditions[i] == condition)
|
if (conditions[i] == condition)
|
||||||
{
|
{
|
||||||
var0++;
|
numAtCondition++;
|
||||||
if (i == gSpecialVar_0x8006)
|
if (i == gSpecialVar_0x8006)
|
||||||
r8 = var0;
|
tieRank = numAtCondition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get rank of first contestant with the same number of points
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (conditions[i] == condition)
|
if (conditions[i] == condition)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
rank = i;
|
||||||
|
|
||||||
r7 = i;
|
// Get contestant id of player at rank (taking ties into account)
|
||||||
var2 = r8;
|
contestantOffset = tieRank;
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (condition == gContestMonRound1Points[i])
|
if (condition == gContestMonRound1Points[i])
|
||||||
{
|
{
|
||||||
if (var2 == 1)
|
if (contestantOffset == 1)
|
||||||
break;
|
break;
|
||||||
var2--;
|
contestantOffset--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use contestant id to get names
|
||||||
StringCopy(gStringVar1, gContestMons[i].nickname);
|
StringCopy(gStringVar1, gContestMons[i].nickname);
|
||||||
StringCopy(gStringVar2, gContestMons[i].trainerName);
|
StringCopy(gStringVar2, gContestMons[i].trainerName);
|
||||||
sub_81DB5AC(gStringVar2);
|
ConvertInternationalContestantName(gStringVar2);
|
||||||
|
|
||||||
if (var0 == 1)
|
// Return adjusted rank
|
||||||
gSpecialVar_0x8006 = r7;
|
if (numAtCondition == 1)
|
||||||
else if (r8 == var0)
|
gSpecialVar_0x8006 = rank;
|
||||||
gSpecialVar_0x8006 = r7;
|
else if (tieRank == numAtCondition)
|
||||||
|
gSpecialVar_0x8006 = rank;
|
||||||
else
|
else
|
||||||
gSpecialVar_0x8006 = r7 + 4;
|
gSpecialVar_0x8006 = rank + CONTESTANT_COUNT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ExitContestWinnerPainting(void)
|
static void ExitContestPainting(void)
|
||||||
{
|
{
|
||||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowContestWinnerPainting(void)
|
void ShowContestPainting(void)
|
||||||
{
|
{
|
||||||
SetMainCallback2(CB2_ContestPainting);
|
SetMainCallback2(CB2_ContestPainting);
|
||||||
gMain.savedCallback = ExitContestWinnerPainting;
|
gMain.savedCallback = ExitContestPainting;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetLinkContestPlayerGfx(void)
|
void SetLinkContestPlayerGfx(void)
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
|
|
||||||
const struct ContestWinner gDefaultContestWinners[] =
|
const struct ContestWinner gDefaultContestWinners[] =
|
||||||
{
|
{
|
||||||
{
|
[CONTEST_WINNER_HALL_1 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_ELECTRIKE,
|
.species = SPECIES_ELECTRIKE,
|
||||||
@@ -147,7 +147,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("EZRA"),
|
.trainerName = _("EZRA"),
|
||||||
.contestRank = CONTEST_RANK_NORMAL
|
.contestRank = CONTEST_RANK_NORMAL
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_2 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_TROPIUS,
|
.species = SPECIES_TROPIUS,
|
||||||
@@ -156,7 +156,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("ALLAN"),
|
.trainerName = _("ALLAN"),
|
||||||
.contestRank = CONTEST_RANK_HYPER
|
.contestRank = CONTEST_RANK_HYPER
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_3 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_XATU,
|
.species = SPECIES_XATU,
|
||||||
@@ -165,7 +165,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("JULIET"),
|
.trainerName = _("JULIET"),
|
||||||
.contestRank = CONTEST_RANK_NORMAL
|
.contestRank = CONTEST_RANK_NORMAL
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_4 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_PLUSLE,
|
.species = SPECIES_PLUSLE,
|
||||||
@@ -174,7 +174,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("BAILY"),
|
.trainerName = _("BAILY"),
|
||||||
.contestRank = CONTEST_RANK_MASTER
|
.contestRank = CONTEST_RANK_MASTER
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_5 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_SHUPPET,
|
.species = SPECIES_SHUPPET,
|
||||||
@@ -183,7 +183,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("MELANY"),
|
.trainerName = _("MELANY"),
|
||||||
.contestRank = CONTEST_RANK_SUPER
|
.contestRank = CONTEST_RANK_SUPER
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_6 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_ZANGOOSE,
|
.species = SPECIES_ZANGOOSE,
|
||||||
@@ -192,7 +192,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("HANA"),
|
.trainerName = _("HANA"),
|
||||||
.contestRank = CONTEST_RANK_HYPER
|
.contestRank = CONTEST_RANK_HYPER
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_UNUSED_1 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_LOUDRED,
|
.species = SPECIES_LOUDRED,
|
||||||
@@ -201,7 +201,7 @@ const struct ContestWinner gDefaultContestWinners[] =
|
|||||||
.trainerName = _("BRYANT"),
|
.trainerName = _("BRYANT"),
|
||||||
.contestRank = CONTEST_RANK_HYPER
|
.contestRank = CONTEST_RANK_HYPER
|
||||||
},
|
},
|
||||||
{
|
[CONTEST_WINNER_HALL_UNUSED_2 - 1] = {
|
||||||
.personality = 0,
|
.personality = 0,
|
||||||
.trainerId = 0xFFFF,
|
.trainerId = 0xFFFF,
|
||||||
.species = SPECIES_DELCATTY,
|
.species = SPECIES_DELCATTY,
|
||||||
|
|||||||
+16
-16
@@ -471,11 +471,11 @@ const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4b
|
|||||||
const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
|
const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
|
||||||
const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
|
const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
|
||||||
|
|
||||||
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen.4bpp.lz");
|
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen/tiles.4bpp.lz");
|
||||||
const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
|
const u32 gContestResults_WinnerBanner_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/winner_banner.bin.lz");
|
||||||
const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
|
const u32 gContestResults_Interface_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/interface.bin.lz");
|
||||||
const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
|
const u32 gContestResults_Bg_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/bg.bin.lz");
|
||||||
const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen.gbapal.lz");
|
const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen/tiles.gbapal.lz");
|
||||||
|
|
||||||
const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz");
|
||||||
const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz");
|
const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz");
|
||||||
@@ -1296,17 +1296,17 @@ const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp");
|
|||||||
|
|
||||||
// contest results screen
|
// contest results screen
|
||||||
|
|
||||||
const u16 gNormalContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_normal.bin");
|
const u16 gContestResultsTitle_Normal_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_normal.bin");
|
||||||
const u16 gSuperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_super.bin");
|
const u16 gContestResultsTitle_Super_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_super.bin");
|
||||||
const u16 gHyperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_hyper.bin");
|
const u16 gContestResultsTitle_Hyper_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_hyper.bin");
|
||||||
const u16 gMasterContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_master.bin");
|
const u16 gContestResultsTitle_Master_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_master.bin");
|
||||||
const u16 gLinkContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_link.bin");
|
const u16 gContestResultsTitle_Link_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_link.bin");
|
||||||
const u16 gCoolContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cool.bin");
|
const u16 gContestResultsTitle_Cool_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cool.bin");
|
||||||
const u16 gBeautyContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_beauty.bin");
|
const u16 gContestResultsTitle_Beauty_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_beauty.bin");
|
||||||
const u16 gCuteContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cute.bin");
|
const u16 gContestResultsTitle_Cute_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cute.bin");
|
||||||
const u16 gSmartContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_smart.bin");
|
const u16 gContestResultsTitle_Smart_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_smart.bin");
|
||||||
const u16 gToughContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_tough.bin");
|
const u16 gContestResultsTitle_Tough_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_tough.bin");
|
||||||
const u16 gContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen.bin");
|
const u16 gContestResultsTitle_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title.bin");
|
||||||
|
|
||||||
// pokenav
|
// pokenav
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ void ConvertInternationalPlayerNameStripChar(u8 *str, u8 removeChar)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81DB5AC(u8 *str)
|
void ConvertInternationalContestantName(u8 *str)
|
||||||
{
|
{
|
||||||
if (*str++ == EXT_CTRL_CODE_BEGIN && *str++ == EXT_CTRL_CODE_JPN)
|
if (*str++ == EXT_CTRL_CODE_BEGIN && *str++ == EXT_CTRL_CODE_JPN)
|
||||||
{
|
{
|
||||||
|
|||||||
+3
-5
@@ -48,23 +48,19 @@
|
|||||||
|
|
||||||
extern const u8 EventScript_ResetAllMapFlags[];
|
extern const u8 EventScript_ResetAllMapFlags[];
|
||||||
|
|
||||||
// this file's functions
|
|
||||||
static void ClearFrontierRecord(void);
|
static void ClearFrontierRecord(void);
|
||||||
static void WarpToTruck(void);
|
static void WarpToTruck(void);
|
||||||
static void ResetMiniGamesRecords(void);
|
static void ResetMiniGamesRecords(void);
|
||||||
|
|
||||||
// EWRAM vars
|
|
||||||
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
||||||
EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
|
EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
|
||||||
|
|
||||||
// const rom data
|
|
||||||
static const struct ContestWinner sContestWinnerPicDummy =
|
static const struct ContestWinner sContestWinnerPicDummy =
|
||||||
{
|
{
|
||||||
.monName = _(""),
|
.monName = _(""),
|
||||||
.trainerName = _("")
|
.trainerName = _("")
|
||||||
};
|
};
|
||||||
|
|
||||||
// code
|
|
||||||
void SetTrainerId(u32 trainerId, u8 *dst)
|
void SetTrainerId(u32 trainerId, u8 *dst)
|
||||||
{
|
{
|
||||||
dst[0] = trainerId;
|
dst[0] = trainerId;
|
||||||
@@ -114,7 +110,9 @@ void ClearAllContestWinnerPics(void)
|
|||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
ClearContestWinnerPicsInContestHall();
|
ClearContestWinnerPicsInContestHall();
|
||||||
for (i = 8; i < 13; i++)
|
|
||||||
|
// Clear Museum paintings
|
||||||
|
for (i = MUSEUM_CONTEST_WINNERS_START; i < NUM_CONTEST_WINNERS; i++)
|
||||||
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1466,15 +1466,15 @@ bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
|
bool8 ScrCmd_showcontestpainting(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
u8 contestWinnerId = ScriptReadByte(ctx);
|
u8 contestWinnerId = ScriptReadByte(ctx);
|
||||||
|
|
||||||
// Don't save artist's painting yet
|
// Artist's painting is temporary and already has its data loaded
|
||||||
if (contestWinnerId != CONTEST_WINNER_ARTIST)
|
if (contestWinnerId != CONTEST_WINNER_ARTIST)
|
||||||
SetContestWinnerForPainting(contestWinnerId);
|
SetContestWinnerForPainting(contestWinnerId);
|
||||||
|
|
||||||
ShowContestWinnerPainting();
|
ShowContestPainting();
|
||||||
ScriptContext1_Stop();
|
ScriptContext1_Stop();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -661,7 +661,7 @@ u32 CountPlayerTrainerStars(void)
|
|||||||
stars++;
|
stars++;
|
||||||
if (HasAllHoennMons())
|
if (HasAllHoennMons())
|
||||||
stars++;
|
stars++;
|
||||||
if (CountPlayerContestPaintings() > 4)
|
if (CountPlayerMuseumPaintings() >= CONTEST_CATEGORIES_COUNT)
|
||||||
stars++;
|
stars++;
|
||||||
if (HasAllFrontierSymbols())
|
if (HasAllFrontierSymbols())
|
||||||
stars++;
|
stars++;
|
||||||
@@ -735,7 +735,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
|
|||||||
case CARD_TYPE_FRLG:
|
case CARD_TYPE_FRLG:
|
||||||
trainerCard->contestsWithFriends = GetCappedGameStat(GAME_STAT_WON_LINK_CONTEST, 999);
|
trainerCard->contestsWithFriends = GetCappedGameStat(GAME_STAT_WON_LINK_CONTEST, 999);
|
||||||
trainerCard->pokeblocksWithFriends = GetCappedGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF);
|
trainerCard->pokeblocksWithFriends = GetCappedGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF);
|
||||||
if (CountPlayerContestPaintings() > 4)
|
if (CountPlayerMuseumPaintings() >= CONTEST_CATEGORIES_COUNT)
|
||||||
trainerCard->hasAllPaintings = TRUE;
|
trainerCard->hasAllPaintings = TRUE;
|
||||||
trainerCard->stars = GetRubyTrainerStars(trainerCard);
|
trainerCard->stars = GetRubyTrainerStars(trainerCard);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in new issue
Block a user