Merge pull request #1079 from GriffinRichards/doc-confetti
Document Contest Util and confetti effects
This commit is contained in:
48 files changed
+1271
-1132
No files matched your search
@@ -172,7 +172,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_WonTourney:: @ 824BF62
|
|||||||
BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney:: @ 824BF96
|
BattleFrontier_BattleDomeBattleRoom_EventScript_WonLvOpenTourney:: @ 824BF96
|
||||||
msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp, MSGBOX_DEFAULT
|
msgbox BattleFrontier_BattleDomeBattleRoom_Text_PlayerIsLvOpenChamp, MSGBOX_DEFAULT
|
||||||
BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin:: @ 824BF9E
|
BattleFrontier_BattleDomeBattleRoom_EventScript_CelebrateWin:: @ 824BF9E
|
||||||
special DoConfettiEffect
|
special DoDomeConfetti
|
||||||
playse SE_W227B
|
playse SE_W227B
|
||||||
call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround
|
call BattleFrontier_BattleDomeBattleRoom_EventScript_AudienceLookAround
|
||||||
delay 60
|
delay 60
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_OpponentEnter:: @ 8241BC3
|
|||||||
BattleFrontier_BattleTower_EventScript_WarpToLobbyLost:: @ 8241C03
|
BattleFrontier_BattleTower_EventScript_WarpToLobbyLost:: @ 8241C03
|
||||||
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST
|
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST
|
||||||
tower_set TOWER_DATA_LVL_MODE
|
tower_set TOWER_DATA_LVL_MODE
|
||||||
setvar VAR_0x8004, 3
|
setvar VAR_0x8004, FANCOUNTER_USED_BATTLE_TOWER
|
||||||
special Script_TryGainNewFanFromCounter
|
special Script_TryGainNewFanFromCounter
|
||||||
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_ContinueChallenge:: @ 8241DDC
|
|||||||
BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon:: @ 8241DF6
|
BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobbyWon:: @ 8241DF6
|
||||||
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON
|
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON
|
||||||
tower_set TOWER_DATA_LVL_MODE
|
tower_set TOWER_DATA_LVL_MODE
|
||||||
setvar VAR_0x8004, 3
|
setvar VAR_0x8004, FANCOUNTER_USED_BATTLE_TOWER
|
||||||
special Script_TryGainNewFanFromCounter
|
special Script_TryGainNewFanFromCounter
|
||||||
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_DoTowerBattle:: @ 8249069
|
|||||||
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost:: @ 824907E
|
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyLost:: @ 824907E
|
||||||
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST
|
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_LOST
|
||||||
tower_set TOWER_DATA_LVL_MODE
|
tower_set TOWER_DATA_LVL_MODE
|
||||||
setvar VAR_0x8004, 3
|
setvar VAR_0x8004, FANCOUNTER_USED_BATTLE_TOWER
|
||||||
special Script_TryGainNewFanFromCounter
|
special Script_TryGainNewFanFromCounter
|
||||||
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ BattleFrontier_BattleTowerMultiBattleRoom_EventScript_ContinueChallenge:: @ 8249
|
|||||||
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyWon:: @ 82492AF
|
BattleFrontier_BattleTowerMultiBattleRoom_EventScript_WarpToLobbyWon:: @ 82492AF
|
||||||
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON
|
frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_WON
|
||||||
tower_set TOWER_DATA_LVL_MODE
|
tower_set TOWER_DATA_LVL_MODE
|
||||||
setvar VAR_0x8004, 3
|
setvar VAR_0x8004, FANCOUNTER_USED_BATTLE_TOWER
|
||||||
special Script_TryGainNewFanFromCounter
|
special Script_TryGainNewFanFromCounter
|
||||||
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
goto BattleFrontier_BattleTowerBattleRoom_EventScript_WarpToLobby
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ EverGrandeCity_DrakesRoom_EventScript_PostBattleSpeech:: @ 822871A
|
|||||||
end
|
end
|
||||||
|
|
||||||
EverGrandeCity_DrakesRoom_EventScript_Defeated:: @ 8228724
|
EverGrandeCity_DrakesRoom_EventScript_Defeated:: @ 8228724
|
||||||
setvar VAR_0x8004, 0
|
setvar VAR_0x8004, FANCOUNTER_DEFEATED_DRAKE
|
||||||
special Script_TryGainNewFanFromCounter
|
special Script_TryGainNewFanFromCounter
|
||||||
setflag FLAG_DEFEATED_ELITE_4_DRAKE
|
setflag FLAG_DEFEATED_ELITE_4_DRAKE
|
||||||
call PokemonLeague_EliteFour_SetAdvanceToNextRoomMetatiles
|
call PokemonLeague_EliteFour_SetAdvanceToNextRoomMetatiles
|
||||||
|
|||||||
@@ -43,7 +43,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 0
|
showcontestwinner 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
|
||||||
@@ -217,7 +217,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 0
|
showcontestwinner 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
|
||||||
@@ -505,42 +505,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 1
|
showcontestwinner 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 2
|
showcontestwinner 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 3
|
showcontestwinner 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 4
|
showcontestwinner 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 5
|
showcontestwinner 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 6
|
showcontestwinner CONTEST_WINNER_HALL_6
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -183,35 +183,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 9
|
showcontestwinner 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 10
|
showcontestwinner 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 11
|
showcontestwinner 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 12
|
showcontestwinner 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 13
|
showcontestwinner CONTEST_WINNER_MUSEUM_TOUGH
|
||||||
releaseall
|
releaseall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -498,7 +498,7 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special GetPCBoxToSendMon
|
def_special GetPCBoxToSendMon
|
||||||
def_special ShouldShowBoxWasFullMessage
|
def_special ShouldShowBoxWasFullMessage
|
||||||
def_special SetMatchCallRegisteredFlag
|
def_special SetMatchCallRegisteredFlag
|
||||||
def_special DoConfettiEffect
|
def_special DoDomeConfetti
|
||||||
def_special CreateAbnormalWeatherEvent
|
def_special CreateAbnormalWeatherEvent
|
||||||
def_special GetAbnormalWeatherMapNameAndType
|
def_special GetAbnormalWeatherMapNameAndType
|
||||||
def_special GetMartEmployeeObjectEventId
|
def_special GetMartEmployeeObjectEventId
|
||||||
|
|||||||
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.
@@ -0,0 +1,33 @@
|
|||||||
|
#ifndef GUARD_CONFETTI_UTIL_H
|
||||||
|
#define GUARD_CONFETTI_UTIL_H
|
||||||
|
|
||||||
|
struct ConfettiUtil
|
||||||
|
{
|
||||||
|
struct OamData oam;
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
s16 xDelta;
|
||||||
|
s16 yDelta;
|
||||||
|
u16 tileTag;
|
||||||
|
u16 palTag;
|
||||||
|
u16 tileNum;
|
||||||
|
u8 id;
|
||||||
|
u8 filler;
|
||||||
|
u8 animNum;
|
||||||
|
u8 active:1;
|
||||||
|
u8 allowUpdates:1;
|
||||||
|
u8 dummied:1;
|
||||||
|
u8 priority:2;
|
||||||
|
s16 data[8];
|
||||||
|
void (*callback)(struct ConfettiUtil *);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool32 ConfettiUtil_Init(u8 count);
|
||||||
|
bool32 ConfettiUtil_Free(void);
|
||||||
|
bool32 ConfettiUtil_Update(void);
|
||||||
|
u8 ConfettiUtil_SetCallback(u8 id, void (*func)(struct ConfettiUtil *));
|
||||||
|
u8 ConfettiUtil_SetData(u8 id, u8 dataArrayId, s16 dataValue);
|
||||||
|
u8 ConfettiUtil_AddNew(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 animNum, u8 priority);
|
||||||
|
u8 ConfettiUtil_Remove(u8 id);
|
||||||
|
|
||||||
|
#endif // GUARD_CONFETTI_UTIL_H
|
||||||
@@ -29,6 +29,23 @@
|
|||||||
#define CONTEST_CATEGORY_TOUGH 4
|
#define CONTEST_CATEGORY_TOUGH 4
|
||||||
#define CONTEST_CATEGORIES_COUNT 5
|
#define CONTEST_CATEGORIES_COUNT 5
|
||||||
|
|
||||||
|
#define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved
|
||||||
|
#define CONTEST_WINNER_HALL_1 1
|
||||||
|
#define CONTEST_WINNER_HALL_2 2
|
||||||
|
#define CONTEST_WINNER_HALL_3 3
|
||||||
|
#define CONTEST_WINNER_HALL_4 4
|
||||||
|
#define CONTEST_WINNER_HALL_5 5
|
||||||
|
#define CONTEST_WINNER_HALL_6 6
|
||||||
|
#define NUM_CONTEST_HALL_WINNERS 6
|
||||||
|
#define CONTEST_WINNER_7 7
|
||||||
|
#define CONTEST_WINNER_8 8
|
||||||
|
#define CONTEST_WINNER_MUSEUM_COOL 9
|
||||||
|
#define CONTEST_WINNER_MUSEUM_BEAUTY 10
|
||||||
|
#define CONTEST_WINNER_MUSEUM_CUTE 11
|
||||||
|
#define CONTEST_WINNER_MUSEUM_SMART 12
|
||||||
|
#define CONTEST_WINNER_MUSEUM_TOUGH 13
|
||||||
|
// NUM_CONTEST_WINNERS in constants/global.h
|
||||||
|
|
||||||
#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
|
||||||
|
|||||||
@@ -75,4 +75,9 @@
|
|||||||
#define FANCLUB_MEMBER7 14
|
#define FANCLUB_MEMBER7 14
|
||||||
#define FANCLUB_MEMBER8 15
|
#define FANCLUB_MEMBER8 15
|
||||||
|
|
||||||
|
#define FANCOUNTER_DEFEATED_DRAKE 0
|
||||||
|
#define FANCOUNTER_BATTLED_AT_BASE 1
|
||||||
|
#define FANCOUNTER_FINISHED_CONTEST 2
|
||||||
|
#define FANCOUNTER_USED_BATTLE_TOWER 3
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_FIELD_SPECIALS_H
|
#endif // GUARD_CONSTANTS_FIELD_SPECIALS_H
|
||||||
@@ -52,6 +52,7 @@
|
|||||||
#define APPRENTICE_COUNT 4
|
#define APPRENTICE_COUNT 4
|
||||||
#define APPRENTICE_MAX_QUESTIONS 9
|
#define APPRENTICE_MAX_QUESTIONS 9
|
||||||
#define MAX_REMATCH_ENTRIES 100 // only REMATCH_TABLE_ENTRIES (78) are used
|
#define MAX_REMATCH_ENTRIES 100 // only REMATCH_TABLE_ENTRIES (78) are used
|
||||||
|
#define NUM_CONTEST_WINNERS 13
|
||||||
#define UNION_ROOM_KB_ROW_COUNT 10
|
#define UNION_ROOM_KB_ROW_COUNT 10
|
||||||
|
|
||||||
#define PYRAMID_BAG_ITEMS_COUNT 10
|
#define PYRAMID_BAG_ITEMS_COUNT 10
|
||||||
|
|||||||
+2
-3
@@ -430,9 +430,9 @@ struct ContestResources
|
|||||||
|
|
||||||
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
|
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
|
||||||
extern s16 gContestMonConditions[CONTESTANT_COUNT];
|
extern s16 gContestMonConditions[CONTESTANT_COUNT];
|
||||||
extern s16 gUnknown_02039F08[CONTESTANT_COUNT];
|
extern s16 gContestMonTotalPoints[CONTESTANT_COUNT];
|
||||||
extern s16 gUnknown_02039F10[CONTESTANT_COUNT];
|
extern s16 gUnknown_02039F10[CONTESTANT_COUNT];
|
||||||
extern s16 gUnknown_02039F18[CONTESTANT_COUNT];
|
extern s16 gContestMonRound2Points[CONTESTANT_COUNT];
|
||||||
extern u8 gContestFinalStandings[CONTESTANT_COUNT];
|
extern u8 gContestFinalStandings[CONTESTANT_COUNT];
|
||||||
extern u8 gContestMonPartyIndex;
|
extern u8 gContestMonPartyIndex;
|
||||||
extern u8 gContestPlayerMonIndex;
|
extern u8 gContestPlayerMonIndex;
|
||||||
@@ -448,7 +448,6 @@ extern u8 sContestBgCopyFlags;
|
|||||||
extern struct ContestWinner gCurContestWinner;
|
extern struct ContestWinner gCurContestWinner;
|
||||||
extern u8 gUnknown_02039F5C;
|
extern u8 gUnknown_02039F5C;
|
||||||
extern u8 gUnknown_02039F5D;
|
extern u8 gUnknown_02039F5D;
|
||||||
|
|
||||||
extern u32 gContestRngValue;
|
extern u32 gContestRngValue;
|
||||||
|
|
||||||
// contest.c
|
// contest.c
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef GUARD_CONTEST_LINK_80FC4F4_H
|
#ifndef GUARD_CONTEST_LINK_H
|
||||||
#define GUARD_CONTEST_LINK_80FC4F4_H
|
#define GUARD_CONTEST_LINK_H
|
||||||
|
|
||||||
void sub_80FCC88(u8);
|
void sub_80FCC88(u8);
|
||||||
void sub_80FCC88(u8);
|
void sub_80FCC88(u8);
|
||||||
@@ -10,4 +10,4 @@ void sub_80FC804(u8);
|
|||||||
void sub_80FCE48(u8);
|
void sub_80FCE48(u8);
|
||||||
void sub_80FC894(u8);
|
void sub_80FC894(u8);
|
||||||
|
|
||||||
#endif //GUARD_CONTEST_LINK_80FC4F4_H
|
#endif //GUARD_CONTEST_LINK_H
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
#ifndef GUARD_CONTEST_LINK_80F57C4_H
|
#ifndef GUARD_CONTEST_UTIL_H
|
||||||
#define GUARD_CONTEST_LINK_80F57C4_H
|
#define GUARD_CONTEST_UTIL_H
|
||||||
|
|
||||||
void BufferContestantTrainerName(void);
|
void BufferContestantTrainerName(void);
|
||||||
void BufferContestantMonNickname(void);
|
void BufferContestantMonNickname(void);
|
||||||
void StartContest(void);
|
void StartContest(void);
|
||||||
void BufferContestantMonSpecies(void);
|
void BufferContestantMonSpecies(void);
|
||||||
void sub_80F8484(void);
|
void ShowContestResults(void);
|
||||||
void sub_80F84C4(u8);
|
void ContestLinkTransfer(u8);
|
||||||
void sub_80FC998(u8 taskId);
|
void sub_80FC998(u8 taskId);
|
||||||
|
|
||||||
#endif // GUARD_CONTEST_LINK_80F57C4_H
|
#endif // GUARD_CONTEST_UTIL_H
|
||||||
+1
-1
@@ -960,7 +960,7 @@ struct SaveBlock1
|
|||||||
/*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system
|
/*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system
|
||||||
/*0x2E28*/ OldMan oldMan;
|
/*0x2E28*/ OldMan oldMan;
|
||||||
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
|
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
|
||||||
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
|
/*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_*
|
||||||
/*0x3030*/ struct DayCare daycare;
|
/*0x3030*/ struct DayCare daycare;
|
||||||
/*0x3150*/ struct LinkBattleRecords linkBattleRecords;
|
/*0x3150*/ struct LinkBattleRecords linkBattleRecords;
|
||||||
/*0x31A8*/ u8 giftRibbons[52];
|
/*0x31A8*/ u8 giftRibbons[52];
|
||||||
|
|||||||
+16
-16
@@ -4082,8 +4082,8 @@ extern const u8 gNamingScreenUnderscoreTiles[];
|
|||||||
|
|
||||||
extern const u32 gUnknown_08D9BA44[];
|
extern const u32 gUnknown_08D9BA44[];
|
||||||
|
|
||||||
extern const u32 gContestConfetti_Gfx[];
|
extern const u32 gConfetti_Gfx[];
|
||||||
extern const u32 gContestConfetti_Pal[];
|
extern const u32 gConfetti_Pal[];
|
||||||
|
|
||||||
extern const u32 gUnknown_08C093F0[];
|
extern const u32 gUnknown_08C093F0[];
|
||||||
extern const u32 gSubstituteDollTilemap[];
|
extern const u32 gSubstituteDollTilemap[];
|
||||||
@@ -4927,23 +4927,23 @@ extern const u32 gRouletteCreditTiles[];
|
|||||||
extern const u32 gRouletteNumbersTiles[];
|
extern const u32 gRouletteNumbersTiles[];
|
||||||
extern const u32 gRouletteMultiplierTiles[];
|
extern const u32 gRouletteMultiplierTiles[];
|
||||||
|
|
||||||
// Contest Link
|
// Contest util
|
||||||
extern const u32 gUnknown_08C19588[];
|
extern const u32 gContestResults_Gfx[];
|
||||||
extern const u32 gUnknown_08C19EEC[];
|
extern const u32 gUnknown_08C19EEC[];
|
||||||
extern const u32 gUnknown_08C1A000[];
|
extern const u32 gUnknown_08C1A000[];
|
||||||
extern const u32 gUnknown_08C1A12C[];
|
extern const u32 gUnknown_08C1A12C[];
|
||||||
extern const u32 gUnknown_08C1A2B4[];
|
extern const u32 gContestResults_Pal[];
|
||||||
extern const u16 gUnknown_08DC6498[];
|
extern const u16 gLinkContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC63F8[];
|
extern const u16 gNormalContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC6420[];
|
extern const u16 gSuperContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC6448[];
|
extern const u16 gHyperContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC6470[];
|
extern const u16 gMasterContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC64AC[];
|
extern const u16 gCoolContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC64C0[];
|
extern const u16 gBeautyContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC64D4[];
|
extern const u16 gCuteContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC64E8[];
|
extern const u16 gSmartContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC64FC[];
|
extern const u16 gToughContestResults_Tilemap[];
|
||||||
extern const u16 gUnknown_08DC6510[];
|
extern const u16 gContestResults_Tilemap[];
|
||||||
|
|
||||||
// Trainer Card.
|
// Trainer Card.
|
||||||
extern const u16 gHoennTrainerCard0Star_Pal[];
|
extern const u16 gHoennTrainerCard0Star_Pal[];
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
void CB2_DoHallOfFameScreen(void);
|
void CB2_DoHallOfFameScreen(void);
|
||||||
void CB2_DoHallOfFameScreenDontSaveData(void);
|
void CB2_DoHallOfFameScreenDontSaveData(void);
|
||||||
void CB2_DoHallOfFamePC(void);
|
void CB2_DoHallOfFamePC(void);
|
||||||
void DoConfettiEffect(void);
|
|
||||||
|
|
||||||
// hof_pc.c
|
// hof_pc.c
|
||||||
void ReturnFromHallOfFamePC(void);
|
void ReturnFromHallOfFamePC(void);
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#ifndef GUARD_ROM_81520A8_H
|
|
||||||
#define GUARD_ROM_81520A8_H
|
|
||||||
|
|
||||||
struct UnkStruct_81520A8
|
|
||||||
{
|
|
||||||
struct OamData oam;
|
|
||||||
s16 x;
|
|
||||||
s16 y;
|
|
||||||
s16 xDelta;
|
|
||||||
s16 yDelta;
|
|
||||||
u16 tileTag;
|
|
||||||
u16 palTag;
|
|
||||||
u16 tileNum;
|
|
||||||
u8 id;
|
|
||||||
u8 filler17; // Unused.
|
|
||||||
u8 unk18;
|
|
||||||
u8 unk19_0:1;
|
|
||||||
u8 unk19_1:1;
|
|
||||||
u8 unk19_2:1;
|
|
||||||
u8 priority:2;
|
|
||||||
s16 data[8];
|
|
||||||
void (*callback)(struct UnkStruct_81520A8 *);
|
|
||||||
};
|
|
||||||
|
|
||||||
bool32 sub_81521C0(u8 count);
|
|
||||||
bool32 sub_8152254(void);
|
|
||||||
bool32 sub_81522D4(void);
|
|
||||||
u8 sub_8152438(u8 id, void (*func)(struct UnkStruct_81520A8 *));
|
|
||||||
u8 sub_8152474(u8 id, u8 dataArrayId, s16 dataValue);
|
|
||||||
u8 sub_81524C4(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 arg5, u8 priority);
|
|
||||||
u8 sub_81525D0(u8 id);
|
|
||||||
|
|
||||||
#endif // GUARD_ROM_81520A8_H
|
|
||||||
+1
-1
@@ -2494,7 +2494,7 @@ extern const u8 gText_CommunicationStandby[];
|
|||||||
extern const u8 gText_AnnouncingResults[];
|
extern const u8 gText_AnnouncingResults[];
|
||||||
extern const u8 gText_PreliminaryResults[];
|
extern const u8 gText_PreliminaryResults[];
|
||||||
extern const u8 gText_Round2Results[];
|
extern const u8 gText_Round2Results[];
|
||||||
extern const u8 gText_Var1sVar2Won[];
|
extern const u8 gText_ContestantsMonWon[];
|
||||||
|
|
||||||
// Trainer Card
|
// Trainer Card
|
||||||
extern const u8 gText_LinkCableBattles[];
|
extern const u8 gText_LinkCableBattles[];
|
||||||
|
|||||||
+6
-6
@@ -169,7 +169,7 @@ SECTIONS {
|
|||||||
src/record_mixing.o(.text);
|
src/record_mixing.o(.text);
|
||||||
src/secret_base.o(.text);
|
src/secret_base.o(.text);
|
||||||
src/tv.o(.text);
|
src/tv.o(.text);
|
||||||
src/contest_link_80F57C4.o(.text);
|
src/contest_util.o(.text);
|
||||||
src/script_pokemon_util_80F87D8.o(.text);
|
src/script_pokemon_util_80F87D8.o(.text);
|
||||||
src/field_poison.o(.text);
|
src/field_poison.o(.text);
|
||||||
src/pokemon_size_record.o(.text);
|
src/pokemon_size_record.o(.text);
|
||||||
@@ -177,7 +177,7 @@ SECTIONS {
|
|||||||
src/field_special_scene.o(.text);
|
src/field_special_scene.o(.text);
|
||||||
src/rotating_gate.o(.text);
|
src/rotating_gate.o(.text);
|
||||||
src/safari_zone.o(.text);
|
src/safari_zone.o(.text);
|
||||||
src/contest_link_80FC4F4.o(.text);
|
src/contest_link.o(.text);
|
||||||
src/item_use.o(.text);
|
src/item_use.o(.text);
|
||||||
src/battle_anim_effects_1.o(.text);
|
src/battle_anim_effects_1.o(.text);
|
||||||
src/battle_anim_effects_2.o(.text);
|
src/battle_anim_effects_2.o(.text);
|
||||||
@@ -238,7 +238,7 @@ SECTIONS {
|
|||||||
src/cable_car.o(.text);
|
src/cable_car.o(.text);
|
||||||
src/math_util.o(.text);
|
src/math_util.o(.text);
|
||||||
src/roulette_util.o(.text);
|
src/roulette_util.o(.text);
|
||||||
src/rom_81520A8.o(.text);
|
src/confetti_util.o(.text);
|
||||||
src/save.o(.text);
|
src/save.o(.text);
|
||||||
src/mystery_event_script.o(.text);
|
src/mystery_event_script.o(.text);
|
||||||
src/field_effect_helpers.o(.text);
|
src/field_effect_helpers.o(.text);
|
||||||
@@ -329,7 +329,7 @@ SECTIONS {
|
|||||||
src/trainer_hill.o(.text);
|
src/trainer_hill.o(.text);
|
||||||
src/rayquaza_scene.o(.text);
|
src/rayquaza_scene.o(.text);
|
||||||
src/walda_phrase.o(.text);
|
src/walda_phrase.o(.text);
|
||||||
src/contest_link_81D9DE4.o(.text);
|
src/contest_link_util.o(.text);
|
||||||
src/gym_leader_rematch.o(.text);
|
src/gym_leader_rematch.o(.text);
|
||||||
src/unk_transition.o(.text);
|
src/unk_transition.o(.text);
|
||||||
src/international_string_util.o(.text);
|
src/international_string_util.o(.text);
|
||||||
@@ -544,13 +544,13 @@ SECTIONS {
|
|||||||
src/record_mixing.o(.rodata);
|
src/record_mixing.o(.rodata);
|
||||||
src/secret_base.o(.rodata);
|
src/secret_base.o(.rodata);
|
||||||
src/tv.o(.rodata);
|
src/tv.o(.rodata);
|
||||||
src/contest_link_80F57C4.o(.rodata);
|
src/contest_util.o(.rodata);
|
||||||
src/script_pokemon_util_80F87D8.o(.rodata);
|
src/script_pokemon_util_80F87D8.o(.rodata);
|
||||||
src/pokemon_size_record.o(.rodata)
|
src/pokemon_size_record.o(.rodata)
|
||||||
src/fldeff_misc.o(.rodata);
|
src/fldeff_misc.o(.rodata);
|
||||||
src/field_special_scene.o(.rodata);
|
src/field_special_scene.o(.rodata);
|
||||||
src/rotating_gate.o(.rodata);
|
src/rotating_gate.o(.rodata);
|
||||||
src/contest_link_80FC4F4.o(.rodata);
|
src/contest_link.o(.rodata);
|
||||||
src/item_use.o(.rodata);
|
src/item_use.o(.rodata);
|
||||||
src/battle_anim_effects_1.o(.rodata);
|
src/battle_anim_effects_1.o(.rodata);
|
||||||
src/battle_anim_effects_2.o(.rodata);
|
src/battle_anim_effects_2.o(.rodata);
|
||||||
|
|||||||
@@ -0,0 +1,218 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "confetti_util.h"
|
||||||
|
#include "malloc.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "digit_obj_util.h"
|
||||||
|
|
||||||
|
static EWRAM_DATA struct
|
||||||
|
{
|
||||||
|
u8 count;
|
||||||
|
struct ConfettiUtil *array;
|
||||||
|
} *sWork = NULL;
|
||||||
|
|
||||||
|
static void sub_81520A8(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) // Unused.
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
u8 j;
|
||||||
|
u8 x;
|
||||||
|
u8 y;
|
||||||
|
|
||||||
|
for (i = 0, y = top; i < height; i++)
|
||||||
|
{
|
||||||
|
for (x = left, j = 0; j < width; j++)
|
||||||
|
{
|
||||||
|
*(u16 *)((dest) + (y * 64 + x * 2)) = value;
|
||||||
|
x = (x + 1) % 32;
|
||||||
|
}
|
||||||
|
y = (y + 1) % 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8152134(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) // Unused.
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
u8 j;
|
||||||
|
u8 x;
|
||||||
|
u8 y;
|
||||||
|
const u16 *_src;
|
||||||
|
|
||||||
|
for (i = 0, _src = src, y = top; i < height; i++)
|
||||||
|
{
|
||||||
|
for (x = left, j = 0; j < width; j++)
|
||||||
|
{
|
||||||
|
*(u16 *)((dest) + (y * 64 + x * 2)) = *(_src++);
|
||||||
|
x = (x + 1) % 32;
|
||||||
|
}
|
||||||
|
y = (y + 1) % 32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 ConfettiUtil_Init(u8 count)
|
||||||
|
{
|
||||||
|
u8 i = 0;
|
||||||
|
|
||||||
|
if (count == 0)
|
||||||
|
return FALSE;
|
||||||
|
if (count > 64)
|
||||||
|
count = 64;
|
||||||
|
|
||||||
|
sWork = AllocZeroed(sizeof(*sWork));
|
||||||
|
if (sWork == NULL)
|
||||||
|
return FALSE;
|
||||||
|
sWork->array = AllocZeroed(count * sizeof(struct ConfettiUtil));
|
||||||
|
if (sWork->array == NULL)
|
||||||
|
{
|
||||||
|
FREE_AND_SET_NULL(sWork);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
sWork->count = count;
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
memcpy(&sWork->array[i].oam, &gDummyOamData, sizeof(struct OamData));
|
||||||
|
sWork->array[i].dummied = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 ConfettiUtil_Free(void)
|
||||||
|
{
|
||||||
|
u8 i = 0;
|
||||||
|
|
||||||
|
if (sWork == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < sWork->count; i++)
|
||||||
|
memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
|
||||||
|
|
||||||
|
memset(sWork->array, 0, sWork->count * sizeof(struct ConfettiUtil));
|
||||||
|
FREE_AND_SET_NULL(sWork->array);
|
||||||
|
memset(sWork, 0, sizeof(*sWork));
|
||||||
|
FREE_AND_SET_NULL(sWork);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 ConfettiUtil_Update(void)
|
||||||
|
{
|
||||||
|
u8 i = 0;
|
||||||
|
|
||||||
|
if (sWork == NULL || sWork->array == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < sWork->count; i++)
|
||||||
|
{
|
||||||
|
if (sWork->array[i].active && sWork->array[i].allowUpdates)
|
||||||
|
{
|
||||||
|
if (sWork->array[i].callback != NULL)
|
||||||
|
sWork->array[i].callback(&sWork->array[i]);
|
||||||
|
|
||||||
|
if (sWork->array[i].dummied)
|
||||||
|
{
|
||||||
|
memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sWork->array[i].oam.y = sWork->array[i].y + sWork->array[i].yDelta;
|
||||||
|
sWork->array[i].oam.x = sWork->array[i].x + sWork->array[i].xDelta;
|
||||||
|
sWork->array[i].oam.priority = sWork->array[i].priority;
|
||||||
|
sWork->array[i].oam.tileNum = sWork->array[i].tileNum;
|
||||||
|
memcpy(&gMain.oamBuffer[i + 64], &sWork->array[i], sizeof(struct OamData));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool32 SetAnimAndTileNum(struct ConfettiUtil *structPtr, u8 animNum)
|
||||||
|
{
|
||||||
|
u16 tileStart;
|
||||||
|
|
||||||
|
if (structPtr == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
tileStart = GetSpriteTileStartByTag(structPtr->tileTag);
|
||||||
|
if (tileStart == 0xFFFF)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
structPtr->animNum = animNum;
|
||||||
|
structPtr->tileNum = (GetTilesPerImage(structPtr->oam.shape, structPtr->oam.size) * animNum) + tileStart;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ConfettiUtil_SetCallback(u8 id, void (*func)(struct ConfettiUtil *))
|
||||||
|
{
|
||||||
|
if (sWork == NULL || id >= sWork->count)
|
||||||
|
return 0xFF;
|
||||||
|
else if (!sWork->array[id].active)
|
||||||
|
return 0xFF;
|
||||||
|
|
||||||
|
sWork->array[id].callback = func;
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ConfettiUtil_SetData(u8 id, u8 dataArrayId, s16 dataValue)
|
||||||
|
{
|
||||||
|
if (sWork == NULL || id >= sWork->count)
|
||||||
|
return 0xFF;
|
||||||
|
else if (!sWork->array[id].active || dataArrayId > ARRAY_COUNT(sWork->array[id].data) - 1) // - 1 b/c last slot is reserved for taskId
|
||||||
|
return 0xFF;
|
||||||
|
|
||||||
|
sWork->array[id].data[dataArrayId] = dataValue;
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ConfettiUtil_AddNew(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 animNum, u8 priority)
|
||||||
|
{
|
||||||
|
struct ConfettiUtil *structPtr = NULL;
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
if (sWork == NULL || oam == NULL)
|
||||||
|
return 0xFF;
|
||||||
|
|
||||||
|
for (i = 0; i < sWork->count; i++)
|
||||||
|
{
|
||||||
|
if (!sWork->array[i].active)
|
||||||
|
{
|
||||||
|
structPtr = &sWork->array[i];
|
||||||
|
memset(structPtr, 0, sizeof(*structPtr));
|
||||||
|
structPtr->id = i;
|
||||||
|
structPtr->active = TRUE;
|
||||||
|
structPtr->allowUpdates = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (structPtr == NULL)
|
||||||
|
return 0xFF;
|
||||||
|
|
||||||
|
memcpy(&structPtr->oam, oam, sizeof(*oam));
|
||||||
|
structPtr->tileTag = tileTag;
|
||||||
|
structPtr->palTag = palTag;
|
||||||
|
structPtr->x = x;
|
||||||
|
structPtr->y = y;
|
||||||
|
structPtr->oam.paletteNum = IndexOfSpritePaletteTag(palTag);
|
||||||
|
if (priority < 4)
|
||||||
|
{
|
||||||
|
structPtr->priority = priority;
|
||||||
|
structPtr->oam.priority = priority;
|
||||||
|
}
|
||||||
|
SetAnimAndTileNum(structPtr, animNum);
|
||||||
|
|
||||||
|
return structPtr->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 ConfettiUtil_Remove(u8 id)
|
||||||
|
{
|
||||||
|
if (sWork == NULL || !sWork->array[id].active)
|
||||||
|
return 0xFF;
|
||||||
|
|
||||||
|
memset(&sWork->array[id], 0, sizeof(struct ConfettiUtil));
|
||||||
|
sWork->array[id].oam.y = 160;
|
||||||
|
sWork->array[id].oam.x = 240;
|
||||||
|
sWork->array[id].dummied = TRUE;
|
||||||
|
memcpy(&gMain.oamBuffer[id + 64], &gDummyOamData, sizeof(struct OamData));
|
||||||
|
return id;
|
||||||
|
}
|
||||||
+35
-35
@@ -31,14 +31,14 @@
|
|||||||
#include "tv.h"
|
#include "tv.h"
|
||||||
#include "scanline_effect.h"
|
#include "scanline_effect.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "contest_link_80F57C4.h"
|
#include "contest_util.h"
|
||||||
#include "dma3.h"
|
#include "dma3.h"
|
||||||
#include "battle_message.h"
|
#include "battle_message.h"
|
||||||
#include "event_scripts.h"
|
#include "event_scripts.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
#include "contest_effect.h"
|
#include "contest_effect.h"
|
||||||
#include "contest_link_80FC4F4.h"
|
#include "contest_link.h"
|
||||||
#include "script_pokemon_util_80F87D8.h"
|
#include "script_pokemon_util_80F87D8.h"
|
||||||
#include "international_string_util.h"
|
#include "international_string_util.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
@@ -155,7 +155,7 @@ static void Contest_StartTextPrinter(const u8 *, u32);
|
|||||||
static void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, s16);
|
static void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, s16);
|
||||||
static bool32 Contest_RunTextPrinters(void);
|
static bool32 Contest_RunTextPrinters(void);
|
||||||
static void Contest_SetBgCopyFlags(u32 flagIndex);
|
static void Contest_SetBgCopyFlags(u32 flagIndex);
|
||||||
static void sub_80DBD18(void);
|
static void CalculateFinalScores(void);
|
||||||
static void sub_80DD080(u8);
|
static void sub_80DD080(u8);
|
||||||
static void sub_80DE9DC(u8);
|
static void sub_80DE9DC(u8);
|
||||||
static void sub_80DCBE8(u8, u8);
|
static void sub_80DCBE8(u8, u8);
|
||||||
@@ -184,7 +184,7 @@ static void sub_80DC3AC(void);
|
|||||||
static bool8 sub_80DC3C4(void);
|
static bool8 sub_80DC3C4(void);
|
||||||
static void ContestBG_FillBoxWithTile(u8, u16, u8, u8, u8, u8, u8);
|
static void ContestBG_FillBoxWithTile(u8, u16, u8, u8, u8, u8, u8);
|
||||||
static void Contest_PrintTextToBg0WindowStd(u32, const u8 *);
|
static void Contest_PrintTextToBg0WindowStd(u32, const u8 *);
|
||||||
static s16 sub_80DBD34(u8);
|
static s16 GetContestantRound2Points(u8);
|
||||||
static void DetermineFinalStandings(void);
|
static void DetermineFinalStandings(void);
|
||||||
static bool8 sub_80DBF30(s32, s32, struct UnknownContestStruct6 *);
|
static bool8 sub_80DBF30(s32, s32, struct UnknownContestStruct6 *);
|
||||||
static void sub_80DC0F4(u8);
|
static void sub_80DC0F4(u8);
|
||||||
@@ -221,9 +221,9 @@ static void SwapMoveDescAndContestTilemaps(void);
|
|||||||
// EWRAM vars.
|
// EWRAM vars.
|
||||||
EWRAM_DATA struct ContestPokemon gContestMons[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA struct ContestPokemon gContestMons[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA s16 gContestMonConditions[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA s16 gContestMonConditions[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA s16 gUnknown_02039F08[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA s16 gContestMonTotalPoints[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA s16 gUnknown_02039F10[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA s16 gUnknown_02039F10[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA s16 gUnknown_02039F18[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA s16 gContestMonRound2Points[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gContestFinalStandings[CONTESTANT_COUNT] = {0};
|
EWRAM_DATA u8 gContestFinalStandings[CONTESTANT_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gContestMonPartyIndex = 0;
|
EWRAM_DATA u8 gContestMonPartyIndex = 0;
|
||||||
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
|
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
|
||||||
@@ -239,7 +239,7 @@ 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 u8 gUnknown_02039F5C = 0;
|
EWRAM_DATA bool8 gUnknown_02039F5C = 0;
|
||||||
EWRAM_DATA u8 gUnknown_02039F5D = 0;
|
EWRAM_DATA u8 gUnknown_02039F5D = 0;
|
||||||
|
|
||||||
// IWRAM common vars.
|
// IWRAM common vars.
|
||||||
@@ -2490,7 +2490,7 @@ static void sub_80DA5E8(u8 taskId)
|
|||||||
gBattle_BG2_Y = 0;
|
gBattle_BG2_Y = 0;
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
gUnknown_02039F10[i] = eContestantStatus[i].pointTotal;
|
gUnknown_02039F10[i] = eContestantStatus[i].pointTotal;
|
||||||
sub_80DBD18();
|
CalculateFinalScores();
|
||||||
ContestClearGeneralTextWindow();
|
ContestClearGeneralTextWindow();
|
||||||
if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
|
if (!(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK))
|
||||||
BravoTrainerPokemonProfile_BeforeInterview1(eContestantStatus[gContestPlayerMonIndex].prevMove);
|
BravoTrainerPokemonProfile_BeforeInterview1(eContestantStatus[gContestPlayerMonIndex].prevMove);
|
||||||
@@ -3367,22 +3367,22 @@ bool8 Contest_IsMonsTurnDisabled(u8 a)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DBCE0(u8 contestant)
|
static void CalculateTotalPointsForContestant(u8 contestant)
|
||||||
{
|
{
|
||||||
gUnknown_02039F18[contestant] = sub_80DBD34(contestant);
|
gContestMonRound2Points[contestant] = GetContestantRound2Points(contestant);
|
||||||
gUnknown_02039F08[contestant] = gContestMonConditions[contestant] + gUnknown_02039F18[contestant];
|
gContestMonTotalPoints[contestant] = gContestMonConditions[contestant] + gContestMonRound2Points[contestant];
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80DBD18(void)
|
static void CalculateFinalScores(void)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
sub_80DBCE0(i);
|
CalculateTotalPointsForContestant(i);
|
||||||
DetermineFinalStandings();
|
DetermineFinalStandings();
|
||||||
}
|
}
|
||||||
|
|
||||||
static s16 sub_80DBD34(u8 contestant)
|
static s16 GetContestantRound2Points(u8 contestant)
|
||||||
{
|
{
|
||||||
return gUnknown_02039F10[contestant] * 2;
|
return gUnknown_02039F10[contestant] * 2;
|
||||||
}
|
}
|
||||||
@@ -3411,7 +3411,7 @@ static void DetermineFinalStandings(void)
|
|||||||
|
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
sp8[i].unk0 = gUnknown_02039F08[i];
|
sp8[i].unk0 = gContestMonTotalPoints[i];
|
||||||
sp8[i].unk4 = gContestMonConditions[i];
|
sp8[i].unk4 = gContestMonConditions[i];
|
||||||
sp8[i].unk8 = randomOrdering[i];
|
sp8[i].unk8 = randomOrdering[i];
|
||||||
sp8[i].unkC = i;
|
sp8[i].unkC = i;
|
||||||
@@ -5313,22 +5313,22 @@ bool8 sub_80DEDA8(u8 rank)
|
|||||||
}
|
}
|
||||||
if (rank != 0xFE)
|
if (rank != 0xFE)
|
||||||
{
|
{
|
||||||
u8 r4 = sub_80DEFA8(rank, 1);
|
u8 id = sub_80DEFA8(rank, 1);
|
||||||
|
|
||||||
gSaveBlock1Ptr->contestWinners[r4].personality = gContestMons[i].personality;
|
gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality;
|
||||||
gSaveBlock1Ptr->contestWinners[r4].species = gContestMons[i].species;
|
gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species;
|
||||||
gSaveBlock1Ptr->contestWinners[r4].trainerId = gContestMons[i].otId;
|
gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId;
|
||||||
StringCopy(gSaveBlock1Ptr->contestWinners[r4].monName, gContestMons[i].nickname);
|
StringCopy(gSaveBlock1Ptr->contestWinners[id].monName, gContestMons[i].nickname);
|
||||||
StringCopy(gSaveBlock1Ptr->contestWinners[r4].trainerName, gContestMons[i].trainerName);
|
StringCopy(gSaveBlock1Ptr->contestWinners[id].trainerName, gContestMons[i].trainerName);
|
||||||
if(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
|
if(gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
|
||||||
gSaveBlock1Ptr->contestWinners[r4].contestRank = CONTEST_RANK_LINK;
|
gSaveBlock1Ptr->contestWinners[id].contestRank = CONTEST_RANK_LINK;
|
||||||
else
|
else
|
||||||
gSaveBlock1Ptr->contestWinners[r4].contestRank = gSpecialVar_ContestRank;
|
gSaveBlock1Ptr->contestWinners[id].contestRank = gSpecialVar_ContestRank;
|
||||||
|
|
||||||
if (rank != 0xFF)
|
if (rank != 0xFF)
|
||||||
gSaveBlock1Ptr->contestWinners[r4].contestCategory = gSpecialVar_ContestCategory;
|
gSaveBlock1Ptr->contestWinners[id].contestCategory = gSpecialVar_ContestCategory;
|
||||||
else
|
else
|
||||||
gSaveBlock1Ptr->contestWinners[r4].contestCategory = r7;
|
gSaveBlock1Ptr->contestWinners[id].contestCategory = r7;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -5354,24 +5354,24 @@ u8 sub_80DEFA8(u8 rank, u8 b)
|
|||||||
case CONTEST_RANK_MASTER:
|
case CONTEST_RANK_MASTER:
|
||||||
if (b != 0)
|
if (b != 0)
|
||||||
{
|
{
|
||||||
for (i = 5; i >= 1; i--)
|
for (i = NUM_CONTEST_HALL_WINNERS - 1; i >= 1; 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 0;
|
||||||
default: // CONTEST_RANK_LINK
|
default:
|
||||||
switch (gSpecialVar_ContestCategory)
|
switch (gSpecialVar_ContestCategory)
|
||||||
{
|
{
|
||||||
case CONTEST_CATEGORY_COOL:
|
case CONTEST_CATEGORY_COOL:
|
||||||
return 8;
|
return CONTEST_WINNER_MUSEUM_COOL - 1;
|
||||||
case CONTEST_CATEGORY_BEAUTY:
|
case CONTEST_CATEGORY_BEAUTY:
|
||||||
return 9;
|
return CONTEST_WINNER_MUSEUM_BEAUTY - 1;
|
||||||
case CONTEST_CATEGORY_CUTE:
|
case CONTEST_CATEGORY_CUTE:
|
||||||
return 10;
|
return CONTEST_WINNER_MUSEUM_CUTE - 1;
|
||||||
case CONTEST_CATEGORY_SMART:
|
case CONTEST_CATEGORY_SMART:
|
||||||
return 11;
|
return CONTEST_WINNER_MUSEUM_SMART - 1;
|
||||||
case CONTEST_CATEGORY_TOUGH:
|
case CONTEST_CATEGORY_TOUGH:
|
||||||
default:
|
default:
|
||||||
return 12;
|
return CONTEST_WINNER_MUSEUM_TOUGH - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5471,7 +5471,7 @@ static void sub_80DF250(void)
|
|||||||
gContestResources->field_1c[r1].unkD |= 1;
|
gContestResources->field_1c[r1].unkD |= 1;
|
||||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||||
{
|
{
|
||||||
if (i != var_38 && gUnknown_02039F08[var_38] - gUnknown_02039F08[i] <= 50)
|
if (i != var_38 && gContestMonTotalPoints[var_38] - gContestMonTotalPoints[i] <= 50)
|
||||||
gContestResources->field_1c[i].unkD |= 4;
|
gContestResources->field_1c[i].unkD |= 4;
|
||||||
|
|
||||||
if (!gContestResources->field_1c[i].unkE_2)
|
if (!gContestResources->field_1c[i].unkE_2)
|
||||||
@@ -5491,7 +5491,7 @@ static void sub_80DF250(void)
|
|||||||
{
|
{
|
||||||
if (gContestMonConditions[i] > gContestMonConditions[j])
|
if (gContestMonConditions[i] > gContestMonConditions[j])
|
||||||
r12 = TRUE;
|
r12 = TRUE;
|
||||||
if (gUnknown_02039F18[i] > gUnknown_02039F18[j])
|
if (gContestMonRound2Points[i] > gContestMonRound2Points[j])
|
||||||
r8 = TRUE;
|
r8 = TRUE;
|
||||||
}
|
}
|
||||||
if (!r12 && !r8)
|
if (!r12 && !r8)
|
||||||
@@ -5582,7 +5582,7 @@ static void sub_80DF4F8(void)
|
|||||||
{
|
{
|
||||||
if (gContestMonConditions[r7] < gContestMonConditions[i])
|
if (gContestMonConditions[r7] < gContestMonConditions[i])
|
||||||
r9++;
|
r9++;
|
||||||
if (gUnknown_02039F18[r7] < gUnknown_02039F18[i])
|
if (gContestMonRound2Points[r7] < gContestMonRound2Points[i])
|
||||||
r10++;
|
r10++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "pokemon.h"
|
#include "pokemon.h"
|
||||||
#include "random.h"
|
#include "random.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
#include "contest_link.h"
|
||||||
#include "constants/flags.h"
|
#include "constants/flags.h"
|
||||||
|
|
||||||
static void sub_80FC5C0(u8);
|
static void sub_80FC5C0(u8);
|
||||||
@@ -296,14 +297,14 @@ void sub_80FCACC(u8 taskId)
|
|||||||
case 0:
|
case 0:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
if (sub_80FC4F4(gUnknown_02039F08, sizeof(gUnknown_02039F08)) == 1)
|
if (sub_80FC4F4(gContestMonTotalPoints, sizeof(gContestMonTotalPoints)) == 1)
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (sub_80FC55C())
|
if (sub_80FC55C())
|
||||||
{
|
{
|
||||||
memcpy(gUnknown_02039F08, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F08));
|
memcpy(gContestMonTotalPoints, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonTotalPoints));
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -334,14 +335,14 @@ void sub_80FCACC(u8 taskId)
|
|||||||
case 6:
|
case 6:
|
||||||
if (IsLinkTaskFinished())
|
if (IsLinkTaskFinished())
|
||||||
{
|
{
|
||||||
if (sub_80FC4F4(gUnknown_02039F18, sizeof(gUnknown_02039F18)) == 1)
|
if (sub_80FC4F4(gContestMonRound2Points, sizeof(gContestMonRound2Points)) == 1)
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
if (sub_80FC55C())
|
if (sub_80FC55C())
|
||||||
{
|
{
|
||||||
memcpy(gUnknown_02039F18, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gUnknown_02039F18));
|
memcpy(gContestMonRound2Points, gBlockRecvBuffer[gUnknown_02039F2B], sizeof(gContestMonRound2Points));
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
File renamed without changes.
@@ -170,7 +170,7 @@ void SetContestWinnerForPainting(int contestWinnerId)
|
|||||||
u8 *ptr2 = &gUnknown_02039F5C;
|
u8 *ptr2 = &gUnknown_02039F5C;
|
||||||
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
|
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
|
||||||
*ptr1 = contestWinnerId - 1;
|
*ptr1 = contestWinnerId - 1;
|
||||||
*ptr2 = 0;
|
*ptr2 = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CB2_ContestPainting(void)
|
void CB2_ContestPainting(void)
|
||||||
@@ -281,7 +281,7 @@ static void InitContestPaintingWindow(void)
|
|||||||
ShowBg(1);
|
ShowBg(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PrintContestPaintingCaption(u8 contestType, u8 arg1)
|
static void PrintContestPaintingCaption(u8 contestType, bool8 arg1)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
u8 category;
|
u8 category;
|
||||||
@@ -519,12 +519,14 @@ _081303F8:\n\
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void LoadContestPaintingFrame(u8 contestWinnerId, u8 arg1)
|
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
||||||
|
|
||||||
|
static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
|
||||||
{
|
{
|
||||||
u8 x, y;
|
u8 x, y;
|
||||||
|
|
||||||
LoadPalette(gPictureFramePalettes, 0, 0x100);
|
LoadPalette(gPictureFramePalettes, 0, 0x100);
|
||||||
if (arg1 == 1)
|
if (arg1 == TRUE)
|
||||||
{
|
{
|
||||||
switch (gContestPaintingWinner->contestCategory / 3)
|
switch (gContestPaintingWinner->contestCategory / 3)
|
||||||
{
|
{
|
||||||
@@ -550,8 +552,6 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, u8 arg1)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
|
|
||||||
|
|
||||||
// Set the background
|
// Set the background
|
||||||
for (y = 0; y < 20; y++)
|
for (y = 0; y < 20; y++)
|
||||||
{
|
{
|
||||||
@@ -569,8 +569,6 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, u8 arg1)
|
|||||||
// Re-set the entire top row to the first top frame part
|
// Re-set the entire top row to the first top frame part
|
||||||
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];
|
||||||
|
|
||||||
#undef VRAM_PICTURE_DATA
|
|
||||||
}
|
}
|
||||||
else if (contestWinnerId < 8)
|
else if (contestWinnerId < 8)
|
||||||
{
|
{
|
||||||
@@ -605,6 +603,8 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, u8 arg1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef VRAM_PICTURE_DATA
|
||||||
|
|
||||||
static void InitPaintingMonOamData(u8 contestWinnerId)
|
static void InitPaintingMonOamData(u8 contestWinnerId)
|
||||||
{
|
{
|
||||||
//Some hacks just to get the asm to match
|
//Some hacks just to get the asm to match
|
||||||
@@ -692,7 +692,7 @@ static void DoContestPaintingImageProcessing(u8 imageEffect)
|
|||||||
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
|
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateContestPaintingPicture(u8 contestWinnerId, u8 arg1)
|
static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 arg1)
|
||||||
{
|
{
|
||||||
AllocPaintingResources();
|
AllocPaintingResources();
|
||||||
InitContestMonPixels(gContestPaintingWinner->species, 0);
|
InitContestMonPixels(gContestPaintingWinner->species, 0);
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -4095,11 +4095,17 @@ void UpdateTrainerFanClubGameClear(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the player has < 3 fans, gain a new fan whenever the counter reaches 20+
|
// If the player has < 3 fans, gain a new fan whenever the counter reaches 20+
|
||||||
// Defeating Drake or participating in a Link Contest increments the counter by 2
|
// Defeating Drake or participating in a Contest increments the counter by 2
|
||||||
// Participating at Battle Tower or in a Secret Base battle increments the counter by 1
|
// Participating at Battle Tower or in a Secret Base battle increments the counter by 1
|
||||||
u8 TryGainNewFanFromCounter(u8 incrementId)
|
u8 TryGainNewFanFromCounter(u8 incrementId)
|
||||||
{
|
{
|
||||||
static const u8 sCounterIncrements[] = { 2, 1, 2, 1 };
|
static const u8 sCounterIncrements[] =
|
||||||
|
{
|
||||||
|
[FANCOUNTER_DEFEATED_DRAKE] = 2,
|
||||||
|
[FANCOUNTER_BATTLED_AT_BASE] = 1,
|
||||||
|
[FANCOUNTER_FINISHED_CONTEST] = 2,
|
||||||
|
[FANCOUNTER_USED_BATTLE_TOWER] = 1
|
||||||
|
};
|
||||||
|
|
||||||
if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
|
if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
|
||||||
{
|
{
|
||||||
|
|||||||
+16
-18
@@ -471,13 +471,11 @@ const u8 gTiles_8C19450[] = INCBIN_U8("graphics/contest/heart.4bpp");
|
|||||||
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 gUnknown_08C19588[] = INCBIN_U32("graphics/contest/misc_2.4bpp.lz");
|
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen.4bpp.lz");
|
||||||
|
|
||||||
const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
|
const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
|
||||||
const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
|
const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
|
||||||
const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
|
const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
|
||||||
|
const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen.gbapal.lz");
|
||||||
const u32 gUnknown_08C1A2B4[] = INCBIN_U32("graphics/contest/misc_2.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");
|
||||||
@@ -875,8 +873,8 @@ const u32 gSubstituteDollTilemap[] = INCBIN_U32("graphics/battle_anims/sprites/s
|
|||||||
const u32 gBattleAnimSpriteGfx_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.4bpp.lz");
|
||||||
const u32 gBattleAnimSpritePal_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.gbapal.lz");
|
const u32 gBattleAnimSpritePal_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.gbapal.lz");
|
||||||
|
|
||||||
const u32 gContestConfetti_Gfx[] = INCBIN_U32("graphics/misc/confetti.4bpp.lz");
|
const u32 gConfetti_Gfx[] = INCBIN_U32("graphics/misc/confetti.4bpp.lz");
|
||||||
const u32 gContestConfetti_Pal[] = INCBIN_U32("graphics/misc/confetti.gbapal.lz");
|
const u32 gConfetti_Pal[] = INCBIN_U32("graphics/misc/confetti.gbapal.lz");
|
||||||
|
|
||||||
const u32 gBattleAnimSpriteGfx_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.4bpp.lz");
|
const u32 gBattleAnimSpriteGfx_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.4bpp.lz");
|
||||||
const u32 gBattleAnimSpritePal_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.gbapal.lz");
|
const u32 gBattleAnimSpritePal_PinkCloud[] = INCBIN_U32("graphics/battle_anims/sprites/pink_cloud.gbapal.lz");
|
||||||
@@ -1298,19 +1296,19 @@ const u8 gFireRedMenuElements_Gfx[] = INCBIN_U8("graphics/interface_fr/menu.4bpp
|
|||||||
|
|
||||||
const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp");
|
const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp");
|
||||||
|
|
||||||
// contest link stuff, appears to be a set of tilemaps
|
// contest results screen
|
||||||
|
|
||||||
const u16 gUnknown_08DC63F8[] = INCBIN_U16("graphics/contest/clink_tilemap1.bin");
|
const u16 gNormalContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_normal.bin");
|
||||||
const u16 gUnknown_08DC6420[] = INCBIN_U16("graphics/contest/clink_tilemap2.bin");
|
const u16 gSuperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_super.bin");
|
||||||
const u16 gUnknown_08DC6448[] = INCBIN_U16("graphics/contest/clink_tilemap3.bin");
|
const u16 gHyperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_hyper.bin");
|
||||||
const u16 gUnknown_08DC6470[] = INCBIN_U16("graphics/contest/clink_tilemap4.bin");
|
const u16 gMasterContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_master.bin");
|
||||||
const u16 gUnknown_08DC6498[] = INCBIN_U16("graphics/contest/clink_tilemap5.bin");
|
const u16 gLinkContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_link.bin");
|
||||||
const u16 gUnknown_08DC64AC[] = INCBIN_U16("graphics/contest/clink_tilemap6.bin");
|
const u16 gCoolContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cool.bin");
|
||||||
const u16 gUnknown_08DC64C0[] = INCBIN_U16("graphics/contest/clink_tilemap7.bin");
|
const u16 gBeautyContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_beauty.bin");
|
||||||
const u16 gUnknown_08DC64D4[] = INCBIN_U16("graphics/contest/clink_tilemap8.bin");
|
const u16 gCuteContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cute.bin");
|
||||||
const u16 gUnknown_08DC64E8[] = INCBIN_U16("graphics/contest/clink_tilemap9.bin");
|
const u16 gSmartContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_smart.bin");
|
||||||
const u16 gUnknown_08DC64FC[] = INCBIN_U16("graphics/contest/clink_tilemap10.bin");
|
const u16 gToughContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_tough.bin");
|
||||||
const u16 gUnknown_08DC6510[] = INCBIN_U16("graphics/contest/clink_tilemap11.bin");
|
const u16 gContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen.bin");
|
||||||
|
|
||||||
// pokenav
|
// pokenav
|
||||||
|
|
||||||
|
|||||||
+196
-142
@@ -33,9 +33,12 @@
|
|||||||
#include "fldeff_misc.h"
|
#include "fldeff_misc.h"
|
||||||
#include "trainer_pokemon_sprites.h"
|
#include "trainer_pokemon_sprites.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "rom_81520A8.h"
|
#include "confetti_util.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
|
#define HALL_OF_FAME_MAX_TEAMS 50
|
||||||
|
#define TAG_CONFETTI 1001
|
||||||
|
|
||||||
struct HallofFameMon
|
struct HallofFameMon
|
||||||
{
|
{
|
||||||
u32 tid;
|
u32 tid;
|
||||||
@@ -58,33 +61,31 @@ struct HofGfx
|
|||||||
u8 tilemap2[0x1000];
|
u8 tilemap2[0x1000];
|
||||||
};
|
};
|
||||||
|
|
||||||
static EWRAM_DATA u32 sUnknown_0203BCD4 = 0;
|
static EWRAM_DATA u32 sHofFadePalettes = 0;
|
||||||
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
|
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
|
||||||
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
||||||
|
|
||||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||||
|
|
||||||
#define HALL_OF_FAME_MAX_TEAMS 50
|
|
||||||
|
|
||||||
// this file's functions
|
// this file's functions
|
||||||
static void ClearVramOamPltt_LoadHofPal(void);
|
static void ClearVramOamPltt_LoadHofPal(void);
|
||||||
static void sub_8174F70(void);
|
static void LoadHofGfx(void);
|
||||||
static void sub_8174FAC(void);
|
static void InitHofBgs(void);
|
||||||
static bool8 sub_81751FC(void);
|
static bool8 CreateHofConfettiSprite(void);
|
||||||
static void SetCallback2AfterHallOfFameDisplay(void);
|
static void SetCallback2AfterHallOfFameDisplay(void);
|
||||||
static bool8 sub_8175024(void);
|
static bool8 sub_8175024(void);
|
||||||
static void Task_Hof_InitMonData(u8 taskId);
|
static void Task_Hof_InitMonData(u8 taskId);
|
||||||
static void Task_Hof_InitTeamSaveData(u8 taskId);
|
static void Task_Hof_InitTeamSaveData(u8 taskId);
|
||||||
static void Task_Hof_SetMonDisplayTask(u8 taskId);
|
static void Task_Hof_SetMonDisplayTask(u8 taskId);
|
||||||
static void Task_Hof_TrySaveData(u8 taskId);
|
static void Task_Hof_TrySaveData(u8 taskId);
|
||||||
static void Task_Hof_WaitForFrames(u8 taskId);
|
static void Task_Hof_WaitToDisplayMon(u8 taskId);
|
||||||
static void Task_Hof_DisplayMon(u8 taskId);
|
static void Task_Hof_DisplayMon(u8 taskId);
|
||||||
static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId);
|
static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId);
|
||||||
static void Task_Hof_TryDisplayAnotherMon(u8 taskId);
|
static void Task_Hof_TryDisplayAnotherMon(u8 taskId);
|
||||||
static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId);
|
static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId);
|
||||||
static void sub_8173DC0(u8 taskId);
|
static void Task_Hof_DoConfetti(u8 taskId);
|
||||||
static void sub_8173EA4(u8 taskId);
|
static void Task_Hof_WaitToDisplayPlayer(u8 taskId);
|
||||||
static void sub_8173EE4(u8 taskId);
|
static void Task_Hof_DisplayPlayer(u8 taskId);
|
||||||
static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId);
|
static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId);
|
||||||
static void Task_Hof_ExitOnKeyPressed(u8 taskId);
|
static void Task_Hof_ExitOnKeyPressed(u8 taskId);
|
||||||
static void Task_Hof_HandlePaletteOnExit(u8 taskId);
|
static void Task_Hof_HandlePaletteOnExit(u8 taskId);
|
||||||
@@ -101,8 +102,8 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite);
|
|||||||
static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2);
|
static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2);
|
||||||
static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2);
|
static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2);
|
||||||
static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
|
static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
|
||||||
static void Task_DoConfettiEffect(u8 taskId);
|
static void Task_DoDomeConfetti(u8 taskId);
|
||||||
static void sub_81751A4(struct Sprite* sprite);
|
static void SpriteCB_HofConfetti(struct Sprite* sprite);
|
||||||
|
|
||||||
// const rom data
|
// const rom data
|
||||||
static const struct BgTemplate sHof_BgTemplates[] =
|
static const struct BgTemplate sHof_BgTemplates[] =
|
||||||
@@ -143,15 +144,15 @@ static const u8 sPlayerInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_D
|
|||||||
|
|
||||||
static const u8 sUnused_085E538C[] = {4, 5, 0, 0};
|
static const u8 sUnused_085E538C[] = {4, 5, 0, 0};
|
||||||
|
|
||||||
static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet[] =
|
static const struct CompressedSpriteSheet sSpriteSheet_Confetti[] =
|
||||||
{
|
{
|
||||||
{gContestConfetti_Gfx, 0x220, 1001},
|
{.data = gConfetti_Gfx, .size = 0x220, .tag = TAG_CONFETTI},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette[] =
|
static const struct CompressedSpritePalette sSpritePalette_Confetti[] =
|
||||||
{
|
{
|
||||||
{gContestConfetti_Pal, 1001},
|
{.data = gConfetti_Pal, .tag = TAG_CONFETTI},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -172,7 +173,7 @@ static const s16 sHallOfFame_MonHalfTeamPositions[PARTY_SIZE / 2][4] =
|
|||||||
{-86, 244, 184, 64}
|
{-86, 244, 184, 64}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct OamData sOamData_85E53FC =
|
static const struct OamData sOamData_Confetti =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = ST_OAM_AFFINE_OFF,
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
@@ -189,126 +190,138 @@ static const struct OamData sOamData_85E53FC =
|
|||||||
.affineParam = 0,
|
.affineParam = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5404[] =
|
static const union AnimCmd sAnim_PinkConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(0, 30),
|
ANIMCMD_FRAME(0, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E540C[] =
|
static const union AnimCmd sAnim_RedConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(1, 30),
|
ANIMCMD_FRAME(1, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5414[] =
|
static const union AnimCmd sAnim_BlueConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(2, 30),
|
ANIMCMD_FRAME(2, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E541C[] =
|
static const union AnimCmd sAnim_RedConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(3, 30),
|
ANIMCMD_FRAME(3, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5424[] =
|
static const union AnimCmd sAnim_BlueConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(4, 30),
|
ANIMCMD_FRAME(4, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E542C[] =
|
static const union AnimCmd sAnim_YellowConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(5, 30),
|
ANIMCMD_FRAME(5, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5434[] =
|
static const union AnimCmd sAnim_WhiteConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(6, 30),
|
ANIMCMD_FRAME(6, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E543C[] =
|
static const union AnimCmd sAnim_GreenConfettiA[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(7, 30),
|
ANIMCMD_FRAME(7, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5444[] =
|
static const union AnimCmd sAnim_PinkConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(8, 30),
|
ANIMCMD_FRAME(8, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E544C[] =
|
static const union AnimCmd sAnim_BlueConfettiC[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(9, 30),
|
ANIMCMD_FRAME(9, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5454[] =
|
static const union AnimCmd sAnim_YellowConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(10, 30),
|
ANIMCMD_FRAME(10, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E545C[] =
|
static const union AnimCmd sAnim_WhiteConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(11, 30),
|
ANIMCMD_FRAME(11, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5464[] =
|
static const union AnimCmd sAnim_GreenConfettiB[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(12, 30),
|
ANIMCMD_FRAME(12, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E546C[] =
|
static const union AnimCmd sAnim_PinkConfettiC[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(13, 30),
|
ANIMCMD_FRAME(13, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5474[] =
|
static const union AnimCmd sAnim_RedConfettiC[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(14, 30),
|
ANIMCMD_FRAME(14, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E547C[] =
|
static const union AnimCmd sAnim_YellowConfettiC[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(15, 30),
|
ANIMCMD_FRAME(15, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd sSpriteAnim_85E5484[] =
|
static const union AnimCmd sAnim_WhiteConfettiC[] =
|
||||||
{
|
{
|
||||||
ANIMCMD_FRAME(16, 30),
|
ANIMCMD_FRAME(16, 30),
|
||||||
ANIMCMD_END
|
ANIMCMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const union AnimCmd * const sSpriteAnimTable_85E548C[] =
|
static const union AnimCmd * const sAnims_Confetti[] =
|
||||||
{
|
{
|
||||||
sSpriteAnim_85E5404, sSpriteAnim_85E540C, sSpriteAnim_85E5414, sSpriteAnim_85E541C,
|
sAnim_PinkConfettiA,
|
||||||
sSpriteAnim_85E5424, sSpriteAnim_85E542C, sSpriteAnim_85E5434, sSpriteAnim_85E543C,
|
sAnim_RedConfettiA,
|
||||||
sSpriteAnim_85E5444, sSpriteAnim_85E544C, sSpriteAnim_85E5454, sSpriteAnim_85E545C,
|
sAnim_BlueConfettiA,
|
||||||
sSpriteAnim_85E5464, sSpriteAnim_85E546C, sSpriteAnim_85E5474, sSpriteAnim_85E547C,
|
sAnim_RedConfettiB,
|
||||||
sSpriteAnim_85E5484
|
sAnim_BlueConfettiB,
|
||||||
|
sAnim_YellowConfettiA,
|
||||||
|
sAnim_WhiteConfettiA,
|
||||||
|
sAnim_GreenConfettiA,
|
||||||
|
sAnim_PinkConfettiB,
|
||||||
|
sAnim_BlueConfettiC,
|
||||||
|
sAnim_YellowConfettiB,
|
||||||
|
sAnim_WhiteConfettiB,
|
||||||
|
sAnim_GreenConfettiB,
|
||||||
|
sAnim_PinkConfettiC,
|
||||||
|
sAnim_RedConfettiC,
|
||||||
|
sAnim_YellowConfettiC,
|
||||||
|
sAnim_WhiteConfettiC
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteTemplate sSpriteTemplate_85E54D0 =
|
static const struct SpriteTemplate sSpriteTemplate_HofConfetti =
|
||||||
{
|
{
|
||||||
.tileTag = 1001,
|
.tileTag = TAG_CONFETTI,
|
||||||
.paletteTag = 1001,
|
.paletteTag = TAG_CONFETTI,
|
||||||
.oam = &sOamData_85E53FC,
|
.oam = &sOamData_Confetti,
|
||||||
.anims = sSpriteAnimTable_85E548C,
|
.anims = sAnims_Confetti,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = sub_81751A4
|
.callback = SpriteCB_HofConfetti
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/misc/japanese_hof.gbapal");
|
static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/misc/japanese_hof.gbapal");
|
||||||
@@ -317,10 +330,19 @@ static const u32 sHallOfFame_Gfx[] = INCBIN_U32("graphics/misc/japanese_hof.4bpp
|
|||||||
|
|
||||||
static const struct HallofFameMon sDummyFameMon =
|
static const struct HallofFameMon sDummyFameMon =
|
||||||
{
|
{
|
||||||
0x3EA03EA, 0, 0, 0, {0}
|
.tid = 0x3EA03EA,
|
||||||
|
.personality = 0,
|
||||||
|
.species = SPECIES_NONE,
|
||||||
|
.lvl = 0,
|
||||||
|
.nick = {0}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 sUnused2[] = {2, 1, 3, 6, 4, 5, 0, 0};
|
// Unused, order of party slots on Hall of Fame screen
|
||||||
|
static const u8 sHallOfFame_SlotOrder[] = {
|
||||||
|
2, 1, 3,
|
||||||
|
6, 4, 5,
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
|
||||||
// code
|
// code
|
||||||
static void VBlankCB_HallOfFame(void)
|
static void VBlankCB_HallOfFame(void)
|
||||||
@@ -350,14 +372,14 @@ static bool8 InitHallOfFameScreen(void)
|
|||||||
gMain.state = 1;
|
gMain.state = 1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sub_8174F70();
|
LoadHofGfx();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
|
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
|
||||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
sub_8174FAC();
|
InitHofBgs();
|
||||||
sHofGfxPtr->state = 0;
|
sHofGfxPtr->state = 0;
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
@@ -433,7 +455,7 @@ static void Task_Hof_InitMonData(u8 taskId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sHofMonPtr->mon[i].species = 0;
|
sHofMonPtr->mon[i].species = SPECIES_NONE;
|
||||||
sHofMonPtr->mon[i].tid = 0;
|
sHofMonPtr->mon[i].tid = 0;
|
||||||
sHofMonPtr->mon[i].personality = 0;
|
sHofMonPtr->mon[i].personality = 0;
|
||||||
sHofMonPtr->mon[i].lvl = 0;
|
sHofMonPtr->mon[i].lvl = 0;
|
||||||
@@ -441,7 +463,7 @@ static void Task_Hof_InitMonData(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sUnknown_0203BCD4 = 0;
|
sHofFadePalettes = 0;
|
||||||
gTasks[taskId].tDisplayedMonId = 0;
|
gTasks[taskId].tDisplayedMonId = 0;
|
||||||
gTasks[taskId].tPlayerSpriteID = 0xFF;
|
gTasks[taskId].tPlayerSpriteID = 0xFF;
|
||||||
|
|
||||||
@@ -514,12 +536,12 @@ static void Task_Hof_TrySaveData(u8 taskId)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
PlaySE(SE_SAVE);
|
PlaySE(SE_SAVE);
|
||||||
gTasks[taskId].func = Task_Hof_WaitForFrames;
|
gTasks[taskId].func = Task_Hof_WaitToDisplayMon;
|
||||||
gTasks[taskId].tFrameCount = 32;
|
gTasks[taskId].tFrameCount = 32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Task_Hof_WaitForFrames(u8 taskId)
|
static void Task_Hof_WaitToDisplayMon(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].tFrameCount)
|
if (gTasks[taskId].tFrameCount)
|
||||||
gTasks[taskId].tFrameCount--;
|
gTasks[taskId].tFrameCount--;
|
||||||
@@ -539,32 +561,32 @@ static void Task_Hof_SetMonDisplayTask(u8 taskId)
|
|||||||
static void Task_Hof_DisplayMon(u8 taskId)
|
static void Task_Hof_DisplayMon(u8 taskId)
|
||||||
{
|
{
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
s16 xPos, yPos, field4, field6;
|
s16 startX, startY, destX, destY;
|
||||||
|
|
||||||
u16 currMonId = gTasks[taskId].tDisplayedMonId;
|
u16 currMonId = gTasks[taskId].tDisplayedMonId;
|
||||||
struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
|
struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
|
||||||
|
|
||||||
if (gTasks[taskId].tMonNumber > PARTY_SIZE / 2)
|
if (gTasks[taskId].tMonNumber > PARTY_SIZE / 2)
|
||||||
{
|
{
|
||||||
xPos = sHallOfFame_MonFullTeamPositions[currMonId][0];
|
startX = sHallOfFame_MonFullTeamPositions[currMonId][0];
|
||||||
yPos = sHallOfFame_MonFullTeamPositions[currMonId][1];
|
startY = sHallOfFame_MonFullTeamPositions[currMonId][1];
|
||||||
field4 = sHallOfFame_MonFullTeamPositions[currMonId][2];
|
destX = sHallOfFame_MonFullTeamPositions[currMonId][2];
|
||||||
field6 = sHallOfFame_MonFullTeamPositions[currMonId][3];
|
destY = sHallOfFame_MonFullTeamPositions[currMonId][3];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xPos = sHallOfFame_MonHalfTeamPositions[currMonId][0];
|
startX = sHallOfFame_MonHalfTeamPositions[currMonId][0];
|
||||||
yPos = sHallOfFame_MonHalfTeamPositions[currMonId][1];
|
startY = sHallOfFame_MonHalfTeamPositions[currMonId][1];
|
||||||
field4 = sHallOfFame_MonHalfTeamPositions[currMonId][2];
|
destX = sHallOfFame_MonHalfTeamPositions[currMonId][2];
|
||||||
field6 = sHallOfFame_MonHalfTeamPositions[currMonId][3];
|
destY = sHallOfFame_MonHalfTeamPositions[currMonId][3];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currMon->species == SPECIES_EGG)
|
if (currMon->species == SPECIES_EGG)
|
||||||
field6 += 10;
|
destY += 10;
|
||||||
|
|
||||||
spriteId = CreatePicSprite2(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
|
spriteId = CreatePicSprite2(currMon->species, currMon->tid, currMon->personality, 1, startX, startY, currMonId, 0xFFFF);
|
||||||
gSprites[spriteId].tDestinationX = field4;
|
gSprites[spriteId].tDestinationX = destX;
|
||||||
gSprites[spriteId].tDestinationY = field6;
|
gSprites[spriteId].tDestinationY = destY;
|
||||||
gSprites[spriteId].data[0] = 0;
|
gSprites[spriteId].data[0] = 0;
|
||||||
gSprites[spriteId].tSpecies = currMon->species;
|
gSprites[spriteId].tSpecies = currMon->species;
|
||||||
gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
|
gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
|
||||||
@@ -599,11 +621,11 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum);
|
sHofFadePalettes |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum);
|
||||||
if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
|
if (gTasks[taskId].tDisplayedMonId < PARTY_SIZE - 1 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
|
||||||
{
|
{
|
||||||
gTasks[taskId].tDisplayedMonId++;
|
gTasks[taskId].tDisplayedMonId++;
|
||||||
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
|
BeginNormalPaletteFade(sHofFadePalettes, 0, 12, 12, RGB(16, 29, 24));
|
||||||
gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1;
|
gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1;
|
||||||
gTasks[taskId].func = Task_Hof_DisplayMon;
|
gTasks[taskId].func = Task_Hof_DisplayMon;
|
||||||
}
|
}
|
||||||
@@ -628,16 +650,19 @@ static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId)
|
|||||||
HallOfFame_PrintWelcomeText(0, 15);
|
HallOfFame_PrintWelcomeText(0, 15);
|
||||||
PlaySE(SE_DENDOU);
|
PlaySE(SE_DENDOU);
|
||||||
gTasks[taskId].tFrameCount = 400;
|
gTasks[taskId].tFrameCount = 400;
|
||||||
gTasks[taskId].func = sub_8173DC0;
|
gTasks[taskId].func = Task_Hof_DoConfetti;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8173DC0(u8 taskId)
|
static void Task_Hof_DoConfetti(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].tFrameCount != 0)
|
if (gTasks[taskId].tFrameCount != 0)
|
||||||
{
|
{
|
||||||
gTasks[taskId].tFrameCount--;
|
gTasks[taskId].tFrameCount--;
|
||||||
|
|
||||||
|
// Create new confetti every 4th frame for the first 290 frames
|
||||||
|
// For the last 110 frames wait for the existing confetti to fall offscreen
|
||||||
if ((gTasks[taskId].tFrameCount & 3) == 0 && gTasks[taskId].tFrameCount > 110)
|
if ((gTasks[taskId].tFrameCount & 3) == 0 && gTasks[taskId].tFrameCount > 110)
|
||||||
sub_81751FC();
|
CreateHofConfettiSprite();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -647,19 +672,19 @@ static void sub_8173DC0(u8 taskId)
|
|||||||
if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
|
if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
|
||||||
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
|
gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
|
||||||
}
|
}
|
||||||
BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24));
|
BeginNormalPaletteFade(sHofFadePalettes, 0, 12, 12, RGB(16, 29, 24));
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(0));
|
FillWindowPixelBuffer(0, PIXEL_FILL(0));
|
||||||
CopyWindowToVram(0, 3);
|
CopyWindowToVram(0, 3);
|
||||||
gTasks[taskId].tFrameCount = 7;
|
gTasks[taskId].tFrameCount = 7;
|
||||||
gTasks[taskId].func = sub_8173EA4;
|
gTasks[taskId].func = Task_Hof_WaitToDisplayPlayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8173EA4(u8 taskId)
|
static void Task_Hof_WaitToDisplayPlayer(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].tFrameCount >= 16)
|
if (gTasks[taskId].tFrameCount >= 16)
|
||||||
{
|
{
|
||||||
gTasks[taskId].func = sub_8173EE4;
|
gTasks[taskId].func = Task_Hof_DisplayPlayer;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -668,7 +693,7 @@ static void sub_8173EA4(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8173EE4(u8 taskId)
|
static void Task_Hof_DisplayPlayer(u8 taskId)
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
|
||||||
ShowBg(0);
|
ShowBg(0);
|
||||||
@@ -784,14 +809,14 @@ void CB2_DoHallOfFamePC(void)
|
|||||||
gMain.state = 1;
|
gMain.state = 1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sub_8174F70();
|
LoadHofGfx();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||||
sub_8174FAC();
|
InitHofBgs();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@@ -874,7 +899,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
|
|||||||
savedTeams++;
|
savedTeams++;
|
||||||
|
|
||||||
currMon = &savedTeams->mon[0];
|
currMon = &savedTeams->mon[0];
|
||||||
sUnknown_0203BCD4 = 0;
|
sHofFadePalettes = 0;
|
||||||
gTasks[taskId].tCurrMonId = 0;
|
gTasks[taskId].tCurrMonId = 0;
|
||||||
gTasks[taskId].tMonNo = 0;
|
gTasks[taskId].tMonNo = 0;
|
||||||
|
|
||||||
@@ -949,8 +974,8 @@ static void Task_HofPC_PrintMonInfo(u8 taskId)
|
|||||||
|
|
||||||
currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrMonId);
|
currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrMonId);
|
||||||
gSprites[currMonID].oam.priority = 0;
|
gSprites[currMonID].oam.priority = 0;
|
||||||
sUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
|
sHofFadePalettes = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
|
||||||
BlendPalettesUnfaded(sUnknown_0203BCD4, 0xC, RGB(16, 29, 24));
|
BlendPalettesUnfaded(sHofFadePalettes, 0xC, RGB(16, 29, 24));
|
||||||
|
|
||||||
currMon = &savedTeams->mon[gTasks[taskId].tCurrMonId];
|
currMon = &savedTeams->mon[gTasks[taskId].tCurrMonId];
|
||||||
if (currMon->species != SPECIES_EGG)
|
if (currMon->species != SPECIES_EGG)
|
||||||
@@ -972,7 +997,7 @@ static void Task_HofPC_HandleInput(u8 taskId)
|
|||||||
if (gTasks[taskId].tCurrTeamNo != 0) // prepare another team to view
|
if (gTasks[taskId].tCurrTeamNo != 0) // prepare another team to view
|
||||||
{
|
{
|
||||||
gTasks[taskId].tCurrTeamNo--;
|
gTasks[taskId].tCurrTeamNo--;
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
u8 spriteId = gTasks[taskId].tMonSpriteId(i);
|
u8 spriteId = gTasks[taskId].tMonSpriteId(i);
|
||||||
if (spriteId != 0xFF)
|
if (spriteId != 0xFF)
|
||||||
@@ -1250,7 +1275,7 @@ static void ClearVramOamPltt_LoadHofPal(void)
|
|||||||
LoadPalette(sHallOfFame_Pal, 0, 0x20);
|
LoadPalette(sHallOfFame_Pal, 0, 0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8174F70(void)
|
static void LoadHofGfx(void)
|
||||||
{
|
{
|
||||||
ScanlineEffect_Stop();
|
ScanlineEffect_Stop();
|
||||||
ResetTasks();
|
ResetTasks();
|
||||||
@@ -1259,11 +1284,11 @@ static void sub_8174F70(void)
|
|||||||
ResetAllPicSprites();
|
ResetAllPicSprites();
|
||||||
FreeAllSpritePalettes();
|
FreeAllSpritePalettes();
|
||||||
gReservedSpritePaletteCount = 8;
|
gReservedSpritePaletteCount = 8;
|
||||||
LoadCompressedSpriteSheet(sHallOfFame_ConfettiSpriteSheet);
|
LoadCompressedSpriteSheet(sSpriteSheet_Confetti);
|
||||||
LoadCompressedSpritePalette(sHallOfFame_ConfettiSpritePalette);
|
LoadCompressedSpritePalette(sSpritePalette_Confetti);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8174FAC(void)
|
static void InitHofBgs(void)
|
||||||
{
|
{
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates));
|
InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates));
|
||||||
@@ -1344,7 +1369,10 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
|
|||||||
#undef tDestinationY
|
#undef tDestinationY
|
||||||
#undef tSpecies
|
#undef tSpecies
|
||||||
|
|
||||||
static void sub_81751A4(struct Sprite* sprite)
|
#define sSineIdx data[0]
|
||||||
|
#define sExtraY data[1]
|
||||||
|
|
||||||
|
static void SpriteCB_HofConfetti(struct Sprite* sprite)
|
||||||
{
|
{
|
||||||
if (sprite->pos2.y > 120)
|
if (sprite->pos2.y > 120)
|
||||||
{
|
{
|
||||||
@@ -1353,20 +1381,20 @@ static void sub_81751A4(struct Sprite* sprite)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
u16 rand;
|
u16 rand;
|
||||||
u8 tableID;
|
u8 sineIdx;
|
||||||
|
|
||||||
sprite->pos2.y++;
|
sprite->pos2.y++;
|
||||||
sprite->pos2.y += sprite->data[1];
|
sprite->pos2.y += sprite->sExtraY;
|
||||||
|
|
||||||
tableID = sprite->data[0];
|
sineIdx = sprite->sSineIdx;
|
||||||
rand = (Random() % 4) + 8;
|
rand = (Random() % 4) + 8;
|
||||||
sprite->pos2.x = rand * gSineTable[tableID] / 256;
|
sprite->pos2.x = rand * gSineTable[sineIdx] / 256;
|
||||||
|
|
||||||
sprite->data[0] += 4;
|
sprite->sSineIdx += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_81751FC(void)
|
static bool8 CreateHofConfettiSprite(void)
|
||||||
{
|
{
|
||||||
u8 spriteID;
|
u8 spriteID;
|
||||||
struct Sprite* sprite;
|
struct Sprite* sprite;
|
||||||
@@ -1374,110 +1402,136 @@ static bool8 sub_81751FC(void)
|
|||||||
s16 posX = Random() % 240;
|
s16 posX = Random() % 240;
|
||||||
s16 posY = -(Random() % 8);
|
s16 posY = -(Random() % 8);
|
||||||
|
|
||||||
spriteID = CreateSprite(&sSpriteTemplate_85E54D0, posX, posY, 0);
|
spriteID = CreateSprite(&sSpriteTemplate_HofConfetti, posX, posY, 0);
|
||||||
sprite = &gSprites[spriteID];
|
sprite = &gSprites[spriteID];
|
||||||
|
|
||||||
StartSpriteAnim(sprite, Random() % 17);
|
StartSpriteAnim(sprite, Random() % ARRAY_COUNT(sAnims_Confetti));
|
||||||
|
|
||||||
|
// 1/4 confetti sprites move an extra Y coord each frame
|
||||||
if (Random() & 3)
|
if (Random() & 3)
|
||||||
sprite->data[1] = 0;
|
sprite->sExtraY = 0;
|
||||||
else
|
else
|
||||||
sprite->data[1] = 1;
|
sprite->sExtraY = 1;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used when a Battle Dome tourney is won
|
// The below confetti functions are used when a Battle Dome tourney is won
|
||||||
void DoConfettiEffect(void)
|
// For the Hall of Fame confetti see Task_Hof_DoConfetti
|
||||||
|
// The end result is essentially the same, just a very different way of handling it
|
||||||
|
#define tState data[0]
|
||||||
|
#define tTimer data[1]
|
||||||
|
#define tConfettiCount data[15]
|
||||||
|
|
||||||
|
// Indexes into the data array of the struct ConfettiUtil
|
||||||
|
#define CONFETTI_SINE_IDX 0
|
||||||
|
#define CONFETTI_EXTRA_Y 1
|
||||||
|
#define CONFETTI_TASK_ID 7
|
||||||
|
|
||||||
|
void DoDomeConfetti(void)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
gSpecialVar_0x8004 = 180;
|
gSpecialVar_0x8004 = 180;
|
||||||
taskId = CreateTask(Task_DoConfettiEffect, 0);
|
taskId = CreateTask(Task_DoDomeConfetti, 0);
|
||||||
if (taskId != 0xFF)
|
if (taskId != 0xFF)
|
||||||
{
|
{
|
||||||
gTasks[taskId].data[1] = gSpecialVar_0x8004;
|
gTasks[taskId].tTimer = gSpecialVar_0x8004;
|
||||||
gSpecialVar_0x8005 = taskId;
|
gSpecialVar_0x8005 = taskId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void StopConfettiEffect(void)
|
static void StopDomeConfetti(void)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
|
|
||||||
if ((taskId = FindTaskIdByFunc(Task_DoConfettiEffect)) != 0xFF)
|
if ((taskId = FindTaskIdByFunc(Task_DoDomeConfetti)) != 0xFF)
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
|
|
||||||
sub_8152254();
|
ConfettiUtil_Free();
|
||||||
FreeSpriteTilesByTag(0x3E9);
|
FreeSpriteTilesByTag(TAG_CONFETTI);
|
||||||
FreeSpritePaletteByTag(0x3E9);
|
FreeSpritePaletteByTag(TAG_CONFETTI);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81752F4(struct UnkStruct_81520A8 *structPtr)
|
static void UpdateDomeConfetti(struct ConfettiUtil *util)
|
||||||
{
|
{
|
||||||
if (structPtr->yDelta > 110)
|
if (util->yDelta > 110)
|
||||||
{
|
{
|
||||||
gTasks[structPtr->data[7]].data[15]--;
|
// Destroy confetti after it falls far enough
|
||||||
sub_81525D0(structPtr->id);
|
gTasks[util->data[CONFETTI_TASK_ID]].tConfettiCount--;
|
||||||
|
ConfettiUtil_Remove(util->id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u8 var;
|
// Move confetti down
|
||||||
|
u8 sineIdx;
|
||||||
s32 rand;
|
s32 rand;
|
||||||
|
|
||||||
structPtr->yDelta++;
|
util->yDelta++;
|
||||||
structPtr->yDelta += structPtr->data[1];
|
util->yDelta += util->data[CONFETTI_EXTRA_Y];
|
||||||
|
|
||||||
var = structPtr->data[0];
|
sineIdx = util->data[CONFETTI_SINE_IDX];
|
||||||
rand = Random();
|
rand = Random();
|
||||||
rand &= 3;
|
rand &= 3;
|
||||||
rand += 8;
|
rand += 8;
|
||||||
structPtr->xDelta = (rand) * ((gSineTable[var])) / 256;
|
util->xDelta = (rand) * ((gSineTable[sineIdx])) / 256;
|
||||||
|
|
||||||
structPtr->data[0] += 4;
|
util->data[CONFETTI_SINE_IDX] += 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Task_DoConfettiEffect(u8 taskId)
|
static void Task_DoDomeConfetti(u8 taskId)
|
||||||
{
|
{
|
||||||
u32 var = 0;
|
u32 id = 0;
|
||||||
u16 *data = gTasks[taskId].data;
|
u16 *data = gTasks[taskId].data;
|
||||||
|
|
||||||
switch (data[0])
|
switch (tState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (!sub_81521C0(0x40))
|
if (!ConfettiUtil_Init(64))
|
||||||
{
|
{
|
||||||
|
// Init failed
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
gSpecialVar_0x8004 = var;
|
gSpecialVar_0x8004 = 0;
|
||||||
gSpecialVar_0x8005 = 0xFFFF;
|
gSpecialVar_0x8005 = 0xFFFF;
|
||||||
}
|
}
|
||||||
LoadCompressedSpriteSheet(sHallOfFame_ConfettiSpriteSheet);
|
LoadCompressedSpriteSheet(sSpriteSheet_Confetti);
|
||||||
LoadCompressedSpritePalette(sHallOfFame_ConfettiSpritePalette);
|
LoadCompressedSpritePalette(sSpritePalette_Confetti);
|
||||||
data[0]++;
|
tState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (data[1] != 0 && data[1] % 3 == 0)
|
if (tTimer != 0 && tTimer % 3 == 0)
|
||||||
{
|
{
|
||||||
var = sub_81524C4(&sOamData_85E53FC, 0x3E9, 0x3E9, Random() % 240, -(Random() % 8), Random() % 0x11, var);
|
// Create new confetti every 3 frames
|
||||||
if (var != 0xFF)
|
id = ConfettiUtil_AddNew(&sOamData_Confetti,
|
||||||
|
TAG_CONFETTI,
|
||||||
|
TAG_CONFETTI,
|
||||||
|
Random() % 240,
|
||||||
|
-(Random() % 8),
|
||||||
|
Random() % ARRAY_COUNT(sAnims_Confetti),
|
||||||
|
id);
|
||||||
|
if (id != 0xFF)
|
||||||
{
|
{
|
||||||
sub_8152438(var, sub_81752F4);
|
ConfettiUtil_SetCallback(id, UpdateDomeConfetti);
|
||||||
if ((Random() & 3) == 0)
|
|
||||||
sub_8152474(var, 1, 1);
|
// 1/4 of the confetti move an extra y coord every frame
|
||||||
sub_8152474(var, 7, taskId);
|
if ((Random() % 4) == 0)
|
||||||
data[15]++;
|
ConfettiUtil_SetData(id, CONFETTI_EXTRA_Y, 1);
|
||||||
|
|
||||||
|
ConfettiUtil_SetData(id, CONFETTI_TASK_ID, taskId);
|
||||||
|
tConfettiCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sub_81522D4();
|
|
||||||
if (data[1] != 0)
|
ConfettiUtil_Update();
|
||||||
data[1]--;
|
if (tTimer != 0)
|
||||||
else if (data[15] == 0)
|
tTimer--;
|
||||||
data[0] = 0xFF;
|
else if (tConfettiCount == 0)
|
||||||
|
tState = 0xFF;
|
||||||
break;
|
break;
|
||||||
case 0xFF:
|
case 0xFF:
|
||||||
StopConfettiEffect();
|
StopDomeConfetti();
|
||||||
gSpecialVar_0x8004 = var;
|
gSpecialVar_0x8004 = 0;
|
||||||
gSpecialVar_0x8005 = 0xFFFF;
|
gSpecialVar_0x8005 = 0xFFFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,218 +0,0 @@
|
|||||||
#include "global.h"
|
|
||||||
#include "rom_81520A8.h"
|
|
||||||
#include "malloc.h"
|
|
||||||
#include "main.h"
|
|
||||||
#include "digit_obj_util.h"
|
|
||||||
|
|
||||||
static EWRAM_DATA struct
|
|
||||||
{
|
|
||||||
u8 count;
|
|
||||||
struct UnkStruct_81520A8 *unk4;
|
|
||||||
} *sUnknown_0203ABB8 = NULL;
|
|
||||||
|
|
||||||
void sub_81520A8(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) // Unused.
|
|
||||||
{
|
|
||||||
u8 i;
|
|
||||||
u8 j;
|
|
||||||
u8 x;
|
|
||||||
u8 y;
|
|
||||||
|
|
||||||
for (i = 0, y = top; i < height; i++)
|
|
||||||
{
|
|
||||||
for (x = left, j = 0; j < width; j++)
|
|
||||||
{
|
|
||||||
*(u16 *)((dest) + (y * 64 + x * 2)) = value;
|
|
||||||
x = (x + 1) % 32;
|
|
||||||
}
|
|
||||||
y = (y + 1) % 32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sub_8152134(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) // Unused.
|
|
||||||
{
|
|
||||||
u8 i;
|
|
||||||
u8 j;
|
|
||||||
u8 x;
|
|
||||||
u8 y;
|
|
||||||
const u16 *_src;
|
|
||||||
|
|
||||||
for (i = 0, _src = src, y = top; i < height; i++)
|
|
||||||
{
|
|
||||||
for (x = left, j = 0; j < width; j++)
|
|
||||||
{
|
|
||||||
*(u16 *)((dest) + (y * 64 + x * 2)) = *(_src++);
|
|
||||||
x = (x + 1) % 32;
|
|
||||||
}
|
|
||||||
y = (y + 1) % 32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool32 sub_81521C0(u8 count)
|
|
||||||
{
|
|
||||||
u8 i = 0;
|
|
||||||
|
|
||||||
if (count == 0)
|
|
||||||
return FALSE;
|
|
||||||
if (count > 64)
|
|
||||||
count = 64;
|
|
||||||
|
|
||||||
sUnknown_0203ABB8 = AllocZeroed(sizeof(*sUnknown_0203ABB8));
|
|
||||||
if (sUnknown_0203ABB8 == NULL)
|
|
||||||
return FALSE;
|
|
||||||
sUnknown_0203ABB8->unk4 = AllocZeroed(count * sizeof(struct UnkStruct_81520A8));
|
|
||||||
if (sUnknown_0203ABB8->unk4 == NULL)
|
|
||||||
{
|
|
||||||
FREE_AND_SET_NULL(sUnknown_0203ABB8);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
sUnknown_0203ABB8->count = count;
|
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
memcpy(&sUnknown_0203ABB8->unk4[i].oam, &gDummyOamData, sizeof(struct OamData));
|
|
||||||
sUnknown_0203ABB8->unk4[i].unk19_2 = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool32 sub_8152254(void)
|
|
||||||
{
|
|
||||||
u8 i = 0;
|
|
||||||
|
|
||||||
if (sUnknown_0203ABB8 == NULL)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
for (i = 0; i < sUnknown_0203ABB8->count; i++)
|
|
||||||
memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
|
|
||||||
|
|
||||||
memset(sUnknown_0203ABB8->unk4, 0, sUnknown_0203ABB8->count * sizeof(struct UnkStruct_81520A8));
|
|
||||||
FREE_AND_SET_NULL(sUnknown_0203ABB8->unk4);
|
|
||||||
memset(sUnknown_0203ABB8, 0, sizeof(*sUnknown_0203ABB8));
|
|
||||||
FREE_AND_SET_NULL(sUnknown_0203ABB8);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool32 sub_81522D4(void)
|
|
||||||
{
|
|
||||||
u8 i = 0;
|
|
||||||
|
|
||||||
if (sUnknown_0203ABB8 == NULL || sUnknown_0203ABB8->unk4 == NULL)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
for (i = 0; i < sUnknown_0203ABB8->count; i++)
|
|
||||||
{
|
|
||||||
if (sUnknown_0203ABB8->unk4[i].unk19_0 && sUnknown_0203ABB8->unk4[i].unk19_1)
|
|
||||||
{
|
|
||||||
if (sUnknown_0203ABB8->unk4[i].callback != NULL)
|
|
||||||
sUnknown_0203ABB8->unk4[i].callback(&sUnknown_0203ABB8->unk4[i]);
|
|
||||||
|
|
||||||
if (sUnknown_0203ABB8->unk4[i].unk19_2)
|
|
||||||
{
|
|
||||||
memcpy(&gMain.oamBuffer[i + 64], &gDummyOamData, sizeof(struct OamData));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sUnknown_0203ABB8->unk4[i].oam.y = sUnknown_0203ABB8->unk4[i].y + sUnknown_0203ABB8->unk4[i].yDelta;
|
|
||||||
sUnknown_0203ABB8->unk4[i].oam.x = sUnknown_0203ABB8->unk4[i].x + sUnknown_0203ABB8->unk4[i].xDelta;
|
|
||||||
sUnknown_0203ABB8->unk4[i].oam.priority = sUnknown_0203ABB8->unk4[i].priority;
|
|
||||||
sUnknown_0203ABB8->unk4[i].oam.tileNum = sUnknown_0203ABB8->unk4[i].tileNum;
|
|
||||||
memcpy(&gMain.oamBuffer[i + 64], &sUnknown_0203ABB8->unk4[i], sizeof(struct OamData));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool32 sub_81523F4(struct UnkStruct_81520A8 *structPtr, u8 arg1)
|
|
||||||
{
|
|
||||||
u16 tileStart;
|
|
||||||
|
|
||||||
if (structPtr == NULL)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
tileStart = GetSpriteTileStartByTag(structPtr->tileTag);
|
|
||||||
if (tileStart == 0xFFFF)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
structPtr->unk18 = arg1;
|
|
||||||
structPtr->tileNum = (GetTilesPerImage(structPtr->oam.shape, structPtr->oam.size) * arg1) + tileStart;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 sub_8152438(u8 id, void (*func)(struct UnkStruct_81520A8 *))
|
|
||||||
{
|
|
||||||
if (sUnknown_0203ABB8 == NULL || id >= sUnknown_0203ABB8->count)
|
|
||||||
return 0xFF;
|
|
||||||
else if (!sUnknown_0203ABB8->unk4[id].unk19_0)
|
|
||||||
return 0xFF;
|
|
||||||
|
|
||||||
sUnknown_0203ABB8->unk4[id].callback = func;
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 sub_8152474(u8 id, u8 dataArrayId, s16 dataValue)
|
|
||||||
{
|
|
||||||
if (sUnknown_0203ABB8 == NULL || id >= sUnknown_0203ABB8->count)
|
|
||||||
return 0xFF;
|
|
||||||
else if (!sUnknown_0203ABB8->unk4[id].unk19_0 || dataArrayId >= ARRAY_COUNT(sUnknown_0203ABB8->unk4[id].data))
|
|
||||||
return 0xFF;
|
|
||||||
|
|
||||||
sUnknown_0203ABB8->unk4[id].data[dataArrayId] = dataValue;
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 sub_81524C4(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 arg5, u8 priority)
|
|
||||||
{
|
|
||||||
struct UnkStruct_81520A8 *structPtr = NULL;
|
|
||||||
u8 i;
|
|
||||||
|
|
||||||
if (sUnknown_0203ABB8 == NULL || oam == NULL)
|
|
||||||
return 0xFF;
|
|
||||||
|
|
||||||
for (i = 0; i < sUnknown_0203ABB8->count; i++)
|
|
||||||
{
|
|
||||||
if (!sUnknown_0203ABB8->unk4[i].unk19_0)
|
|
||||||
{
|
|
||||||
structPtr = &sUnknown_0203ABB8->unk4[i];
|
|
||||||
memset(structPtr, 0, sizeof(*structPtr));
|
|
||||||
structPtr->id = i;
|
|
||||||
structPtr->unk19_0 = TRUE;
|
|
||||||
structPtr->unk19_1 = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (structPtr == NULL)
|
|
||||||
return 0xFF;
|
|
||||||
|
|
||||||
memcpy(&structPtr->oam, oam, sizeof(*oam));
|
|
||||||
structPtr->tileTag = tileTag;
|
|
||||||
structPtr->palTag = palTag;
|
|
||||||
structPtr->x = x;
|
|
||||||
structPtr->y = y;
|
|
||||||
structPtr->oam.paletteNum = IndexOfSpritePaletteTag(palTag);
|
|
||||||
if (priority < 4)
|
|
||||||
{
|
|
||||||
structPtr->priority = priority;
|
|
||||||
structPtr->oam.priority = priority;
|
|
||||||
}
|
|
||||||
sub_81523F4(structPtr, arg5);
|
|
||||||
|
|
||||||
return structPtr->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
u8 sub_81525D0(u8 id)
|
|
||||||
{
|
|
||||||
if (sUnknown_0203ABB8 == NULL || !sUnknown_0203ABB8->unk4[id].unk19_0)
|
|
||||||
return 0xFF;
|
|
||||||
|
|
||||||
memset(&sUnknown_0203ABB8->unk4[id], 0, sizeof(struct UnkStruct_81520A8));
|
|
||||||
sUnknown_0203ABB8->unk4[id].oam.y = 160;
|
|
||||||
sUnknown_0203ABB8->unk4[id].oam.x = 240;
|
|
||||||
sUnknown_0203ABB8->unk4[id].unk19_2 = TRUE;
|
|
||||||
memcpy(&gMain.oamBuffer[id + 64], &gDummyOamData, sizeof(struct OamData));
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
+6
-4
@@ -5,7 +5,7 @@
|
|||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
#include "coins.h"
|
#include "coins.h"
|
||||||
#include "contest.h"
|
#include "contest.h"
|
||||||
#include "contest_link_80F57C4.h"
|
#include "contest_util.h"
|
||||||
#include "contest_painting.h"
|
#include "contest_painting.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "decoration.h"
|
#include "decoration.h"
|
||||||
@@ -1469,7 +1469,9 @@ bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx)
|
|||||||
bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
|
bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
u8 contestWinnerId = ScriptReadByte(ctx);
|
u8 contestWinnerId = ScriptReadByte(ctx);
|
||||||
if (contestWinnerId)
|
|
||||||
|
// Don't save artist's painting yet
|
||||||
|
if (contestWinnerId != CONTEST_WINNER_ARTIST)
|
||||||
SetContestWinnerForPainting(contestWinnerId);
|
SetContestWinnerForPainting(contestWinnerId);
|
||||||
|
|
||||||
ShowContestWinner();
|
ShowContestWinner();
|
||||||
@@ -1953,14 +1955,14 @@ bool8 ScrCmd_startcontest(struct ScriptContext *ctx)
|
|||||||
|
|
||||||
bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx)
|
bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
sub_80F8484();
|
ShowContestResults();
|
||||||
ScriptContext1_Stop();
|
ScriptContext1_Stop();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
|
bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
|
||||||
{
|
{
|
||||||
sub_80F84C4(gSpecialVar_ContestCategory);
|
ContestLinkTransfer(gSpecialVar_ContestCategory);
|
||||||
ScriptContext1_Stop();
|
ScriptContext1_Stop();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "battle_gfx_sfx_util.h"
|
#include "battle_gfx_sfx_util.h"
|
||||||
#include "berry.h"
|
#include "berry.h"
|
||||||
#include "contest.h"
|
#include "contest.h"
|
||||||
#include "contest_link_80F57C4.h"
|
#include "contest_util.h"
|
||||||
#include "contest_painting.h"
|
#include "contest_painting.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "daycare.h"
|
#include "daycare.h"
|
||||||
@@ -122,7 +122,7 @@ void ShouldReadyContestArtist(void)
|
|||||||
{
|
{
|
||||||
if (gContestFinalStandings[gContestPlayerMonIndex] == 0
|
if (gContestFinalStandings[gContestPlayerMonIndex] == 0
|
||||||
&& gSpecialVar_ContestRank == CONTEST_RANK_MASTER
|
&& gSpecialVar_ContestRank == CONTEST_RANK_MASTER
|
||||||
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
&& gContestMonTotalPoints[gContestPlayerMonIndex] >= 800)
|
||||||
{
|
{
|
||||||
gSpecialVar_0x8004 = TRUE;
|
gSpecialVar_0x8004 = TRUE;
|
||||||
}
|
}
|
||||||
@@ -304,7 +304,7 @@ u8 GiveMonArtistRibbon(void)
|
|||||||
if (!hasArtistRibbon
|
if (!hasArtistRibbon
|
||||||
&& gContestFinalStandings[gContestPlayerMonIndex] == 0
|
&& gContestFinalStandings[gContestPlayerMonIndex] == 0
|
||||||
&& gSpecialVar_ContestRank == CONTEST_RANK_MASTER
|
&& gSpecialVar_ContestRank == CONTEST_RANK_MASTER
|
||||||
&& gUnknown_02039F08[gContestPlayerMonIndex] >= 800)
|
&& gContestMonTotalPoints[gContestPlayerMonIndex] >= 800)
|
||||||
{
|
{
|
||||||
hasArtistRibbon = 1;
|
hasArtistRibbon = 1;
|
||||||
SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON, &hasArtistRibbon);
|
||||||
|
|||||||
+2
-1
@@ -37,6 +37,7 @@
|
|||||||
#include "constants/event_bg.h"
|
#include "constants/event_bg.h"
|
||||||
#include "constants/decorations.h"
|
#include "constants/decorations.h"
|
||||||
#include "constants/event_objects.h"
|
#include "constants/event_objects.h"
|
||||||
|
#include "constants/field_specials.h"
|
||||||
#include "constants/items.h"
|
#include "constants/items.h"
|
||||||
#include "constants/maps.h"
|
#include "constants/maps.h"
|
||||||
#include "constants/map_types.h"
|
#include "constants/map_types.h"
|
||||||
@@ -1120,7 +1121,7 @@ const u8 *GetSecretBaseTrainerLoseText(void)
|
|||||||
|
|
||||||
void PrepSecretBaseBattleFlags(void)
|
void PrepSecretBaseBattleFlags(void)
|
||||||
{
|
{
|
||||||
TryGainNewFanFromCounter(1);
|
TryGainNewFanFromCounter(FANCOUNTER_BATTLED_AT_BASE);
|
||||||
gTrainerBattleOpponent_A = TRAINER_SECRET_BASE;
|
gTrainerBattleOpponent_A = TRAINER_SECRET_BASE;
|
||||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_SECRET_BASE;
|
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_SECRET_BASE;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1236,7 +1236,7 @@ const u8 gText_BDot[] = _("B.");
|
|||||||
const u8 gText_AnnouncingResults[] = _("Announcing the results!");
|
const u8 gText_AnnouncingResults[] = _("Announcing the results!");
|
||||||
const u8 gText_PreliminaryResults[] = _("The preliminary results!");
|
const u8 gText_PreliminaryResults[] = _("The preliminary results!");
|
||||||
const u8 gText_Round2Results[] = _("Round 2 results!");
|
const u8 gText_Round2Results[] = _("Round 2 results!");
|
||||||
const u8 gText_Var1sVar2Won[] = _("{STR_VAR_1}'s {STR_VAR_2} won!");
|
const u8 gText_ContestantsMonWon[] = _("{STR_VAR_1}'s {STR_VAR_2} won!");
|
||||||
const u8 gText_CommunicationStandby[] = _("Communication standby…");
|
const u8 gText_CommunicationStandby[] = _("Communication standby…");
|
||||||
const u8 gText_ColorDarkGrey[] = _("{COLOR DARK_GREY}");
|
const u8 gText_ColorDarkGrey[] = _("{COLOR DARK_GREY}");
|
||||||
const u8 gText_ColorDynamic6WhiteDynamic5[] = _("{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR6 WHITE DYNAMIC_COLOR5}"); // Unused
|
const u8 gText_ColorDynamic6WhiteDynamic5[] = _("{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR6 WHITE DYNAMIC_COLOR5}"); // Unused
|
||||||
|
|||||||
+2
-2
@@ -75,7 +75,7 @@
|
|||||||
.include "src/record_mixing.o"
|
.include "src/record_mixing.o"
|
||||||
.include "src/secret_base.o"
|
.include "src/secret_base.o"
|
||||||
.include "src/tv.o"
|
.include "src/tv.o"
|
||||||
.include "src/contest_link_80F57C4.o"
|
.include "src/contest_util.o"
|
||||||
.include "src/rotating_gate.o"
|
.include "src/rotating_gate.o"
|
||||||
.include "src/safari_zone.o"
|
.include "src/safari_zone.o"
|
||||||
.include "src/item_use.o"
|
.include "src/item_use.o"
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
.include "src/battle_transition.o"
|
.include "src/battle_transition.o"
|
||||||
.include "src/battle_message.o"
|
.include "src/battle_message.o"
|
||||||
.include "src/cable_car.o"
|
.include "src/cable_car.o"
|
||||||
.include "src/rom_81520A8.o"
|
.include "src/confetti_util.o"
|
||||||
.include "src/save.o"
|
.include "src/save.o"
|
||||||
.include "src/mystery_event_script.o"
|
.include "src/mystery_event_script.o"
|
||||||
.include "src/move_relearner.o"
|
.include "src/move_relearner.o"
|
||||||
|
|||||||
Reference in new issue
Block a user