diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-21 10:19:41 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-06-21 10:19:41 -0400 |
commit | 75b2298d37fa39077f7d5b930c0629ad5064ab84 (patch) | |
tree | 070898588e8a0511ecc661f20866bc0b0d05a3d0 | |
parent | 9ab2ab3c8068b7194291e58bb7c12befdb1df27a (diff) |
Start syncing contest code documentation from Emerald
37 files changed, 364 insertions, 314 deletions
diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc index 22f980016..f7df3f4ab 100644 --- a/data/maps/LilycoveCity/scripts.inc +++ b/data/maps/LilycoveCity/scripts.inc @@ -164,7 +164,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79 LilycoveCity_EventScript_14CC82:: @ 814CC82 lockall - specialvar VAR_0x8004, sub_80C4D50 + specialvar VAR_0x8004, CountPlayerMuseumPaintings switch VAR_0x8004 case 0, LilycoveCity_EventScript_14CCA2 msgbox LilycoveCity_Text_168EA4, MSGBOX_DEFAULT diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc index 5dabc84a3..c3e83734a 100644 --- a/data/maps/LilycoveCity_ContestLobby/scripts.inc +++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc @@ -40,7 +40,7 @@ LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898 LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE msgbox LilycoveCity_ContestLobby_Text_188AE8, MSGBOX_DEFAULT closemessage - special sub_80C4CEC + special SaveMuseumContestPainting setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0 specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 @@ -86,7 +86,7 @@ LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948 return LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994 - specialvar VAR_0x8004, sub_80C4D50 + specialvar VAR_0x8004, CountPlayerMuseumPaintings switch VAR_0x8004 case 1, LilycoveCity_ContestLobby_EventScript_1589D6 case 2, LilycoveCity_ContestLobby_EventScript_1589DA @@ -212,7 +212,7 @@ LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE msgbox LilycoveCity_ContestLobby_Text_188AE8, MSGBOX_DEFAULT closemessage - special sub_80C4CEC + special SaveMuseumContestPainting setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0 specialvar VAR_RESULT, GiveMonArtistRibbon compare VAR_RESULT, 1 diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc index 8c6d9a72b..b8c026a10 100644 --- a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc +++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc @@ -92,7 +92,7 @@ LilycoveCity_LilycoveMuseum_2F_Movement_1586D5:: @ 81586D5 LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8 lockall goto_if_set FLAG_RECEIVED_GLASS_ORNAMENT, LilycoveCity_LilycoveMuseum_2F_EventScript_158793 - specialvar VAR_0x8004, sub_80C4D50 + specialvar VAR_0x8004, CountPlayerMuseumPaintings switch VAR_0x8004 case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc index 465b0bfe8..5abc83c86 100644 --- a/data/scripts/contest_hall.inc +++ b/data/scripts/contest_hall.inc @@ -335,7 +335,7 @@ LinkContestRoom1_EventScript_1A5311:: @ 81A5311 return LinkContestRoom1_EventScript_1A5323:: @ 81A5323 - special sub_80C4C64 + special BufferContestTrainerAndMonNames addvar VAR_0x8006, 1 buffernumberstring 1, VAR_0x8006 lockall @@ -1003,7 +1003,7 @@ LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB setvar VAR_TEMP_1, 0 call LinkContestRoom1_EventScript_1A5A90 delay 30 - special sub_80C4CF8 + special ShouldReadyContestArtist compare VAR_0x8004, 1 goto_if_eq LinkContestRoom1_EventScript_1A5C46 return @@ -1012,7 +1012,7 @@ LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6 incrementgamestat GAME_STAT_WON_CONTEST msgbox LinkContestRoom1_Text_1A6DF1, MSGBOX_SIGN delay 90 - special sub_80C4CF8 + special ShouldReadyContestArtist compare VAR_0x8004, 1 goto_if_eq LinkContestRoom1_EventScript_1A5C46 return @@ -1049,7 +1049,7 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46 LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C delay 60 call LinkContestRoom1_EventScript_1A5C6A - special sub_80C4CF8 + special ShouldReadyContestArtist compare VAR_0x8004, 1 goto_if_eq LinkContestRoom1_EventScript_1A5C64 closemessage diff --git a/data/specials.inc b/data/specials.inc index a511742e3..2e7ce8fc9 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -86,14 +86,14 @@ gSpecials:: def_special ResetTVShowState def_special ScrSpecial_GetContestWinnerIdx def_special ScrSpecial_GetContestPlayerMonIdx - def_special sub_80C4C28 + def_special GetNpcContestantLocalId def_special ScrSpecial_GetContestWinnerTrainerName def_special ScrSpecial_GetContestWinnerNick - def_special sub_80C4C64 + def_special BufferContestTrainerAndMonNames def_special ScrSpecial_CountContestMonsWithBetterCondition def_special SetContestTrainerGfxIds def_special ScrSpecial_CheckSelectedMonAndInitContest - def_special sub_80C4D80 + def_special GetContestantNamesAtRank def_special ScrSpecial_SetLinkContestTrainerGfxIdx def_special ScrSpecial_GetMonCondition def_special ScrSpecial_CanMonParticipateInSelectedLinkContest @@ -142,10 +142,10 @@ gSpecials:: def_special CalculatePlayerPartyCount def_special GetNumValidDaycarePartyMons def_special CountAlivePartyMonsExceptSelectedOne - def_special sub_80C4CF8 - def_special sub_80C4CEC - def_special sub_80C4C78 - def_special sub_80C4D50 + def_special ShouldReadyContestArtist + def_special SaveMuseumContestPainting + def_special DoesContestCategoryHaveMuseumPainting + def_special CountPlayerMuseumPaintings def_special ShowContestWinner def_special MauvilleGymSpecial2 def_special MauvilleGymSpecial1 diff --git a/include/contest.h b/include/contest.h index bf2613fe3..a9ef50e0c 100644 --- a/include/contest.h +++ b/include/contest.h @@ -13,6 +13,38 @@ enum enum { + CONTEST_WINNER_ARTIST, + CONTEST_WINNER_HALL_1, + CONTEST_WINNER_HALL_2, + CONTEST_WINNER_HALL_3, + CONTEST_WINNER_HALL_4, + CONTEST_WINNER_HALL_5, + CONTEST_WINNER_HALL_6, + NUM_CONTEST_HALL_WINNERS = CONTEST_WINNER_HALL_6, + CONTEST_WINNER_HALL_UNUSED_1 , // These two have data for gDefaultContestWinners + CONTEST_WINNER_HALL_UNUSED_2, // but there are only 6 paintings in the Contest Hall + MUSEUM_CONTEST_WINNERS_START = CONTEST_WINNER_HALL_UNUSED_2, + CONTEST_WINNER_MUSEUM_COOL, + CONTEST_WINNER_MUSEUM_BEAUTY, + CONTEST_WINNER_MUSEUM_CUTE, + CONTEST_WINNER_MUSEUM_SMART, + CONTEST_WINNER_MUSEUM_TOUGH, +}; + +enum +{ + CONTEST_RANK_NORMAL, + CONTEST_RANK_SUPER, + CONTEST_RANK_HYPER, + CONTEST_RANK_MASTER, + CONTEST_RANK_LINK +}; + +#define CONTEST_SAVE_FOR_MUSEUM ((u8)-1) +#define CONTEST_SAVE_FOR_ARTIST ((u8)-2) + +enum +{ CONTEST_EFFECT_HIGHLY_APPEALING, CONTEST_EFFECT_USER_MORE_EASILY_STARTLED, CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES, @@ -267,7 +299,7 @@ u16 InitContestMonConditionI(u8, u8); void InitContestMonConditions(u8); u8 IsSpeciesNotUnown(u16); void sub_80AF668(void); -void sub_80B0F28(u8); +void SortContestants(u8); bool8 Contest_SaveWinner(u8); u8 sub_80B2C4C(u8, u8); void Contest_ResetWinners(void); @@ -432,13 +464,13 @@ extern u8 gContestPlayerMonIndex; extern u8 gIsLinkContest; extern u32 gContestRngValue; extern u8 gUnknown_02038696[4]; -extern s16 gContestMonConditions[4]; -extern s16 gUnknown_02038678[4]; +extern s16 gContestMonRound1Points[4]; +extern s16 gContestMonTotalPoints[4]; extern s16 gUnknown_02038680[4]; extern s16 gUnknown_02038688[4]; extern u8 gContestFinalStandings[4]; extern u8 gUnknown_02038696[4]; -extern u8 gUnknown_0203869B; +extern u8 gContestLinkLeaderIndex; extern u16 gSpecialVar_ContestRank; extern u16 gSpecialVar_ContestCategory; extern u8 gContestMonPartyIndex; diff --git a/include/contest_link.h b/include/contest_link.h new file mode 100644 index 000000000..c86eb0988 --- /dev/null +++ b/include/contest_link.h @@ -0,0 +1,14 @@ +#ifndef GUARD_CONTEST_LINK_H +#define GUARD_CONTEST_LINK_H + +void sub_80C8734(u8); +void Task_LinkContest_CommunicateRng(u8); +void sub_80C89DC(u8); +void Task_LinkContest_CommunicateLeaderIds(u8); +void Task_LinkContest_CommunicateRound1Points(u8); +void Task_LinkContest_CommunicateTurnOrder(u8); +u8 GetStringLanguage(const u8 *string); +void Task_LinkContest_Init(u8 taskId); +void Task_LinkContest_CommunicateCategory(u8 taskId); + +#endif // GUARD_CONTEST_LINK_H diff --git a/include/contest_link_80C857C.h b/include/contest_link_80C857C.h deleted file mode 100644 index 15f41fe7f..000000000 --- a/include/contest_link_80C857C.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef GUARD_CONTEST_LINK_80C857C_H -#define GUARD_CONTEST_LINK_80C857C_H - -void sub_80C8734(u8); -void sub_80C88AC(u8); -void sub_80C89DC(u8); -void sub_80C8E1C(u8); -void sub_80C8EBC(u8); -void sub_80C8F34(u8); -u8 GetStringLanguage(const u8 *string); -void sub_80C8604(u8 taskId); -void sub_80C8938(u8 taskId); - -#endif // GUARD_CONTEST_LINK_80C857C_H diff --git a/include/contest_link_80C2020.h b/include/contest_link_util.h index 5b1390ce1..8c527f971 100644 --- a/include/contest_link_80C2020.h +++ b/include/contest_link_util.h @@ -1,15 +1,15 @@ -#ifndef GUARD_CONTEST_LINK_80C2020_H -#define GUARD_CONTEST_LINK_80C2020_H +#ifndef GUARD_CONTEST_LINK_UTIL_H +#define GUARD_CONTEST_LINK_UTIL_H void sub_80C2358(void); void Contest_GetTrainerNameI_StringVar1(void); void Contest_GetNicknameI_StringVar1(void); void sub_80C48C8(void); -void sub_80C48F4(void); +void Contest_GetSpeciesNameI_StringVar1(void); void sub_80C4940(void); -void sub_80C4980(u8); -u8 sub_80C4B34(u8 *); +void ContestLinkTransfer(u8 category); +u8 LinkContest_GetLeaderIndex(u8 *a0); void Contest_CopyAndConvertTrainerName_Intl(u8 *, const u8 *); void Contest_CopyAndConvertNicknameI_Intl(u8 *, u8); -#endif // GUARD_CONTEST_LINK_80C2020_H +#endif // GUARD_CONTEST_LINK_UTIL_H diff --git a/include/script_pokemon_80C4.h b/include/contest_util.h index fab07994e..a22bd9548 100644 --- a/include/script_pokemon_80C4.h +++ b/include/contest_util.h @@ -6,7 +6,7 @@ void sub_80C5580(void); void SetBattleTowerPlayerParty(void); void ReducePlayerPartyToThree(void); -u8 sub_80C4D50(void); +u8 CountPlayerMuseumPaintings(void); void ShowContestWinner(void); void ScrSpecial_HealPlayerParty(); u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8); diff --git a/include/global.h b/include/global.h index ed74fcf77..018db2725 100644 --- a/include/global.h +++ b/include/global.h @@ -36,6 +36,12 @@ #define KANA(txt) _(txt) #endif +#define SWAP(x,y,t) {\ + t = x; \ + x = y; \ + y = t; \ +} + // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); diff --git a/include/link.h b/include/link.h index 6c9c25202..a4540b346 100644 --- a/include/link.h +++ b/include/link.h @@ -185,7 +185,7 @@ void sub_800826C(void); void sub_80082EC(void); u8 GetLinkPlayerCount_2(void); bool8 IsLinkMaster(void); -void sub_800832C(void); +void SetCloseLinkCallback(void); void sub_8008480(void); void sub_80084A4(void); void CB2_LinkError(void); diff --git a/ld_script.txt b/ld_script.txt index 3dd99494a..6f582cc3f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -159,8 +159,8 @@ SECTIONS { src/debug/sound_check_menu.o(.text); src/secret_base.o(.text); src/tv.o(.text); - src/contest_link_80C2020.o(.text); - src/script_pokemon_util_80C4BF0.o(.text); + src/contest_link_util.o(.text); + src/contest_util.o(.text); src/field_poison.o(.text); src/pokemon_size_record.o(.text); src/pc_screen_effect.o(.text); @@ -173,7 +173,7 @@ SECTIONS { src/field_special_scene.o(.text); src/rotating_gate.o(.text); src/safari_zone.o(.text); - src/contest_link_80C857C.o(.text); + src/contest_link.o(.text); src/item_use.o(.text); src/battle/anim/powder.o(.text); src/battle/anim/orbs.o(.text); @@ -589,8 +589,8 @@ SECTIONS { src/debug/sound_check_menu.o(.rodata); src/secret_base.o(.rodata); src/tv.o(.rodata); - src/contest_link_80C2020.o(.rodata); - src/script_pokemon_util_80C4BF0.o(.rodata); + src/contest_link_util.o(.rodata); + src/contest_util.o(.rodata); src/pokemon_size_record.o(.rodata); src/pc_screen_effect.o(.rodata); src/pc_screen_effect.o(.data); @@ -600,7 +600,7 @@ SECTIONS { src/fldeff_recordmixing.o(.rodata); src/field_special_scene.o(.rodata); src/rotating_gate.o(.rodata); - src/contest_link_80C857C.o(.rodata); + src/contest_link.o(.rodata); src/item_use.o(.rodata); src/battle/anim/powder.o(.rodata); src/battle/anim/orbs.o(.rodata); diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index eafe78b42..90af47511 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -519,7 +519,7 @@ void sub_8037F34(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - sub_800832C(); + SetCloseLinkCallback(); gBattlerControllerFuncs[gActiveBattler] = sub_8037EF0; } else diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 946e943e4..45b2afae9 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -456,7 +456,7 @@ void sub_811E29C(void) { if (gBattleTypeFlags & 2) { - sub_800832C(); + SetCloseLinkCallback(); gBattlerControllerFuncs[gActiveBattler] = sub_811E258; } else diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 271f5cfd1..967ff347b 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -975,7 +975,7 @@ void sub_802D18C(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - sub_800832C(); + SetCloseLinkCallback(); gBattlerControllerFuncs[gActiveBattler] = sub_802D148; } else diff --git a/src/battle_main.c b/src/battle_main.c index 3c490e626..9ec46033d 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -666,7 +666,7 @@ void sub_800F104(void) if (!gPaletteFade.active) { gBattleCommunication[0] = 3; - sub_800832C(); + SetCloseLinkCallback(); } break; case 3: diff --git a/src/battle_setup.c b/src/battle_setup.c index d8319e620..bc569dff7 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -2,6 +2,14 @@ #include "battle_setup.h" #include "battle.h" #include "battle_transition.h" +#include "constants/battle_setup.h" +#include "constants/items.h" +#include "constants/map_types.h" +#include "constants/maps.h" +#include "constants/opponents.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "contest_util.h" #include "data2.h" #include "event_data.h" #include "field_control_avatar.h" @@ -13,12 +21,11 @@ #include "fldeff_poison.h" #include "main.h" #include "metatile_behavior.h" +#include "overworld.h" #include "palette.h" #include "random.h" -#include "overworld.h" #include "safari_zone.h" #include "script.h" -#include "script_pokemon_80C4.h" #include "secret_base.h" #include "sound.h" #include "starter_choose.h" @@ -27,13 +34,6 @@ #include "task.h" #include "text.h" #include "trainer.h" -#include "constants/battle_setup.h" -#include "constants/map_types.h" -#include "constants/maps.h" -#include "constants/opponents.h" -#include "constants/songs.h" -#include "constants/species.h" -#include "constants/items.h" extern u16 gSpecialVar_Result; diff --git a/src/battle_tower.c b/src/battle_tower.c index 5d3bc207d..6b8af4d86 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1,31 +1,31 @@ #include "global.h" +#include "battle_tower.h" #include "battle.h" #include "battle_setup.h" -#include "battle_tower.h" #include "battle_transition.h" +#include "constants/easy_chat.h" +#include "constants/event_objects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" +#include "constants/vars.h" +#include "contest_util.h" #include "data2.h" #include "easy_chat.h" -#include "constants/easy_chat.h" #include "event_data.h" +#include "ewram.h" #include "item.h" -#include "constants/items.h" #include "main.h" -#include "constants/event_objects.h" -#include "constants/moves.h" #include "new_game.h" #include "overworld.h" #include "pokedex.h" #include "random.h" #include "save.h" -#include "script_pokemon_80C4.h" -#include "constants/species.h" #include "string_util.h" #include "task.h" #include "text.h" #include "trainer.h" #include "tv.h" -#include "constants/vars.h" -#include "ewram.h" #if ENGLISH #include "data/battle_tower/trainers.h" diff --git a/src/berry_blender.c b/src/berry_blender.c index 7955c1458..b8897f964 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -2479,7 +2479,7 @@ static void sub_8050E30(void) case 11: if (++gBerryBlenderData->framesToWait > 30) { - sub_800832C(); + SetCloseLinkCallback(); gBerryBlenderData->field_6F++; } break; diff --git a/src/cable_club.c b/src/cable_club.c index aeae50f50..961ab739f 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -1,7 +1,9 @@ #include "global.h" +#include "cable_club.h" #include "battle.h" #include "battle_records.h" -#include "cable_club.h" +#include "constants/songs.h" +#include "contest_util.h" #include "event_data.h" #include "field_message_box.h" #include "field_specials.h" @@ -11,12 +13,10 @@ #include "m4a.h" #include "main.h" #include "menu.h" +#include "overworld.h" #include "palette.h" #include "record_mixing.h" -#include "overworld.h" #include "script.h" -#include "script_pokemon_80C4.h" -#include "constants/songs.h" #include "sound.h" #include "start_menu.h" #include "string_util.h" @@ -431,7 +431,7 @@ static void sub_80831F8(u8 taskId) return; if (gSpecialVar_Result == 3) { - sub_800832C(); + SetCloseLinkCallback(); HideFieldMessageBox(); gTasks[taskId].func = sub_80833C4; } @@ -452,7 +452,7 @@ static void sub_8083288(u8 taskId) if (gSpecialVar_Result == 3) { - sub_800832C(); + SetCloseLinkCallback(); HideFieldMessageBox(); gTasks[taskId].func = sub_80833C4; } @@ -511,7 +511,7 @@ static void sub_8083314(u8 taskId) return; } - sub_800832C(); + SetCloseLinkCallback(); gTasks[taskId].func = sub_80833C4; } @@ -757,7 +757,7 @@ static void sub_808382C(u8 taskId) task->data[0]++; break; case 3: - sub_800832C(); + SetCloseLinkCallback(); task->data[0]++; break; case 4: @@ -890,7 +890,7 @@ static void sub_8083AAC(u8 taskId) gUnknown_020297D8.field0 = 0; gUnknown_020297D8.field1 = 0; m4aMPlayAllStop(); - sub_800832C(); + SetCloseLinkCallback(); task->data[0]++; break; case 3: @@ -1009,7 +1009,7 @@ static void sub_8083CA4(u8 taskId) void unref_sub_8083CC8(u8 taskId) { - sub_800832C(); + SetCloseLinkCallback(); gTasks[taskId].func = sub_8083CA4; } diff --git a/src/contest.c b/src/contest.c index 20e25e829..cea968738 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1,15 +1,16 @@ #include "global.h" -#include "constants/items.h" +#include "contest.h" +#include "battle.h" +#include "battle_anim.h" +#include "blend_palette.h" #include "constants/event_objects.h" +#include "constants/items.h" #include "constants/moves.h" #include "constants/songs.h" #include "constants/species.h" -#include "battle.h" -#include "battle_anim.h" -#include "blend_palette.h" -#include "contest.h" +#include "contest_ai.h" #include "contest_effect.h" -#include "contest_link_80C857C.h" +#include "contest_link.h" #include "data2.h" #include "decompress.h" #include "ewram.h" @@ -23,6 +24,7 @@ #include "palette.h" #include "random.h" #include "rom_8077ABC.h" +#include "scanline_effect.h" #include "script.h" #include "sound.h" #include "sprite.h" @@ -30,9 +32,7 @@ #include "task.h" #include "text.h" #include "tv.h" -#include "scanline_effect.h" #include "util.h" -#include "contest_ai.h" extern u8 gUnknown_020297ED; @@ -267,8 +267,8 @@ void SelectContestMoveBankTarget(u16); EWRAM_DATA u8 gUnknown_0203856C = 0; EWRAM_DATA struct ContestPokemon gContestMons[4] = {0}; -EWRAM_DATA s16 gContestMonConditions[4] = {0}; -EWRAM_DATA s16 gUnknown_02038678[4] = {0}; +EWRAM_DATA s16 gContestMonRound1Points[4] = {0}; +EWRAM_DATA s16 gContestMonTotalPoints[4] = {0}; EWRAM_DATA s16 gUnknown_02038680[4] = {0}; EWRAM_DATA s16 gUnknown_02038688[4] = {0}; EWRAM_DATA u8 gContestFinalStandings[4] = {0}; // What "place" each participant came in. @@ -276,7 +276,7 @@ EWRAM_DATA u8 gContestMonPartyIndex = 0; EWRAM_DATA u8 gContestPlayerMonIndex = 0; EWRAM_DATA u8 gUnknown_02038696[4] = {0}; EWRAM_DATA u8 gIsLinkContest = 0; -EWRAM_DATA u8 gUnknown_0203869B = 0; +EWRAM_DATA u8 gContestLinkLeaderIndex = 0; EWRAM_DATA u16 gSpecialVar_ContestCategory = 0; EWRAM_DATA u16 gSpecialVar_ContestRank = 0; @@ -380,7 +380,7 @@ void ClearContestVars(void) memset(&shared19328, 0, sizeof(shared19328)); memset(shared19338, 0, 4 * sizeof(*shared19338)); if (!(gIsLinkContest & 1)) - sub_80B0F28(0); + SortContestants(0); for (i = 0; i < 4; i++) { sContestantStatus[i].nextTurnOrder = 0xFF; @@ -2093,7 +2093,7 @@ void sub_80AE054(void) bool8 sub_80AE074(void) { - if (gContestPlayerMonIndex == gUnknown_0203869B) + if (gContestPlayerMonIndex == gContestLinkLeaderIndex) return TRUE; else return FALSE; @@ -2420,7 +2420,7 @@ void InitContestMonConditions(u8 a) u8 i; for (i = 0; i < 4; i++) - gContestMonConditions[i] = InitContestMonConditionI(i, a); + gContestMonRound1Points[i] = InitContestMonConditionI(i, a); } u8 CreateJudgeSprite(void) @@ -2896,7 +2896,7 @@ void sub_80AF2FC(void) } } } - sub_80B0F28(1); + SortContestants(1); sub_80B159C(); } @@ -3021,7 +3021,7 @@ bool8 unref_sub_80AF5D0(u8 a, u8 b) void sub_80AF630(u8 a) { gUnknown_02038688[a] = sub_80AF688(a); - gUnknown_02038678[a] = gContestMonConditions[a] + gUnknown_02038688[a]; + gContestMonTotalPoints[a] = gContestMonRound1Points[a] + gUnknown_02038688[a]; } void sub_80AF668(void) @@ -3063,8 +3063,8 @@ void DetermineFinalStandings(void) for (i = 0; i < 4; i++) { - sp8[i].unk0 = gUnknown_02038678[i]; - sp8[i].unk4 = gContestMonConditions[i]; + sp8[i].unk0 = gContestMonTotalPoints[i]; + sp8[i].unk4 = gContestMonRound1Points[i]; sp8[i].unk8 = sp0[i]; sp8[i].unkC = i; } @@ -4397,7 +4397,7 @@ void unref_sub_80B0EE8(s32 *a, s32 b) } // something to do with contest NPC opponents, I think. -void sub_80B0F28(u8 a) +void SortContestants(u8 a) { u8 sp0[4]; u16 sp4[4] = {0}; @@ -4425,8 +4425,8 @@ void sub_80B0F28(u8 a) gUnknown_02038696[i] = i; for (r4 = 0; r4 < i; r4++) { - if (gContestMonConditions[gUnknown_02038696[r4]] < gContestMonConditions[i] - || (gContestMonConditions[gUnknown_02038696[r4]] == gContestMonConditions[i] && sp4[gUnknown_02038696[r4]] < sp4[i])) + if (gContestMonRound1Points[gUnknown_02038696[r4]] < gContestMonRound1Points[i] + || (gContestMonRound1Points[gUnknown_02038696[r4]] == gContestMonRound1Points[i] && sp4[gUnknown_02038696[r4]] < sp4[i])) { for (r2 = i; r2 > r4; r2--) gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1]; diff --git a/src/contest_ai.c b/src/contest_ai.c index 06d4c11ca..77bfa40b6 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -632,7 +632,7 @@ static void ContestAICmd_unk_19(void) static void ContestAICmd_unk_1A(void) { - eContestAI->scriptResult = gContestMonConditions[eContestAI->unk41]; + eContestAI->scriptResult = gContestMonRound1Points[eContestAI->unk41]; gAIScriptPtr += 1; } @@ -1353,7 +1353,8 @@ static void ContestAICmd_unk_5E(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); - eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->unk41]; + eContestAI->scriptResult = + gContestMonRound1Points[var] - gContestMonRound1Points[eContestAI->unk41]; gAIScriptPtr += 2; } diff --git a/src/contest_link_80C857C.c b/src/contest_link.c index a694380df..be2be27ff 100644 --- a/src/contest_link_80C857C.c +++ b/src/contest_link.c @@ -42,7 +42,7 @@ static bool8 HaveAllPlayersReceivedBlock(void) return TRUE; } -void sub_80C8604(u8 taskId) +void Task_LinkContest_Init(u8 taskId) { #if ENGLISH u8 i; @@ -295,7 +295,7 @@ void sub_80C8734(u8 taskId) } } -void sub_80C88AC(u8 taskId) +void Task_LinkContest_CommunicateRng(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -328,7 +328,7 @@ void sub_80C88AC(u8 taskId) } } -void sub_80C8938(u8 taskId) +void Task_LinkContest_CommunicateCategory(u8 taskId) { int i; @@ -456,14 +456,14 @@ void sub_80C8AD0(u8 taskId) case 0: if (IsLinkTaskFinished()) { - SendBlockToAllOpponents(gUnknown_02038678, sizeof gUnknown_02038678); + SendBlockToAllOpponents(gContestMonTotalPoints, sizeof gContestMonTotalPoints); gTasks[taskId].data[0]++; } break; case 1: if (HaveAllPlayersReceivedBlock()) { - memcpy(gUnknown_02038678, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038678); + memcpy(gContestMonTotalPoints, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonTotalPoints); gTasks[taskId].data[0]++; } break; @@ -487,7 +487,7 @@ void sub_80C8AD0(u8 taskId) case 4: if (HaveAllPlayersReceivedBlock()) { - memcpy(gUnknown_02038680, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038680); + memcpy(gUnknown_02038680, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gUnknown_02038680); gTasks[taskId].data[0]++; } break; @@ -501,7 +501,7 @@ void sub_80C8AD0(u8 taskId) case 7: if (HaveAllPlayersReceivedBlock()) { - memcpy(gUnknown_02038688, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038688); + memcpy(gUnknown_02038688, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gUnknown_02038688); gTasks[taskId].data[0]++; } break; @@ -515,7 +515,7 @@ void sub_80C8AD0(u8 taskId) case 10: if (HaveAllPlayersReceivedBlock()) { - memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestFinalStandings); + memcpy(gContestFinalStandings, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestFinalStandings); gTasks[taskId].data[0]++; } break; @@ -540,7 +540,7 @@ void sub_80C8C80(u8 taskId) case 1: if (HaveAllPlayersReceivedBlock()) { - memcpy(sContestantStatus, gBlockRecvBuffer[gUnknown_0203869B], 4 * sizeof(struct ContestantStatus)); + memcpy(sContestantStatus, gBlockRecvBuffer[gContestLinkLeaderIndex], 4 * sizeof(struct ContestantStatus)); gTasks[taskId].data[0]++; } break; @@ -564,7 +564,7 @@ void sub_80C8C80(u8 taskId) case 4: if (HaveAllPlayersReceivedBlock()) { - memcpy(&shared192D0, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared192D0); + memcpy(&shared192D0, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof shared192D0); gTasks[taskId].data[0]++; } break; @@ -578,7 +578,7 @@ void sub_80C8C80(u8 taskId) case 7: if (HaveAllPlayersReceivedBlock()) { - memcpy(&shared19328, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared19328); + memcpy(&shared19328, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof shared19328); gTasks[taskId].data[0]++; } break; @@ -592,7 +592,7 @@ void sub_80C8C80(u8 taskId) case 10: if (HaveAllPlayersReceivedBlock()) { - memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); + memcpy(gUnknown_02038696, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gUnknown_02038696); gTasks[taskId].data[0]++; } break; @@ -603,7 +603,7 @@ void sub_80C8C80(u8 taskId) } } -void sub_80C8E1C(u8 taskId) +void Task_LinkContest_CommunicateLeaderIds(u8 taskId) { int i; @@ -670,7 +670,7 @@ void sub_80C8E1C(u8 taskId) } } -void sub_80C8EBC(u8 taskId) +void Task_LinkContest_CommunicateRound1Points(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -681,21 +681,21 @@ void sub_80C8EBC(u8 taskId) case 0: if (IsLinkTaskFinished()) { - SendBlockToAllOpponents(gContestMonConditions, sizeof gContestMonConditions); + SendBlockToAllOpponents(gContestMonRound1Points, sizeof gContestMonRound1Points); gTasks[taskId].data[0]++; } break; case 1: if (HaveAllPlayersReceivedBlock()) { - memcpy(gContestMonConditions, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestMonConditions); + memcpy(gContestMonRound1Points, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonRound1Points); gTasks[taskId].data[0]++; } break; } } -void sub_80C8F34(u8 taskId) +void Task_LinkContest_CommunicateTurnOrder(u8 taskId) { switch (gTasks[taskId].data[0]) { @@ -713,7 +713,7 @@ void sub_80C8F34(u8 taskId) case 1: if (HaveAllPlayersReceivedBlock()) { - memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); + memcpy(gUnknown_02038696, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gUnknown_02038696); gTasks[taskId].data[0]++; } break; diff --git a/src/contest_link_80C2020.c b/src/contest_link_util.c index 579ee3688..0e4ff15b2 100644 --- a/src/contest_link_80C2020.c +++ b/src/contest_link_util.c @@ -1,35 +1,35 @@ #include "global.h" -#include "data2.h" -#include "util.h" -#include "random.h" -#include "overworld.h" +#include "contest_link_util.h" +#include "battle.h" +#include "blend_palette.h" #include "constants/songs.h" -#include "ewram.h" -#include "main.h" -#include "scanline_effect.h" +#include "contest.h" +#include "contest_link.h" +#include "data2.h" #include "decompress.h" -#include "palette.h" -#include "blend_palette.h" +#include "event_data.h" +#include "ewram.h" +#include "field_effect.h" +#include "field_specials.h" #include "graphics.h" -#include "strings2.h" -#include "text.h" -#include "string_util.h" +#include "link.h" +#include "main.h" #include "menu.h" -#include "sound.h" +#include "overworld.h" +#include "palette.h" #include "pokedex.h" #include "pokemon_icon.h" -#include "tv.h" -#include "battle.h" -#include "contest.h" -#include "link.h" -#include "field_effect.h" -#include "field_specials.h" -#include "contest_link_80C857C.h" -#include "contest_link_80C2020.h" #include "pokemon_storage_system.h" -#include "event_data.h" +#include "random.h" +#include "scanline_effect.h" #include "script.h" +#include "sound.h" +#include "string_util.h" +#include "strings2.h" +#include "text.h" #include "trig.h" +#include "tv.h" +#include "util.h" #define ABS(x) ((x) < 0 ? -(x) : (x)) @@ -117,15 +117,15 @@ void sub_80C3EA4(u8 taskId); void sub_80C3F00(void); void sub_80C40D4(u8 a0, u8 a1); void sub_80C42C0(u8 taskId); -void sub_80C49C4(u8 taskId); -void sub_80C49F0(u8 taskId); -void sub_80C4A0C(u8 taskId); -void sub_80C4A28(u8 taskId); -void sub_80C4A44(u8 taskId); -void sub_80C4B0C(u8 taskId); -void sub_80C4B5C(u8 taskId); -void sub_80C4BA4(u8 taskId); -void sub_80C4BCC(u8 taskId); +void Task_StartCommunication(u8 taskId); +void Task_StartCommunicateRng(u8 taskId); +void Task_StartCommunicateLeaderIds(u8 taskId); +void Task_StartCommunicateCategory(u8 taskId); +void Task_LinkContest_SetUpContest(u8 taskId); +void Task_LinkContest_CalculateTurnOrder(u8 taskId); +void Task_LinkContest_FinalizeConnection(u8 taskId); +void Task_LinkContest_Disconnect(u8 taskId); +void Task_LinkContest_WaitDisconnect(u8 taskId); const u16 gUnknown_083D1624[] = INCBIN_U16("graphics/unknown/unknown_3D1624/0.4bpp"); const u16 gUnknown_083D1644[] = INCBIN_U16("graphics/unknown/unknown_3D1624/1.4bpp"); @@ -702,7 +702,7 @@ static void sub_80C2D80(u8 taskId) if (gIsLinkContest & 1) { sub_80C3698(gOtherText_LinkStandby); - sub_800832C(); + SetCloseLinkCallback(); gTasks[taskId].func = sub_80C2DD8; } else @@ -1788,7 +1788,7 @@ u8 sub_80C3990(u8 monIndex, u8 arg1) u32 var0; u32 var1; - var0 = gContestMonConditions[monIndex] << 16; + var0 = gContestMonRound1Points[monIndex] << 16; var1 = var0 / 0x3F; if (var1 & 0xFFFF) var1 += 0x10000; @@ -2093,31 +2093,31 @@ void sub_80C3EA4(u8 taskId) void sub_80C3F00(void) { s32 i; - s16 r2 = gUnknown_02038678[0]; + s16 r2 = gContestMonTotalPoints[0]; s32 r4; u32 r5; s8 r0; for (i = 1; i < 4; i++) { - if (r2 < gUnknown_02038678[i]) - r2 = gUnknown_02038678[i]; + if (r2 < gContestMonTotalPoints[i]) + r2 = gContestMonTotalPoints[i]; } if (r2 < 0) { - r2 = gUnknown_02038678[0]; + r2 = gContestMonTotalPoints[0]; for (i = 1; i < 4; i++) { - if (r2 > gUnknown_02038678[i]) - r2 = gUnknown_02038678[i]; + if (r2 > gContestMonTotalPoints[i]) + r2 = gContestMonTotalPoints[i]; } } for (i = 0; i < 4; i++) { - r4 = 1000 * gContestMonConditions[i] / ABS(r2); + r4 = 1000 * gContestMonRound1Points[i] / ABS(r2); if ((r4 % 10) >= 5) r4 += 10; eContestLink80C2020Struct2018018[i].unk_00 = r4 / 10; @@ -2700,7 +2700,7 @@ void ScrSpecial_CountContestMonsWithBetterCondition(void) for (i = 0, count = 0; i < 4; i++) { - if (gContestMonConditions[gSpecialVar_0x8006] < gContestMonConditions[i]) + if (gContestMonRound1Points[gSpecialVar_0x8006] < gContestMonRound1Points[i]) count++; } @@ -2709,7 +2709,7 @@ void ScrSpecial_CountContestMonsWithBetterCondition(void) void ScrSpecial_GetMonCondition(void) { - gSpecialVar_0x8004 = gContestMonConditions[gSpecialVar_0x8006]; + gSpecialVar_0x8004 = gContestMonRound1Points[gSpecialVar_0x8006]; } void ScrSpecial_GetContestWinnerIdx(void) @@ -2770,7 +2770,7 @@ void sub_80C48C8(void) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); } -void sub_80C48F4(void) +void Contest_GetSpeciesNameI_StringVar1(void) { gSpecialVar_0x8004 = gContestMons[gSpecialVar_0x8006].species; } @@ -2796,37 +2796,40 @@ void ScrSpecial_GetContestPlayerMonIdx(void) gSpecialVar_0x8004 = gContestPlayerMonIndex; } -void sub_80C4980(u8 taskId) +void ContestLinkTransfer(u8 category) { - u8 taskId2; + u8 taskId; ScriptContext2_Enable(); - taskId2 = CreateTask(sub_80C8604, 0); - SetTaskFuncWithFollowupFunc(taskId2, sub_80C8604, sub_80C49C4); - gTasks[taskId2].data[9] = taskId; + taskId = CreateTask(Task_LinkContest_Init, 0); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_Init, Task_StartCommunication); + gTasks[taskId].data[9] = category; } -void sub_80C49C4(u8 taskId) +void Task_StartCommunication(u8 taskId) { Contest_CreatePlayerMon(gContestMonPartyIndex); - SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, sub_80C49F0); + SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, Task_StartCommunicateRng); } -void sub_80C49F0(u8 taskId) +void Task_StartCommunicateRng(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C88AC, sub_80C4A0C); + SetTaskFuncWithFollowupFunc( + taskId, Task_LinkContest_CommunicateRng, Task_StartCommunicateLeaderIds); } -void sub_80C4A0C(u8 taskId) +void Task_StartCommunicateLeaderIds(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C8E1C, sub_80C4A28); + SetTaskFuncWithFollowupFunc( + taskId, Task_LinkContest_CommunicateLeaderIds, Task_StartCommunicateCategory); } -void sub_80C4A28(u8 taskId) +void Task_StartCommunicateCategory(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C8938, sub_80C4A44); + SetTaskFuncWithFollowupFunc( + taskId, Task_LinkContest_CommunicateCategory, Task_LinkContest_SetUpContest); } -void sub_80C4A44(u8 taskId) +void Task_LinkContest_SetUpContest(u8 taskId) { u8 i; u8 sp0[4]; @@ -2849,18 +2852,20 @@ void sub_80C4A44(u8 taskId) for (i = 0; i < 4; i++) sp4[i] = gTasks[taskId].data[i + 5]; - gUnknown_0203869B = sub_80C4B34(sp4); + gContestLinkLeaderIndex = LinkContest_GetLeaderIndex(sp4); InitContestMonConditions(gSpecialVar_ContestCategory); - SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80C4B0C); + SetTaskFuncWithFollowupFunc( + taskId, Task_LinkContest_CommunicateRound1Points, Task_LinkContest_CalculateTurnOrder); } -void sub_80C4B0C(u8 taskId) +void Task_LinkContest_CalculateTurnOrder(u8 taskId) { - sub_80B0F28(0); - SetTaskFuncWithFollowupFunc(taskId, sub_80C8F34, sub_80C4B5C); + SortContestants(0); + SetTaskFuncWithFollowupFunc( + taskId, Task_LinkContest_CommunicateTurnOrder, Task_LinkContest_FinalizeConnection); } -u8 sub_80C4B34(u8 * a0) +u8 LinkContest_GetLeaderIndex(u8 * a0) { s32 i; u8 result = 0; @@ -2874,12 +2879,12 @@ u8 sub_80C4B34(u8 * a0) return result; } -void sub_80C4B5C(u8 taskId) +void Task_LinkContest_FinalizeConnection(u8 taskId) { if (gSpecialVar_0x8004 == 1) { if (IsLinkTaskFinished()) - gTasks[taskId].func = sub_80C4BA4; + gTasks[taskId].func = Task_LinkContest_Disconnect; } else { @@ -2889,13 +2894,13 @@ void sub_80C4B5C(u8 taskId) } } -void sub_80C4BA4(u8 taskId) +void Task_LinkContest_Disconnect(u8 taskId) { - sub_800832C(); - gTasks[taskId].func = sub_80C4BCC; + SetCloseLinkCallback(); + gTasks[taskId].func = Task_LinkContest_WaitDisconnect; } -void sub_80C4BCC(u8 taskId) +void Task_LinkContest_WaitDisconnect(u8 taskId) { if (!gReceivedRemoteLinkPlayers) { diff --git a/src/script_pokemon_util_80C4BF0.c b/src/contest_util.c index c1d226958..5fa98a453 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/contest_util.c @@ -1,28 +1,28 @@ #include "global.h" +#include "contest_util.h" #include "battle.h" #include "berry.h" #include "choose_party.h" +#include "constants/items.h" +#include "constants/species.h" #include "contest.h" -#include "contest_link_80C2020.h" +#include "contest_link_util.h" #include "contest_painting.h" #include "data2.h" #include "daycare.h" #include "debug.h" #include "decompress.h" #include "event_data.h" -#include "constants/items.h" +#include "ewram.h" #include "link.h" #include "load_save.h" #include "main.h" #include "menu.h" +#include "overworld.h" #include "pokedex.h" #include "pokemon.h" #include "random.h" -#include "overworld.h" -#include "script_pokemon_80C4.h" -#include "constants/species.h" #include "task.h" -#include "ewram.h" #define CONTEST_ENTRY_PIC_LEFT 10 #define CONTEST_ENTRY_PIC_TOP 3 @@ -44,89 +44,87 @@ void SetContestTrainerGfxIds(void) gSaveBlock1.vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId; } -void sub_80C4C28(void) +void GetNpcContestantLocalId(void) { - u16 var; + u16 localId; u8 specialVar = gSpecialVar_0x8005; switch(specialVar) { case 0: - var = 3; + localId = 3; break; case 1: - var = 4; + localId = 4; break; case 2: - var = 5; + localId = 5; break; default: - var = 100; + localId = 100; break; } - gSpecialVar_0x8004 = var; + gSpecialVar_0x8004 = localId; } -void sub_80C4C64(void) +void BufferContestTrainerAndMonNames(void) { Contest_GetTrainerNameI_StringVar1(); Contest_GetNicknameI_StringVar1(); - sub_80C48F4(); + Contest_GetSpeciesNameI_StringVar1(); } -void sub_80C4C78(void) +void DoesContestCategoryHaveMuseumPainting(void) { - u16 var; - u16 returnVar; + u16 contestWinner; switch(gSpecialVar_ContestCategory) { case CONTEST_CATEGORY_COOL: - var = 8; + contestWinner = CONTEST_WINNER_MUSEUM_COOL - 1; break; case CONTEST_CATEGORY_BEAUTY: - var = 9; + contestWinner = CONTEST_WINNER_MUSEUM_BEAUTY - 1; break; case CONTEST_CATEGORY_CUTE: - var = 10; + contestWinner = CONTEST_WINNER_MUSEUM_CUTE - 1; break; case CONTEST_CATEGORY_SMART: - var = 11; + contestWinner = CONTEST_WINNER_MUSEUM_SMART - 1; break; case CONTEST_CATEGORY_TOUGH: default: - var = 12; + contestWinner = CONTEST_WINNER_MUSEUM_TOUGH - 1; break; } - returnVar = gSaveBlock1.contestWinners[var].species; - - if(returnVar == 0) - gSpecialVar_0x8004 = returnVar; + if (gSaveBlock1.contestWinners[contestWinner].species == SPECIES_NONE) + gSpecialVar_0x8004 = FALSE; else - gSpecialVar_0x8004 = 1; + gSpecialVar_0x8004 = TRUE; } -void sub_80C4CEC(void) +void SaveMuseumContestPainting(void) { - Contest_SaveWinner(0xFF); + Contest_SaveWinner(CONTEST_SAVE_FOR_MUSEUM); } -void sub_80C4CF8(void) +void ShouldReadyContestArtist(void) { if(!gContestFinalStandings[gContestPlayerMonIndex] - && gSpecialVar_ContestRank == 3 - && gUnknown_02038678[gContestPlayerMonIndex] >= 800) + && gSpecialVar_ContestRank == CONTEST_RANK_MASTER + && + gContestMonTotalPoints[gContestPlayerMonIndex] >= 800) { - gSpecialVar_0x8004 = 1; + gSpecialVar_0x8004 = TRUE; } else { - gSpecialVar_0x8004 = 0; + gSpecialVar_0x8004 = FALSE; } } -u8 sub_80C4D50(void) +u8 CountPlayerMuseumPaintings(void) { u8 retVar = 0; int i; @@ -138,67 +136,72 @@ u8 sub_80C4D50(void) return retVar; } -void sub_80C4D80(void) +void GetContestantNamesAtRank(void) { - s16 sp0[4]; + s16 conditions[4]; s32 i; s32 j; - s16 r4; - u8 r2; - u8 r7; - s8 r10; - u8 r4_; + s16 condition; + u8 contestantOffset; + u8 tieRank; + s8 numAtCondition; + u8 rank; + // Get round 1 points for (i = 0; i < 4; i++) - sp0[i] = gContestMonConditions[i]; + conditions[i] = gContestMonRound1Points[i]; + // Sort round 1 points for (i = 0; i < 3; i++) { for (j = 3; j > i; j--) { - if (sp0[j - 1] < sp0[j]) + if (conditions[j - 1] < conditions[j]) { - s32 temp = sp0[j]; - - sp0[j] = sp0[j - 1]; - sp0[j - 1] = temp; + int temp; + SWAP(conditions[j], conditions[j - 1], temp) } } } - r4 = sp0[gSpecialVar_0x8006]; - r10 = 0; - r7 = 0; + // Get round1 points at specified rank + condition = conditions[gSpecialVar_0x8006]; + + // Count number of contestants with the same number of points + numAtCondition = 0; + tieRank = 0; for (i = 0; i < 4; i++) { - if (sp0[i] == r4) + if (conditions[i] == condition) { - r10++; + numAtCondition++; if (i == gSpecialVar_0x8006) - r7 = r10; + tieRank = numAtCondition; } } + // Get rank of first contestant with the same number of points for (i = 0; i < 4; i++) { - if (sp0[i] == r4) + if (conditions[i] == condition) break; } + rank = i; - r4_ = i; - r2 = r7; - + // Get contestant id of player at rank (taking ties into account) + contestantOffset = tieRank; for (i = 0; i < 4; i++) { - if (r4 == gContestMonConditions[i]) + if (condition == gContestMonRound1Points[i]) { - if (r2 == 1) + if (contestantOffset == 1) break; - r2--; + contestantOffset--; } } + // Use contestant id to get names Contest_CopyAndConvertNicknameI_Intl(gStringVar1, i); if (gIsLinkContest & 1) @@ -206,10 +209,13 @@ void sub_80C4D80(void) else Contest_CopyAndConvertTrainerName_Intl(gStringVar2, gContestMons[i].trainerName); - if (r10 == 1 || r7 == r10) - gSpecialVar_0x8006 = r4_; + // Return adjusted rank + if (numAtCondition == 1) + gSpecialVar_0x8006 = rank; + else if (tieRank == numAtCondition) + gSpecialVar_0x8006 = rank; else - gSpecialVar_0x8006 = r4_ + 4; + gSpecialVar_0x8006 = rank + 4; } void ShowContestWinnerCleanup(void) @@ -246,7 +252,7 @@ bool8 GiveMonArtistRibbon(void) if(ribbon == FALSE && gContestFinalStandings[gContestPlayerMonIndex] == 0 && gSpecialVar_ContestRank == 3 - && gUnknown_02038678[gContestPlayerMonIndex] >= 800) + && gContestMonTotalPoints[gContestPlayerMonIndex] >= 800) { ribbon = TRUE; SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON, &ribbon); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 27d2db66b..b3a0e0ffc 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -2,21 +2,21 @@ #include "matsuda_debug_menu.h" #include "battle.h" #include "contest.h" -#include "contest_link_80C2020.h" -#include "contest_link_80C857C.h" +#include "contest_link.h" +#include "contest_link_util.h" #include "data2.h" +#include "ewram.h" #include "link.h" #include "main.h" #include "menu.h" -#include "palette.h" #include "overworld.h" +#include "palette.h" +#include "scanline_effect.h" #include "sprite.h" #include "start_menu.h" #include "string_util.h" #include "task.h" #include "text.h" -#include "scanline_effect.h" -#include "ewram.h" extern u8 gUnknown_0203856C; extern u8 gContestMonPartyIndex; @@ -149,12 +149,12 @@ static void sub_80A9C98(u8 taskId) static void sub_80A9CC0(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C88AC, sub_80A9CDC); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRng, sub_80A9CDC); } static void sub_80A9CDC(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C8E1C, sub_80A9D58); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateLeaderIds, sub_80A9D58); } static void sub_80A9CF8(u8 taskId) @@ -169,7 +169,7 @@ static void sub_80A9CF8(u8 taskId) static void sub_80A9D30(u8 taskId) { - sub_800832C(); + SetCloseLinkCallback(); gTasks[taskId].func = sub_80A9CF8; } @@ -181,15 +181,15 @@ static void sub_80A9D58(u8 taskId) for (i = 0; i < 4; i++) dest[i] = gTasks[taskId].data[5 + i]; - gUnknown_0203869B = sub_80C4B34(dest); + gContestLinkLeaderIndex = LinkContest_GetLeaderIndex(dest); InitContestMonConditions((u8)gSpecialVar_ContestCategory); - sub_80B0F28(0); - SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80A9DBC); + SortContestants(0); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRound1Points, sub_80A9DBC); } static void sub_80A9DBC(u8 taskId) { - SetTaskFuncWithFollowupFunc(taskId, sub_80C8F34, sub_80A9DD8); + SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateTurnOrder, sub_80A9DD8); } static void sub_80A9DD8(u8 taskId) @@ -882,7 +882,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2) SetDebugMonForContest(); for (i = 0; i < 4; i++) - gContestMonConditions[i] = InitContestMonConditionI(i, gSpecialVar_ContestCategory); + gContestMonRound1Points[i] = InitContestMonConditionI(i, gSpecialVar_ContestCategory); SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC); } } @@ -950,15 +950,15 @@ void sub_80AAF30(void) for (i = 0; i < 3; i++) { - gContestMonConditions[i] = 0; + gContestMonRound1Points[i] = 0; gUnknown_02038680[i] = 0; - gUnknown_02038678[i] = 0; + gContestMonTotalPoints[i] = 0; gContestMons[i] = gContestMons[3]; } - gContestMonConditions[3] = 0x12C; + gContestMonRound1Points[3] = 0x12C; gUnknown_02038680[3] = 0x190; - gUnknown_02038678[3] = 0x190; + gContestMonTotalPoints[3] = 0x190; Contest_SaveWinner(0xFE); } @@ -976,9 +976,9 @@ u8 MatsudaDebugMenu_ResetHighScore(void) gUnknown_0203856C = 0; for (i = 0; i < 4; i++) { - gContestMonConditions[i] = 0; + gContestMonRound1Points[i] = 0; gUnknown_02038680[i] = 0; - gUnknown_02038678[i] = 0; + gContestMonTotalPoints[i] = 0; } CloseMenu(); return 1; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index fea93f215..5ca114f49 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -490,7 +490,7 @@ void sub_8081050(u8 taskId) case 1: if (!PaletteFadeActive() && BGMusicStopped()) { - sub_800832C(); + SetCloseLinkCallback(); data[0]++; } break; diff --git a/src/link.c b/src/link.c index 73652a194..213f9f7e3 100644 --- a/src/link.c +++ b/src/link.c @@ -414,7 +414,7 @@ static void LinkTestProcessKeyInput(void) if (gMain.newKeys & R_BUTTON) Save_WriteData(SAVE_LINK); if (gMain.newKeys & SELECT_BUTTON) - sub_800832C(); + SetCloseLinkCallback(); if (gLinkTestDebugValuesEnabled) { u32 vblankCounter1 = gMain.vblankCounter1; @@ -1145,7 +1145,7 @@ u8 GetDummy2(void) return sDummy2; } -void sub_800832C(void) +void SetCloseLinkCallback(void) { if (!gLinkCallback) { diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index b39804b79..8383ae88a 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -220,7 +220,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerDataExchangeStatusTimed() == 3) { - sub_800832C(); + SetCloseLinkCallback(); Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); @@ -282,7 +282,7 @@ static void CB2_MysteryEventMenu(void) gMain.state++; break; case 10: - sub_800832C(); + SetCloseLinkCallback(); gMain.state++; break; case 11: diff --git a/src/new_game.c b/src/new_game.c index 63a13be5e..5d69a56c8 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -1,11 +1,12 @@ #include "global.h" -#include "constants/maps.h" -#include "constants/species.h" -#include "clock.h" #include "new_game.h" #include "battle_records.h" #include "berry.h" +#include "clock.h" +#include "constants/maps.h" +#include "constants/species.h" #include "contest.h" +#include "contest_util.h" #include "decoration_inventory.h" #include "dewford_trend.h" #include "easy_chat.h" @@ -15,6 +16,7 @@ #include "lottery_corner.h" #include "mail_data.h" #include "mauville_man.h" +#include "overworld.h" #include "play_time.h" #include "player_pc.h" #include "pokeblock.h" @@ -23,8 +25,6 @@ #include "pokemon_storage_system.h" #include "random.h" #include "roamer.h" -#include "script_pokemon_80C4.h" -#include "overworld.h" #include "rtc.h" #include "script.h" #include "secret_base.h" diff --git a/src/overworld.c b/src/overworld.c index a0e7939f5..8bd3825b5 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -4,12 +4,17 @@ #include "berry.h" #include "cable_club.h" #include "clock.h" +#include "constants/map_types.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "contest_util.h" #include "event_data.h" +#include "event_object_movement.h" #include "field_camera.h" #include "field_control_avatar.h" #include "field_effect.h" #include "field_fadetransition.h" -#include "event_object_movement.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -22,8 +27,8 @@ #include "heal_location.h" #include "link.h" #include "load_save.h" -#include "main.h" #include "m4a.h" +#include "main.h" #include "map_name_popup.h" #include "menu.h" #include "metatile_behavior.h" @@ -34,8 +39,8 @@ #include "roamer.h" #include "rotating_gate.h" #include "safari_zone.h" +#include "scanline_effect.h" #include "script.h" -#include "script_pokemon_80C4.h" #include "secret_base.h" #include "sound.h" #include "start_menu.h" @@ -43,12 +48,7 @@ #include "tileset_anim.h" #include "time_events.h" #include "tv.h" -#include "scanline_effect.h" #include "wild_encounter.h" -#include "constants/map_types.h" -#include "constants/maps.h" -#include "constants/songs.h" -#include "constants/species.h" #ifdef SAPPHIRE #define LEGENDARY_MUSIC MUS_WEATHER_KYOGRE // Heavy Rain diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c index d0fbbec85..a30856c3f 100644 --- a/src/post_battle_event_funcs.c +++ b/src/post_battle_event_funcs.c @@ -1,12 +1,12 @@ #include "global.h" +#include "constants/heal_locations.h" +#include "contest_util.h" #include "event_data.h" #include "hall_of_fame.h" #include "load_save.h" #include "main.h" -#include "pokemon.h" #include "overworld.h" -#include "script_pokemon_80C4.h" -#include "constants/heal_locations.h" +#include "pokemon.h" extern u8 gUnknown_02039324; diff --git a/src/record_mixing.c b/src/record_mixing.c index 1bf92bb41..f04c2ecb0 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -677,7 +677,7 @@ void sub_80BA00C(u8 taskId) task->data[1]++; if (task->data[1] > 10) { - sub_800832C(); + SetCloseLinkCallback(); task->data[0]++; } break; diff --git a/src/scrcmd.c b/src/scrcmd.c index 3f65d0f02..c51bd2b10 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -3,16 +3,19 @@ #include "berry.h" #include "clock.h" #include "coins.h" -#include "contest_link_80C2020.h" +#include "constants/maps.h" +#include "contest_link_util.h" #include "contest_painting.h" +#include "contest_util.h" #include "data2.h" #include "decoration.h" #include "decoration_inventory.h" #include "event_data.h" +#include "event_object_lock.h" +#include "event_object_movement.h" #include "field_door.h" #include "field_effect.h" #include "field_fadetransition.h" -#include "event_object_movement.h" #include "field_message_box.h" #include "field_player_avatar.h" #include "field_screen_effect.h" @@ -22,27 +25,24 @@ #include "fieldmap.h" #include "item.h" #include "main.h" -#include "event_object_lock.h" #include "menu.h" #include "money.h" #include "mystery_event_script.h" +#include "overworld.h" #include "palette.h" #include "party_menu.h" #include "pokemon.h" #include "random.h" -#include "overworld.h" #include "rtc.h" #include "script.h" #include "script_menu.h" #include "script_movement.h" -#include "script_pokemon_80C4.h" #include "script_pokemon_80F9.h" #include "shop.h" #include "slot_machine.h" #include "sound.h" #include "string_util.h" #include "tv.h" -#include "constants/maps.h" typedef u16 (*SpecialFunc)(void); typedef void (*NativeFunc)(void); @@ -1831,7 +1831,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) { - sub_80C4980(gSpecialVar_ContestCategory); + ContestLinkTransfer(gSpecialVar_ContestCategory); ScriptContext1_Stop(); return TRUE; } diff --git a/src/trade.c b/src/trade.c index 06a65e33a..a28efd39d 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1406,7 +1406,7 @@ static void sub_80489F4(void) { gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition; gUnknown_020297D8[1] = gUnknown_03004824->unk_008a; - sub_800832C(); + SetCloseLinkCallback(); gUnknown_03004824->unk_007b = 13; } } @@ -2158,7 +2158,7 @@ static void sub_8049D9C(void) { if (!gPaletteFade.active) { - sub_800832C(); + SetCloseLinkCallback(); gUnknown_03004824->unk_007b = 12; } } @@ -5168,7 +5168,7 @@ static void sub_804DC88(void) case 8: if (IsBGMStopped() == TRUE) { - sub_800832C(); + SetCloseLinkCallback(); gMain.state ++; } break; diff --git a/src/trainer_card.c b/src/trainer_card.c index 3e653a5d9..18f3db9bb 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1,7 +1,10 @@ #include "global.h" #include "trainer_card.h" +#include "constants/songs.h" +#include "contest_util.h" #include "easy_chat.h" #include "event_data.h" +#include "ewram.h" #include "field_effect.h" #include "graphics.h" #include "link.h" @@ -9,19 +12,16 @@ #include "main.h" #include "menu.h" #include "money.h" +#include "overworld.h" #include "palette.h" #include "pokedex.h" -#include "overworld.h" -#include "script_pokemon_80C4.h" -#include "constants/songs.h" +#include "scanline_effect.h" #include "sound.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" #include "task.h" -#include "scanline_effect.h" #include "util.h" -#include "ewram.h" typedef void (*Callback)(void); @@ -417,7 +417,7 @@ void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard) } r4 = FALSE; - if (sub_80C4D50() > 4) + if (CountPlayerMuseumPaintings() > 4) { r4 = TRUE; } |