From cc846e7d55966489533d224da5ca8913b1ff6e0d Mon Sep 17 00:00:00 2001 From: CharlesFolz4 Date: Sun, 15 Mar 2026 16:56:52 -0400 Subject: [PATCH] Document Contest script commands (#982) --- asm/macros/scrcmd.inc | 158 +- generated/game_records.txt | 2 +- generated/trainer_score_events.txt | 2 +- generated/vars_flags.txt | 14 +- include/constants/contests.h | 17 + include/constants/pokemon.h | 4 +- include/constdata/const_020F55DC.h | 6 - include/constdata/const_020F55EC.h | 8 - include/constdata/const_020F560C.h | 8 - include/constdata/const_020F561C.h | 8 - include/contest.h | 88 + include/overlay006/ov6_022489E4.h | 18 +- include/overlay006/struct_ov6_02248BE8.h | 16 +- include/overlay006/struct_ov6_02248DD8.h | 6 +- include/overlay017/ov17_0223B140.h | 6 +- include/overlay017/ov17_0223CB1C.h | 6 +- include/overlay017/ov17_0223DAD0.h | 6 +- include/overlay017/ov17_0223F118.h | 8 +- include/overlay017/ov17_0223F7E4.h | 5 +- include/overlay017/ov17_022413D8.h | 76 +- include/overlay017/ov17_02243AC4.h | 2 +- include/overlay017/ov17_02245F14.h | 22 +- include/overlay017/ov17_022492DC.h | 5 +- include/overlay017/ov17_0224A0FC.h | 11 +- include/overlay017/ov17_0224E930.h | 2 +- include/overlay017/ov17_0224F080.h | 2 +- include/overlay017/ov17_0224F18C.h | 2 +- include/overlay017/ov17_0224F4D4.h | 6 +- include/overlay017/ov17_02250744.h | 19 +- include/overlay017/ov17_02252AB0.h | 2 +- include/overlay017/struct_ov17_0223BE58.h | 6 +- include/overlay017/struct_ov17_0223F88C.h | 16 +- include/overlay017/struct_ov17_022439C8.h | 4 +- include/overlay017/struct_ov17_02243C28.h | 4 +- include/overlay017/struct_ov17_02243DCC.h | 2 +- include/overlay017/struct_ov17_02243F10.h | 2 +- include/overlay017/struct_ov17_02244240.h | 4 +- include/overlay017/struct_ov17_022443F8.h | 10 +- include/overlay017/struct_ov17_022444BC.h | 4 +- include/overlay017/struct_ov17_022449B8.h | 4 +- include/overlay017/struct_ov17_02244C08.h | 2 +- include/overlay017/struct_ov17_02245E14.h | 4 +- include/overlay017/struct_ov17_022463C4.h | 4 +- .../overlay017/struct_ov17_02246540_sub1.h | 4 +- include/overlay017/struct_ov17_02246F24.h | 5 +- .../overlay017/struct_ov17_02246F24_sub1.h | 6 +- include/overlay017/struct_ov17_022472F8.h | 8 +- include/overlay017/struct_ov17_022476F8.h | 2 +- include/overlay017/struct_ov17_0224792C.h | 2 +- include/overlay017/struct_ov17_02247A48.h | 7 +- include/overlay017/struct_ov17_022482B0.h | 2 +- include/overlay017/struct_ov17_02248464.h | 2 +- include/overlay017/struct_ov17_02248744.h | 2 +- include/overlay017/struct_ov17_02248860.h | 2 +- include/overlay017/struct_ov17_022489C8.h | 4 +- include/overlay017/struct_ov17_02248A24.h | 2 +- include/overlay017/struct_ov17_02248AA4.h | 2 +- include/overlay017/struct_ov17_0224A1EC.h | 6 +- include/overlay017/struct_ov17_0224C0C0.h | 2 +- include/overlay017/struct_ov17_0224D710.h | 2 +- include/overlay017/struct_ov17_0224DF54.h | 5 +- .../overlay017/struct_ov17_0224DF54_sub1.h | 4 +- .../overlay017/struct_ov17_0224DF54_sub2.h | 4 +- include/overlay017/struct_ov17_0224E1F4.h | 4 +- include/overlay017/struct_ov17_0224F3D8.h | 4 +- include/overlay017/struct_ov17_0224FCA0.h | 5 +- .../overlay017/struct_ov17_0224FCA0_sub1.h | 6 +- .../overlay017/struct_ov17_0224FCA0_sub2.h | 4 +- include/overlay017/struct_ov17_022507C4.h | 8 +- include/overlay017/struct_ov17_022508E4.h | 4 +- include/overlay017/struct_ov17_0225228C.h | 2 +- include/overlay017/struct_ov17_0225266C.h | 2 +- include/overlay017/struct_ov17_022538F0.h | 10 - include/overlay017/struct_ov17_0225442C.h | 9 - include/overlay017/struct_ov17_0225470C.h | 2 +- include/overlay017/struct_ov17_02254C0C.h | 9 - include/overlay022/ov22_02255D44.h | 6 +- include/scrcmd_contests.h | 40 + include/script_manager.h | 2 +- .../struct_defs/contest_camera_flash_task.h | 16 + include/struct_defs/contest_player_mon_dto.h | 29 + include/struct_defs/struct_0202440C.h | 4 +- include/struct_defs/struct_0202E7D8.h | 16 - include/struct_defs/struct_02093800.h | 29 - include/struct_defs/struct_02093BBC.h | 25 - include/struct_defs/struct_02094A58.h | 16 - include/struct_defs/struct_020954F0.h | 2 +- include/struct_defs/struct_02095C48.h | 49 - include/struct_defs/struct_02095C48_sub1.h | 30 +- .../struct_defs/struct_02095C48_sub1_sub1.h | 2 +- ...e_segment_contest_hall_showcased_pokemon.h | 16 + .../struct_defs/visual_competition_app_args.h | 28 + include/tv_episode_segment.h | 5 +- include/unk_020298BC.h | 4 +- include/unk_0202E2CC.h | 4 +- include/unk_020363E8.h | 6 +- include/unk_0203D1B8.h | 6 +- include/unk_02046C7C.h | 40 - include/unk_02054884.h | 2 - include/unk_020933F8.h | 46 - include/unk_02094EDC.h | 33 +- include/unk_02095AF0.h | 7 +- platinum.us/main.lsf | 4 +- .../events/events_contest_hall_lobby.json | 10 +- ...ts_contest_hall_stage_ongoing_contest.json | 22 +- res/field/scripts/meson.build | 2 +- res/field/scripts/scripts.order | 2 +- .../scripts/scripts_contest_registration.s | 1323 ------------- res/field/scripts/scripts_contests.s | 1412 ++++++++++++++ res/field/scripts/scripts_day_care_common.s | 4 +- res/text/contest_dance_competition.json | 30 +- res/text/contest_registration.json | 220 +-- res/text/contest_results.json | 12 +- res/text/contest_text.json | 92 +- res/text/contest_visual_competition.json | 28 +- res/text/menu_entries.json | 30 +- src/contest.c | 1645 ++++++++++++++++ src/field_comm_manager.c | 2 +- src/game_records.c | 4 +- src/meson.build | 4 +- src/overlay005/ov5_021DFB54.c | 14 +- src/overlay006/ov6_022489E4.c | 80 +- src/overlay017/ov17_0223B140.c | 207 +- src/overlay017/ov17_0223CB1C.c | 46 +- src/overlay017/ov17_0223DAD0.c | 88 +- src/overlay017/ov17_0223F118.c | 115 +- src/overlay017/ov17_0223F7E4.c | 275 ++- src/overlay017/ov17_022413D8.c | 447 +++-- src/overlay017/ov17_02243AC4.c | 12 +- src/overlay017/ov17_02243C28.c | 307 ++- src/overlay017/ov17_02245F14.c | 294 ++- src/overlay017/ov17_02246ECC.c | 209 +-- src/overlay017/ov17_022476F8.c | 87 +- src/overlay017/ov17_02247A48.c | 111 +- src/overlay017/ov17_022492DC.c | 36 +- src/overlay017/ov17_0224A0FC.c | 174 +- src/overlay017/ov17_0224CFB8.c | 72 +- src/overlay017/ov17_0224E930.c | 81 +- src/overlay017/ov17_0224F080.c | 8 +- src/overlay017/ov17_0224F18C.c | 10 +- src/overlay017/ov17_0224F4D4.c | 132 +- src/overlay017/ov17_02250744.c | 184 +- src/overlay017/ov17_02251D6C.c | 24 +- src/overlay017/ov17_02252AB0.c | 20 +- src/overlay017/ov17_02252CEC.c | 8 +- src/overlay022/ov22_02255D44.c | 84 +- src/overlay022/ov22_0225B660.c | 6 +- src/pokemon.c | 5 +- src/rankings.c | 4 +- src/scrcmd.c | 157 +- src/scrcmd_contests.c | 400 ++++ src/scrcmd_tv_broadcast.c | 4 +- src/script_manager.c | 2 +- src/tv_episode_segment.c | 36 +- src/unk_020298BC.c | 13 +- src/unk_0202E2CC.c | 6 +- src/unk_020363E8.c | 2 +- src/unk_0203D1B8.c | 49 +- src/unk_02046C7C.c | 400 ---- src/unk_0205A0D8.c | 2 +- src/unk_020933F8.c | 1671 ----------------- src/unk_02094EDC.c | 266 ++- src/unk_02095AF0.c | 16 +- 163 files changed, 6143 insertions(+), 6073 deletions(-) delete mode 100644 include/constdata/const_020F55DC.h delete mode 100644 include/constdata/const_020F55EC.h delete mode 100644 include/constdata/const_020F560C.h delete mode 100644 include/constdata/const_020F561C.h create mode 100644 include/contest.h delete mode 100644 include/overlay017/struct_ov17_022538F0.h delete mode 100644 include/overlay017/struct_ov17_0225442C.h delete mode 100644 include/overlay017/struct_ov17_02254C0C.h create mode 100644 include/scrcmd_contests.h create mode 100644 include/struct_defs/contest_camera_flash_task.h create mode 100644 include/struct_defs/contest_player_mon_dto.h delete mode 100644 include/struct_defs/struct_0202E7D8.h delete mode 100644 include/struct_defs/struct_02093800.h delete mode 100644 include/struct_defs/struct_02093BBC.h delete mode 100644 include/struct_defs/struct_02094A58.h delete mode 100644 include/struct_defs/struct_02095C48.h create mode 100644 include/struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h create mode 100644 include/struct_defs/visual_competition_app_args.h delete mode 100644 include/unk_02046C7C.h delete mode 100644 include/unk_020933F8.h delete mode 100644 res/field/scripts/scripts_contest_registration.s create mode 100644 res/field/scripts/scripts_contests.s create mode 100644 src/contest.c create mode 100644 src/scrcmd_contests.c delete mode 100644 src/unk_02046C7C.c delete mode 100644 src/unk_020933F8.c diff --git a/asm/macros/scrcmd.inc b/asm/macros/scrcmd.inc index ebe6200220..98dfb0f8fd 100644 --- a/asm/macros/scrcmd.inc +++ b/asm/macros/scrcmd.inc @@ -1239,7 +1239,7 @@ .short \arg0 .endm - .macro ScrCmd_0C6 + .macro ChangeIntoContestAttire .short 198 .endm @@ -1513,161 +1513,161 @@ .short 247 .endm - .macro ScrCmd_0F8 arg0 + .macro StartContestCommSync syncNo .short 248 - .short \arg0 + .short \syncNo .endm - .macro ScrCmd_0F9 arg0 + .macro WaitForCommSyncState syncState .short 249 - .short \arg0 + .short \syncState .endm - .macro ScrCmd_0FA arg0, arg1, arg2, arg3 + .macro NewContest contestRank, contestType, competitionType, partySlot .short 250 - .short \arg0 - .short \arg1 - .short \arg2 - .short \arg3 + .short \contestRank + .short \contestType + .short \competitionType + .short \partySlot .endm - .macro ScrCmd_0FB arg0 + .macro EndContest mapID .short 251 - .short \arg0 + .short \mapID .endm - .macro ScrCmd_0FC arg0, arg1 + .macro BufferJudgeName judgeID, idx .short 252 - .short \arg0 - .short \arg1 + .short \judgeID + .short \idx .endm - .macro ScrCmd_0FD arg0, arg1 + .macro BufferContestantTrainerName contestantEntryNum, idx .short 253 - .short \arg0 - .short \arg1 + .short \contestantEntryNum + .short \idx .endm - .macro ScrCmd_0FE arg0, arg1 + .macro BufferContestantMonName contestantEntryNum, idx .short 254 - .short \arg0 - .short \arg1 + .short \contestantEntryNum + .short \idx .endm - .macro ScrCmd_0FF arg0, arg1 + .macro BufferContestRegistrationEntryNumber entryNum, strNumIdx .short 255 - .short \arg0 - .short \arg1 + .short \entryNum + .short \strNumIdx .endm - .macro ScrCmd_100 + .macro WaitForLinkContestSetup .short 256 .endm - .macro ScrCmd_101 + .macro RunContestApplication .short 257 .endm - .macro ScrCmd_102 arg0 + .macro BufferContestRank idx .short 258 - .short \arg0 + .short \idx .endm - .macro ScrCmd_103 arg0 + .macro BufferContestType idx .short 259 - .short \arg0 + .short \idx .endm - .macro ScrCmd_104 arg0 + .macro BufferWinningContestantTrainerName idx .short 260 - .short \arg0 + .short \idx .endm - .macro ScrCmd_105 arg0 + .macro SetTrue destTrue .short 261 - .short \arg0 + .short \destTrue .endm - .macro ScrCmd_106 arg0 + .macro BufferWinningContestantMonName idx .short 262 - .short \arg0 + .short \idx .endm - .macro ScrCmd_107 arg0 + .macro GetPlayerContestPlacement destPlayerContestPlacement .short 263 - .short \arg0 + .short \destPlayerContestPlacement .endm - .macro ScrCmd_108 arg0 + .macro GetWinningContestantEntryNum destWinningContestantEntryNum .short 264 - .short \arg0 + .short \destWinningContestantEntryNum .endm - .macro ScrCmd_109 arg0 + .macro GetContestRegistrationEntryNum destVarContestantEntryNum .short 265 - .short \arg0 + .short \destVarContestantEntryNum .endm - .macro ScrCmd_10A arg0, arg1 + .macro GetContestantObjEventGFX contestantEntryNum, destContestantObjEventGFX .short 266 - .short \arg0 - .short \arg1 + .short \contestantEntryNum + .short \destContestantObjEventGFX .endm - .macro ScrCmd_10B arg0, arg1 + .macro GetContestantMonContestFame contestantEntryNum, destMonContestFame .short 267 - .short \arg0 - .short \arg1 + .short \contestantEntryNum + .short \destMonContestFame .endm - .macro ScrCmd_10C arg0 + .macro GetContestMode destContestMode .short 268 - .short \arg0 + .short \destContestMode .endm - .macro ScrCmd_10D arg0 + .macro CheckPlayerMonHasRibbon destHasRibbon .short 269 - .short \arg0 + .short \destHasRibbon .endm - .macro ScrCmd_10E arg0 + .macro SetRibbonName idx .short 270 - .short \arg0 + .short \idx .endm - .macro ScrCmd_10F arg0 + .macro GetFirstTimeVictoryAccessory destAccessoryID .short 271 - .short \arg0 + .short \destAccessoryID .endm - .macro ScrCmd_110 arg0, arg1, arg2, arg3 + .macro GetContestInfo contestRank, contestType, competitionType, monPartySlot .short 272 - .short \arg0 - .short \arg1 - .short \arg2 - .short \arg3 + .short \contestRank + .short \contestType + .short \competitionType + .short \monPartySlot .endm - .macro ScrCmd_111 arg0 + .macro StartContestCameraFlashTask contestantEntryNum .short 273 - .short \arg0 + .short \contestantEntryNum .endm - .macro ScrCmd_112 + .macro WaitForContestCameraFlashTask .short 274 .endm - .macro ScrCmd_113 + .macro StopHBlank .short 275 .endm - .macro ScrCmd_114 + .macro StartHBlank .short 276 .endm - .macro ScrCmd_115 arg0 + .macro GetShouldSkipAwardCeremony destSkipAwardCeremony .short 277 - .short \arg0 + .short \destSkipAwardCeremony .endm .macro ShowLinkContestRecords @@ -1678,7 +1678,7 @@ .short 279 .endm - .macro ScrCmd_118 + .macro LockTextSpeed .short 280 .endm @@ -2327,28 +2327,28 @@ .short \destVar .endm - .macro OpenPartyMenuForContest partySlot, contestRank, contestType, arg3 + .macro OpenPartyMenuForContest partySlot, contestRank, contestType, useDefaultContestRank .short 404 .short \partySlot .short \contestRank .short \contestType - .short \arg3 + .short \useDefaultContestRank .endm - .macro ScrCmd_195 arg0, arg1 + .macro TryEnterContestMon partySlot, menuItemSelection .short 405 - .short \arg0 - .short \arg1 + .short \partySlot + .short \menuItemSelection .endm - .macro ScrCmd_196 arg0 + .macro SetMonSummary partySlot .short 406 - .short \arg0 + .short \partySlot .endm - .macro ScrCmd_197 arg0 + .macro GetMonPartySlot partySlot .short 407 - .short \arg0 + .short \partySlot .endm .macro GetPartyMonSpecies partySlot, destVar @@ -4122,7 +4122,7 @@ .short 688 .endm - .macro ScrCmd_2B1 + .macro DestroyNetworkIcon .short 689 .endm diff --git a/generated/game_records.txt b/generated/game_records.txt index 17c5e624e7..da7c87a738 100644 --- a/generated/game_records.txt +++ b/generated/game_records.txt @@ -90,7 +90,7 @@ RECORD_UNK_088 RECORD_UNK_089 RECORD_SUPER_CONTEST_PARTICIPATIONS RECORD_LINK_CONTEST_PARTICIPATIONS -RECORD_SUPER_CONTEST_WINS +RECORD_OFFICIAL_CONTEST_WINS RECORD_LINK_CONTEST_WINS RECORD_RIBBONS_WON RECORD_USED_INEFFECTIVE_MOVE diff --git a/generated/trainer_score_events.txt b/generated/trainer_score_events.txt index 99a03b7cee..059d316397 100644 --- a/generated/trainer_score_events.txt +++ b/generated/trainer_score_events.txt @@ -11,7 +11,7 @@ TRAINER_SCORE_EVENT_CAPTURED_REGIONAL_MON TRAINER_SCORE_EVENT_CAPTURED_NATIONAL_MON TRAINER_SCORE_EVENT_WON_TRAINER_BATTLE TRAINER_SCORE_EVENT_UNK_12 -TRAINER_SCORE_EVENT_WIN_SUPER_CONTEST +TRAINER_SCORE_EVENT_WIN_OFFICIAL_CONTEST TRAINER_SCORE_EVENT_UNK_14 TRAINER_SCORE_EVENT_UNK_15 TRAINER_SCORE_EVENT_UNK_16 diff --git a/generated/vars_flags.txt b/generated/vars_flags.txt index 430bb6d01d..96ee4fc57e 100644 --- a/generated/vars_flags.txt +++ b/generated/vars_flags.txt @@ -511,11 +511,11 @@ FLAG_UNK_0x01FD FLAG_UNK_0x01FE FLAG_UNK_0x01FF FLAG_UNK_0x0200 -FLAG_UNK_0x0201 -FLAG_UNK_0x0202 -FLAG_UNK_0x0203 -FLAG_UNK_0x0204 -FLAG_UNK_0x0205 +FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT1 +FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT2 +FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT3 +FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT4 +FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT_WINNER FLAG_HIDE_HEARTHOME_ROUTE_209_ROADBLOCK FLAG_HIDE_HEARTHOME_ROUTE_209_GATE_RIVAL FLAG_UNK_0x0208 @@ -529,7 +529,7 @@ FLAG_UNK_0x020F FLAG_UNK_0x0210 FLAG_UNK_0x0211 FLAG_HIDE_POKETCH_CO_1F_REPORTER -FLAG_UNK_0x0213 +FLAG_HIDE_CONTEST_HALL_LOBBY_REPORTER FLAG_UNK_0x0214 FLAG_HIDE_JUBILIFE_TV_2F_REPORTER FLAG_UNK_0x0216 @@ -4303,7 +4303,7 @@ VAR_UNK_0x40C8 VAR_UNK_0x40C9 VAR_FOLLOWER_RIVAL_TIMES_TALKED VAR_UNK_0x40CB -VAR_UNK_0x40CC +VAR_ONGOING_CONTEST VAR_ETERNA_FOREST_CHERYL_OLD_CHATEAU_CUTSCENE_STATE VAR_ELEVATOR_FLOORS_ABOVE VAR_VALLEY_WINDWORKS_TEAM_GALACTIC_STATE diff --git a/include/constants/contests.h b/include/constants/contests.h index 0613877168..7b8ccdf6ad 100644 --- a/include/constants/contests.h +++ b/include/constants/contests.h @@ -1,9 +1,26 @@ #ifndef POKEPLATINUM_CONSTANTS_CONTESTS_H #define POKEPLATINUM_CONSTANTS_CONTESTS_H +#define CONTEST_MODE_OFFICIAL 0 +#define CONTEST_MODE_LINK 1 +#define CONTEST_MODE_PRACTICE 2 + +#define CONTEST_COMPETITION_UNK0 0 +#define CONTEST_COMPETITION_UNK1 1 +#define CONTEST_COMPETITION_LINK_OR_OFFICIAL 2 +#define CONTEST_COMPETITION_PRACTICE_VISUAL 3 +#define CONTEST_COMPETITION_VISUAL 4 +#define CONTEST_COMPETITION_PRACTICE_DANCE 5 +#define CONTEST_COMPETITION_DANCE 6 +#define CONTEST_COMPETITION_PRACTICE_ACTING 7 +#define CONTEST_COMPETITION_ACTING 8 + #define CONTEST_NUM_PARTICIPANTS 4 +#define CONTEST_NUM_JUDGES 3 #define POINTS_PER_APPEAL_HEART 10 #define MAX_APPEAL_HEARTS 6 +#define PLAYER_CONTESTANT_ID 0 + #endif // POKEPLATINUM_CONSTANTS_CONTESTS_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index ec73518c9c..f424c9a9c8 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -6,7 +6,9 @@ #include "generated/pokemon_types.h" // PokemonType #include "generated/species_data_params.h" // SpeciesDataParam -#define MAX_PARTY_SIZE 6 +#define MAX_PARTY_SIZE 6 +#define PARTY_SLOT_NONE 0xFF + #define NUM_BOOSTABLE_STATS 8 #define MAX_IVS_SINGLE_STAT 31 diff --git a/include/constdata/const_020F55DC.h b/include/constdata/const_020F55DC.h deleted file mode 100644 index bc916d8b79..0000000000 --- a/include/constdata/const_020F55DC.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef POKEPLATINUM_CONST_020F55DC_H -#define POKEPLATINUM_CONST_020F55DC_H - -extern const ApplicationManagerTemplate Unk_020F55DC; - -#endif // POKEPLATINUM_CONST_020F55DC_H diff --git a/include/constdata/const_020F55EC.h b/include/constdata/const_020F55EC.h deleted file mode 100644 index 2f012bbf3f..0000000000 --- a/include/constdata/const_020F55EC.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef POKEPLATINUM_CONST_020F55EC_H -#define POKEPLATINUM_CONST_020F55EC_H - -#include "overlay_manager.h" - -extern const ApplicationManagerTemplate Unk_020F55EC; - -#endif // POKEPLATINUM_CONST_020F55EC_H diff --git a/include/constdata/const_020F560C.h b/include/constdata/const_020F560C.h deleted file mode 100644 index 3089286e0e..0000000000 --- a/include/constdata/const_020F560C.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef POKEPLATINUM_CONST_020F560C_H -#define POKEPLATINUM_CONST_020F560C_H - -#include "overlay_manager.h" - -extern const ApplicationManagerTemplate Unk_020F560C; - -#endif // POKEPLATINUM_CONST_020F560C_H diff --git a/include/constdata/const_020F561C.h b/include/constdata/const_020F561C.h deleted file mode 100644 index 63772531a5..0000000000 --- a/include/constdata/const_020F561C.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef POKEPLATINUM_CONST_020F561C_H -#define POKEPLATINUM_CONST_020F561C_H - -#include "overlay_manager.h" - -extern const ApplicationManagerTemplate Unk_020F561C; - -#endif // POKEPLATINUM_CONST_020F561C_H diff --git a/include/contest.h b/include/contest.h new file mode 100644 index 0000000000..144f3b993d --- /dev/null +++ b/include/contest.h @@ -0,0 +1,88 @@ +#ifndef POKEPLATINUM_CONTEST_H +#define POKEPLATINUM_CONTEST_H + +#include "struct_defs/contest_camera_flash_task.h" +#include "struct_defs/contest_player_mon_dto.h" +#include "struct_defs/image_clips.h" +#include "struct_defs/struct_02095C48_sub1.h" +#include "struct_defs/struct_02095C60.h" +#include "struct_defs/visual_competition_app_args.h" + +#include "field_task.h" +#include "game_options.h" +#include "journal.h" +#include "party.h" +#include "pokemon.h" +#include "savedata.h" +#include "string_template.h" +#include "sys_task_manager.h" +#include "trainer_info.h" + +typedef struct Contest { + UnkStruct_02095C48_sub1 unk_00; + Party *party; + void *chatotCry[CONTEST_NUM_PARTICIPANTS]; + void *unk_150; + u8 unk_154; + u8 isLinkContest; + u8 unk_156[4]; + u8 linkState; + u8 unk_15B; + int unk_15C; + int padding_160; + SysTask *commTask; + u8 unk_168[4][256]; + u8 unk_568; + u8 unk_569[1024]; + u8 unk_969[4][1024]; + u8 padding_1969[3]; + const Options *options; + SaveData *saveData; + Pokemon *playerMon; + const TrainerInfo *trainerInfo; + u8 monPartySlot; + u8 isGameCompleted; + u8 isNatDexObtained; + u8 padding_197F; + ImageClips *imageClips; + UnkStruct_02095C60 unk_1984; + VisualCompetitionAppArgs *visualCompetitionAppArgs; + ContestCameraFlashTask *cameraFlashTask; + u32 rngSeed; +} Contest; + +void FieldTask_InitRunContestTask(FieldTask *fieldTask, Contest *contest); +Contest *Contest_Init(const PlayerMonContestDTO *playerMonContestDTO); +void Contest_Free(Contest *contest); +BOOL Contest_SetUpLinkContest(Contest *contest); +BOOL Contest_IsCommTaskDone(Contest *contest); +void Contest_BufferJudgeName(Contest *contest, int judgeID, StringTemplate *strTemplate, u32 idx); +void Contest_BufferContestantTrainerName(Contest *contest, int contestantEntryNum, StringTemplate *strTemplate, u32 idx); +void Contest_BufferMonNickname(Contest *contest, int contestantEntryNum, StringTemplate *strTemplate, u32 idx); +void Contest_BufferContestRank(Contest *contest, StringTemplate *strTemplate, u32 idx); +void Contest_BufferContestType(Contest *contest, StringTemplate *strTemplate, u32 idx); +void Contest_BufferWinningContestantTrainerName(Contest *contest, StringTemplate *strTemplate, u32 idx); +void Contest_BufferWinningContestantMonName(Contest *contest, StringTemplate *strTemplate, u32 idx); +BOOL Contest_True(Contest *contest); +void Contest_StartCommSync(Contest *contest, u8 syncNo); +BOOL Contest_IsSyncState(Contest *contest, u8 syncState); +int Contest_GetPlayerContestPlacement(Contest *contest); +int Contest_GetWinningContestantEntryNum(Contest *contest); +int Contest_GetPlayerContestantEntryNum(Contest *contest); +int Contest_GetContestantObjEventGFX(Contest *contest, int contestantEntryNum); +int Contest_GetContestantMonContestFame(Contest *contest, int contestantEntryNum); +int Contest_GetContestMode(Contest *contest); +void Contest_GetContestInfo(Contest *contest, u16 *contestRank, u16 *contestType, u16 *competitionType, u16 *monPartySlot); +void Contest_LockAutoScrollForLinkContests(Contest *contest); +void Contest_LockTextSpeed(Contest *unused); +BOOL Contest_CheckPlayerMonHasRibbon(Contest *contest); +void Contest_SetRibbonName(Contest *contest, StringTemplate *string, u32 idx, int unused); +u32 Contest_CalcFirstTimeVictoryAccessoryReward(Contest *contest); +void Contest_StartCameraFlashTask(Contest *contest, int contestantEntryNum); +BOOL Contest_CameraFlashTaskDone(Contest *contest); +void sub_02094BB4(Contest *contest, int *destWinningContestantEntryNum, BOOL *destIsLinkContest, int *param3, BOOL *isPracticeCompetition, int *param5); +void Contest_EndContest(Contest *contest, SaveData *saveData, u32 mapID, JournalEntry *journalEntry); +u16 Contest_GetRNGNext(Contest *contest); +u16 Contest_GetSeededRNGNext(u32 seed, u32 *destRNGVal); + +#endif // POKEPLATINUM_CONTEST_H diff --git a/include/overlay006/ov6_022489E4.h b/include/overlay006/ov6_022489E4.h index 20aa3ce256..27ef22d1f4 100644 --- a/include/overlay006/ov6_022489E4.h +++ b/include/overlay006/ov6_022489E4.h @@ -2,29 +2,29 @@ #define POKEPLATINUM_OV6_022489E4_H #include "struct_defs/struct_020954F0.h" -#include "struct_defs/struct_02095C48.h" #include "overlay006/struct_ov6_02248BE8.h" #include "overlay006/struct_ov6_02248DD8.h" +#include "contest.h" #include "pokemon.h" #include "string_gf.h" void ov6_022489E4(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248A64(UnkStruct_02095C48 *param0); +BOOL ov6_02248A64(Contest *param0); void ov6_02248AC8(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248AF0(UnkStruct_02095C48 *param0, int param1, const Pokemon *param2); +BOOL ov6_02248AF0(Contest *param0, int param1, const Pokemon *param2); void ov6_02248B30(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248B70(UnkStruct_02095C48 *param0, Pokemon **param1); +BOOL ov6_02248B70(Contest *param0, Pokemon **param1); void ov6_02248BC0(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248BE8(UnkStruct_02095C48 *param0, int param1, const UnkStruct_ov6_02248BE8 *param2); +BOOL ov6_02248BE8(Contest *param0, int param1, const UnkStruct_ov6_02248BE8 *param2); void ov6_02248C28(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248C68(UnkStruct_02095C48 *param0, int param1, const UnkStruct_020954F0 *param2); +BOOL ov6_02248C68(Contest *param0, int param1, const UnkStruct_020954F0 *param2); void ov6_02248CBC(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248CE8(UnkStruct_02095C48 *param0, int param1, const String *param2); +BOOL ov6_02248CE8(Contest *param0, int param1, const String *param2); void ov6_02248D38(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248D64(UnkStruct_02095C48 *param0, int param1, void *param2); +BOOL ov6_02248D64(Contest *param0, int param1, void *param2); void ov6_02248DA0(int param0, int param1, void *param2, void *param3); -BOOL ov6_02248DD8(UnkStruct_02095C48 *param0, int param1, const UnkStruct_ov6_02248DD8 *param2); +BOOL ov6_02248DD8(Contest *param0, int param1, const UnkStruct_ov6_02248DD8 *param2); #endif // POKEPLATINUM_OV6_022489E4_H diff --git a/include/overlay006/struct_ov6_02248BE8.h b/include/overlay006/struct_ov6_02248BE8.h index f8a2ee1fd3..ee2e39ca41 100644 --- a/include/overlay006/struct_ov6_02248BE8.h +++ b/include/overlay006/struct_ov6_02248BE8.h @@ -1,21 +1,23 @@ #ifndef POKEPLATINUM_STRUCT_OV6_02248BE8_H #define POKEPLATINUM_STRUCT_OV6_02248BE8_H +#include "constants/moves.h" + typedef struct { u32 unk_00; u32 unk_04; u16 unk_08; u16 unk_0A; - u16 unk_0C[4]; + u16 unk_0C[LEARNED_MOVES_MAX]; u16 unk_14; u16 unk_16; u16 unk_18; - u8 unk_1A; - u8 unk_1B; - u8 unk_1C; - u8 unk_1D; - u8 unk_1E; - u8 unk_1F; + u8 cool; + u8 beauty; + u8 cute; + u8 smart; + u8 tough; + u8 sheen; u16 unk_20_0 : 3; u16 unk_20_3 : 1; u16 unk_20_4 : 1; diff --git a/include/overlay006/struct_ov6_02248DD8.h b/include/overlay006/struct_ov6_02248DD8.h index e265c1a6fa..676539cd66 100644 --- a/include/overlay006/struct_ov6_02248DD8.h +++ b/include/overlay006/struct_ov6_02248DD8.h @@ -2,11 +2,11 @@ #define POKEPLATINUM_STRUCT_OV6_02248DD8_H typedef struct { - u8 unk_00; + u8 trainerGender; u8 unk_01; - u8 unk_02; + u8 monContestFame; u8 padding_03; - u16 unk_04; + u16 contestantObjEventGFX; } UnkStruct_ov6_02248DD8; #endif // POKEPLATINUM_STRUCT_OV6_02248DD8_H diff --git a/include/overlay017/ov17_0223B140.h b/include/overlay017/ov17_0223B140.h index 78aabb7ab3..1258c35056 100644 --- a/include/overlay017/ov17_0223B140.h +++ b/include/overlay017/ov17_0223B140.h @@ -5,9 +5,9 @@ #include "overlay_manager.h" -int ov17_0223B140(ApplicationManager *appMan, int *param1); -int ov17_0223B444(ApplicationManager *appMan, int *param1); -int ov17_0223B580(ApplicationManager *appMan, int *param1); +int ActingCompetition_Init(ApplicationManager *appMan, int *param1); +int ActingCompetition_Main(ApplicationManager *appMan, int *param1); +int ActingCompetition_Exit(ApplicationManager *appMan, int *param1); void ov17_0223BB14(UnkStruct_ov17_02246F24 *param0, int param1, int param2); #endif // POKEPLATINUM_OV17_0223B140_H diff --git a/include/overlay017/ov17_0223CB1C.h b/include/overlay017/ov17_0223CB1C.h index 063a7d4521..dc3f5497af 100644 --- a/include/overlay017/ov17_0223CB1C.h +++ b/include/overlay017/ov17_0223CB1C.h @@ -3,8 +3,8 @@ #include "overlay_manager.h" -int ov17_0223CB1C(ApplicationManager *appMan, int *param1); -int ov17_0223CDDC(ApplicationManager *appMan, int *param1); -int ov17_0223CF8C(ApplicationManager *appMan, int *param1); +int VisualCompetitonScoring_Init(ApplicationManager *appMan, int *param1); +int VisualCompetitionScoring_Main(ApplicationManager *appMan, int *param1); +int VisualCompetitionScoring_Exit(ApplicationManager *appMan, int *param1); #endif // POKEPLATINUM_OV17_0223CB1C_H diff --git a/include/overlay017/ov17_0223DAD0.h b/include/overlay017/ov17_0223DAD0.h index 8b9e6a2e46..970a9ae509 100644 --- a/include/overlay017/ov17_0223DAD0.h +++ b/include/overlay017/ov17_0223DAD0.h @@ -3,9 +3,9 @@ #include "overlay_manager.h" -int ov17_0223DAD0(ApplicationManager *appMan, int *param1); -int ov17_0223DDD4(ApplicationManager *appMan, int *param1); -int ov17_0223DF0C(ApplicationManager *appMan, int *param1); +int DanceCompetition_Init(ApplicationManager *appMan, int *param1); +int DanceCompetition_Main(ApplicationManager *appMan, int *param1); +int DanceCompetition_Exit(ApplicationManager *appMan, int *param1); int ov17_0223F0BC(int param0, int param1); #endif // POKEPLATINUM_OV17_0223DAD0_H diff --git a/include/overlay017/ov17_0223F118.h b/include/overlay017/ov17_0223F118.h index 327f0dff58..c163350710 100644 --- a/include/overlay017/ov17_0223F118.h +++ b/include/overlay017/ov17_0223F118.h @@ -2,13 +2,13 @@ #define POKEPLATINUM_OV17_0223F118_H #include "struct_decls/struct_02012744_decl.h" -#include "struct_defs/struct_02095C48.h" #include "overlay017/struct_ov17_0223F2E4.h" #include "overlay017/struct_ov17_0223F6E8.h" #include "overlay017/struct_ov17_0223F744.h" #include "bg_window.h" +#include "contest.h" #include "g3d_pipeline.h" #include "palette.h" #include "sprite_system.h" @@ -20,9 +20,9 @@ void ov17_0223F1E0(G3DPipelineBuffers *param0); void ov17_0223F1E8(enum HeapID heapID, BgConfig *param1, SpriteManager *param2, UnkStruct_02012744 *param3, UnkStruct_ov17_0223F2E4 *param4, const String *param5, enum Font param6, TextColor param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14); void ov17_0223F2E4(UnkStruct_ov17_0223F2E4 *param0); void ov17_0223F2F8(UnkStruct_ov17_0223F2E4 *param0, int param1, int param2, int param3); -String *ov17_0223F310(u32 param0, enum HeapID heapID); -void ov17_0223F334(UnkStruct_02095C48 *param0, int param1); -void ov17_0223F374(UnkStruct_02095C48 *param0); +String *Contest_GetJudgeName(u32 judgeNameMessageID, enum HeapID heapID); +void ov17_0223F334(Contest *param0, int param1); +void ov17_0223F374(Contest *param0); void ov17_0223F560(SpriteSystem *param0, SpriteManager *param1, PaletteData *param2, int param3, int param4, int param5, int param6); void ov17_0223F5E8(SpriteManager *param0, int param1, int param2, int param3, int param4); void ov17_0223F630(UnkStruct_ov17_0223F6E8 *param0, SpriteSystem *param1, SpriteManager *param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, u32 param10); diff --git a/include/overlay017/ov17_0223F7E4.h b/include/overlay017/ov17_0223F7E4.h index 86bf446c47..b64b8ebce9 100644 --- a/include/overlay017/ov17_0223F7E4.h +++ b/include/overlay017/ov17_0223F7E4.h @@ -1,17 +1,16 @@ #ifndef POKEPLATINUM_OV17_0223F7E4_H #define POKEPLATINUM_OV17_0223F7E4_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_0223F7E4_decl.h" #include "overlay017/struct_ov17_0223F88C.h" #include "overlay017/struct_ov17_022472F8.h" #include "bg_window.h" +#include "contest.h" void ov17_0223F80C(BgConfig *param0); void ov17_0223F864(BgConfig *param0); -void *ov17_0223F88C(UnkStruct_02095C48 *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2); +void *ov17_0223F88C(Contest *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2); void ov17_0223F960(UnkStruct_ov17_0223F7E4 *param0); void ov17_0223F9C4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2, void *param3); int ov17_0223FAF8(UnkStruct_ov17_0223F7E4 *param0); diff --git a/include/overlay017/ov17_022413D8.h b/include/overlay017/ov17_022413D8.h index ef2ac5029d..f815324387 100644 --- a/include/overlay017/ov17_022413D8.h +++ b/include/overlay017/ov17_022413D8.h @@ -1,7 +1,9 @@ #ifndef POKEPLATINUM_OV17_022413D8_H #define POKEPLATINUM_OV17_022413D8_H -#include "struct_defs/struct_02095C48.h" +#include "generated/moves.h" +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" #include "overlay017/struct_ov17_0223F88C.h" #include "overlay017/struct_ov17_0224145C.h" @@ -11,10 +13,62 @@ #include "overlay017/struct_ov17_02246F24.h" #include "overlay017/struct_ov17_022472F8.h" +#include "contest.h" #include "narc.h" #include "palette.h" #include "sprite_system.h" +enum ActingCompetitionMessagesID { + ACTING_COMPETITION_MESSAGE_NONE, + ACTING_COMPETITION_MESSAGE_CHOOSE_JUDGE, + ACTING_COMPETITION_MESSAGE_WHICH_MOVE_IS_YOUR_CHOICE, + ACTING_COMPETITION_MESSAGE_LAST_PERFORMANCE_CHOOSE_MOVE, + ACTING_COMPETITION_MESSAGE_TO_JUDGE_MON_PERFORMED_MOVE, + ACTING_COMPETITION_MESSAGE_SOMEONE_ALREADY_PERFORMED_FOR_JUDGE, + ACTING_COMPETITION_MESSAGE_EMPTY1, + ACTING_COMPETITION_MESSAGE_JUDGE_STRONGLY_IMPRESSED, // two mon performed for judge, +2 + ACTING_COMPETITION_MESSAGE_JUDGE_WAS_IMPRESSED, // three mon performed for judge, +1 + ACTING_COMPETITION_MESSAGE_EVERYONE_PERFORMED_FOR_SAME_JUDGE, // four mon performed for judge, +0 + ACTING_COMPETITION_MESSAGE_JUDGE_VERY_IMPRESSED, // one mon performed for judge, +3 + ACTING_COMPETITION_MESSAGE_EMPTY2, + ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_EMPTY3, + ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_EMPTY4, + ACTING_COMPETITION_MESSAGE_EMPTY5, + ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_PRETTY_EXCITED, + ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_GOING_WILD, + ACTING_COMPETITION_MESSAGE_EMPTY6, + ACTING_COMPETITION_MESSAGE_EMPTY7, + ACTING_COMPETITION_MESSAGE_EMPTY8, + ACTING_COMPETITION_MESSAGE_EMPTY9, + ACTING_COMPETITION_MESSAGE_MON_DIDNT_STAND_OUT, + ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_LITTLE_ATTENTION, + ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_DECENT_ATTENTION, + ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_A_LOT_OF_ATTENTION, + ACTING_COMPETITION_MESSAGE_MON_COMMANDED_TOTAL_ATTENTION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_CUTE_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_EMPTY10, + ACTING_COMPETITION_MESSAGE_TIME_FOR_SMART_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_TOUGH_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_BEAUTY_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_COOL_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_NEXT_TURN_LOWEST_SCORING_PERFORM_FIRST, + ACTING_COMPETITION_MESSAGE_JUDGING_IS_OVER, + ACTING_COMPETITION_MESSAGE_EMPTY11, + ACTING_COMPETITION_MESSAGE_BEGIN_PRACTICE, + ACTING_COMPETITION_MESSAGE_COMMUNICATING_PLEASE_STAND_BY, + ACTING_COMPETITION_MESSAGE_MAX, +}; + void ov17_022413D8(void); void ov17_022413E4(UnkStruct_ov17_02246F24 *param0, int param1, int param2); void ov17_02241428(UnkStruct_ov17_02246F24 *param0); @@ -22,10 +76,10 @@ UnkStruct_ov17_0224145C *ov17_0224145C(UnkStruct_ov17_02246F24 *param0, int para void ov17_02241494(UnkStruct_ov17_0224145C *param0); void ov17_022414B0(UnkStruct_ov17_0224145C *param0); BOOL ov17_022414BC(UnkStruct_ov17_0224145C *param0); -void ov17_02241524(UnkStruct_ov17_0223F88C *param0, int param1); +void ov17_02241524(UnkStruct_ov17_0223F88C *param0, int contestantID); void ov17_022415E4(UnkStruct_ov17_0223F88C *param0); void ov17_022416E4(UnkStruct_ov17_0223F88C *param0); -void ov17_02241928(UnkStruct_ov17_0223F88C *param0, UnkStruct_02095C48 *param1, NARC *param2); +void ov17_02241928(UnkStruct_ov17_0223F88C *param0, Contest *param1, NARC *param2); void ov17_0224197C(UnkStruct_ov17_0223F88C *param0); void ov17_022419AC(PaletteData *param0, SpriteSystem *param1, SpriteManager *param2, NARC *param3); void ov17_02241A00(SpriteManager *param0); @@ -47,8 +101,8 @@ BOOL ov17_022424A8(UnkStruct_ov17_0223F88C *param0, int param1); void ov17_022424D4(UnkStruct_ov17_0223F88C *param0, int param1, int param2); void ov17_022426E8(UnkStruct_ov17_02246F24 *param0, int param1, u8 *param2); void ov17_02242DA8(UnkStruct_ov17_02246F24 *param0); -void ov17_02242E5C(UnkStruct_ov17_02246F24 *param0, u32 param1, const UnkStruct_ov17_022449B8 *param2, const void *param3); -void ov17_02242E9C(UnkStruct_ov17_02246F24 *param0, int param1, int param2, const UnkStruct_ov17_022449B8 *param3, const void *param4); +void ov17_02242E5C(UnkStruct_ov17_02246F24 *param0, enum ActingCompetitionMessagesID actingMessagesID, const UnkStruct_ov17_022449B8 *param2, const void *param3); +void ov17_02242E9C(UnkStruct_ov17_02246F24 *param0, int contestMoveEffect, int param2, const UnkStruct_ov17_022449B8 *param3, const void *param4); int ov17_02242ECC(UnkStruct_ov17_02246F24 *param0); void ov17_02242EE4(UnkStruct_ov17_02246F24 *param0, int param1); void ov17_02242FA4(UnkStruct_ov17_02246F24 *param0); @@ -58,7 +112,7 @@ void ov17_02243040(SpriteSystem *param0, SpriteManager *param1, NARC *param2); void ov17_0224308C(SpriteManager *param0); void ov17_022430AC(UnkStruct_ov17_0223F88C *param0, int param1, int param2); void ov17_022430F8(UnkStruct_ov17_0223F88C *param0); -void ov17_02243120(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_022449B8 *param1, int param2); +void ov17_02243120(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_022449B8 *param1, int contestantID); u32 ov17_0224314C(int param0, int param1, UnkStruct_ov17_022449B8 *param2); int ov17_02243174(int param0); void ov17_022431A0(UnkStruct_ov17_02246F24 *param0, int param1, u8 param2, int param3, int param4, u8 *param5); @@ -66,10 +120,10 @@ void ov17_0224331C(UnkStruct_ov17_02246F24 *param0, int param1, int param2, u8 * UnkStruct_ov17_0224365C *ov17_0224365C(UnkStruct_ov17_02246F24 *param0, int param1); void ov17_02243690(UnkStruct_ov17_0224365C *param0); void ov17_022436D0(UnkStruct_ov17_02246F24 *param0, int param1, int param2, int param3, u8 *param4); -u32 ov17_02243944(int param0); -u32 ov17_02243970(int param0); -u32 ov17_0224399C(int param0); -void ov17_022439C8(UnkStruct_02095C48 *param0, int param1, int param2, UnkStruct_ov17_022439C8 *param3); -int ov17_02243A98(UnkStruct_ov17_022472F8 *param0, int param1, int param2); +u32 Contest_GetActingCompetitionMessageIntroAnnouncement(enum PokemonContestType contestType); +u32 Contest_GetActingCompetitionMessageGoodMoveType(enum PokemonContestType contestType); +u32 Contest_GetActingCompetitionMessageBadMoveType(enum PokemonContestType contestType); +void ov17_022439C8(Contest *param0, int contestantID, enum Move moveID, UnkStruct_ov17_022439C8 *param3); +BOOL ov17_02243A98(UnkStruct_ov17_022472F8 *param0, int contestantID, int moveID); #endif // POKEPLATINUM_OV17_022413D8_H diff --git a/include/overlay017/ov17_02243AC4.h b/include/overlay017/ov17_02243AC4.h index ce25b136df..0df9901858 100644 --- a/include/overlay017/ov17_02243AC4.h +++ b/include/overlay017/ov17_02243AC4.h @@ -5,7 +5,7 @@ int ov17_02243AC4(UnkStruct_ov17_022472F8 *param0, int param1); int ov17_02243AE4(int param0); -int ov17_02243AF0(int param0, int param1, int param2, int param3); +int ov17_02243AF0(int contestType, int moveID, int unused1, int unused2); void ov17_02243B0C(UnkStruct_ov17_022472F8 *param0); #endif // POKEPLATINUM_OV17_02243AC4_H diff --git a/include/overlay017/ov17_02245F14.h b/include/overlay017/ov17_02245F14.h index 34aba88380..a5c4077698 100644 --- a/include/overlay017/ov17_02245F14.h +++ b/include/overlay017/ov17_02245F14.h @@ -6,18 +6,18 @@ #include "overlay017/struct_ov17_02246F24.h" void ov17_02245F44(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1); -void ov17_02245FB4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2); -void ov17_02246018(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2); +void ov17_02245FB4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID); +void ov17_02246018(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID); void ov17_02246044(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1); void ov17_022460C8(UnkStruct_ov17_02246540 *param0); -void ov17_022460DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2); -void ov17_02246138(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2); -void ov17_02246160(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3); -void ov17_02246228(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3); -BOOL ov17_022462A4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3); -BOOL ov17_02246304(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3); -BOOL ov17_02246364(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3); -void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, UnkStruct_ov17_022463C4 *param3); -void ov17_02246518(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, UnkStruct_ov17_022463C4 *param3); +void ov17_022460DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID); +void ov17_02246138(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID); +void ov17_02246160(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3); +void ov17_02246228(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3); +BOOL ov17_022462A4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3); +BOOL ov17_02246304(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3); +BOOL ov17_02246364(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3); +void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, UnkStruct_ov17_022463C4 *param3); +void ov17_02246518(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, UnkStruct_ov17_022463C4 *param3); #endif // POKEPLATINUM_OV17_02245F14_H diff --git a/include/overlay017/ov17_022492DC.h b/include/overlay017/ov17_022492DC.h index 9d2d621e1c..81d6b69e33 100644 --- a/include/overlay017/ov17_022492DC.h +++ b/include/overlay017/ov17_022492DC.h @@ -1,16 +1,15 @@ #ifndef POKEPLATINUM_OV17_022492DC_H #define POKEPLATINUM_OV17_022492DC_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_022492DC_decl.h" #include "overlay017/struct_ov17_0224A1EC.h" #include "bg_window.h" +#include "contest.h" void ov17_02249300(BgConfig *param0); void ov17_02249358(BgConfig *param0); -void *ov17_02249380(UnkStruct_02095C48 *param0, UnkStruct_ov17_0224A1EC *param1); +void *ov17_02249380(Contest *param0, UnkStruct_ov17_0224A1EC *param1); void ov17_022493A4(UnkStruct_ov17_022492DC *param0); void ov17_022493C4(UnkStruct_ov17_022492DC *param0); void ov17_02249640(UnkStruct_ov17_022492DC *param0, int param1, int param2, void *param3); diff --git a/include/overlay017/ov17_0224A0FC.h b/include/overlay017/ov17_0224A0FC.h index fc9e2cba77..8debc91220 100644 --- a/include/overlay017/ov17_0224A0FC.h +++ b/include/overlay017/ov17_0224A0FC.h @@ -3,6 +3,9 @@ #include +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" + #include "overlay017/struct_ov17_0224A1EC.h" #include "overlay017/struct_ov17_0224ABFC.h" #include "overlay017/struct_ov17_0224B058.h" @@ -17,9 +20,9 @@ #include "pokemon_sprite.h" #include "sprite_system.h" -s16 ov17_0224A0FC(int param0); -s16 ov17_0224A10C(int param0); -s16 ov17_0224A120(int param0); +s16 ov17_0224A0FC(int contestantID); +s16 ov17_0224A10C(int contestantID); +s16 ov17_0224A120(int contestantID); void ov17_0224A134(UnkStruct_ov17_0224DF54 *param0); void ov17_0224A1EC(UnkStruct_ov17_0224A1EC *param0); void ov17_0224A20C(SpriteSystem *param0, SpriteManager *param1); @@ -84,7 +87,7 @@ void ov17_0224C47C(UnkStruct_ov17_0224B058 *param0, int param1); void ov17_0224C49C(UnkStruct_ov17_0224C384 *param0, u32 param1, u32 param2, int param3); void ov17_0224C540(UnkStruct_ov17_0224C384 *param0); void ov17_0224C54C(UnkStruct_ov17_0224C384 *param0, int param1); -int ov17_0224C57C(int param0); +int ov17_0224C57C(enum PokemonContestRank contestRank); void ov17_0224C5A0(UnkStruct_ov17_0224DF54 *param0, u32 param1, const UnkStruct_ov17_0224C0C0 *param2); void ov17_0224C640(UnkStruct_ov17_0224DF54 *param0); s64 ov17_0224C660(UnkStruct_ov17_0224DF54 *param0, const UnkStruct_ov17_02253084 *param1, int param2); diff --git a/include/overlay017/ov17_0224E930.h b/include/overlay017/ov17_0224E930.h index 03d66754f6..16713be9e6 100644 --- a/include/overlay017/ov17_0224E930.h +++ b/include/overlay017/ov17_0224E930.h @@ -6,7 +6,7 @@ #include "overlay017/struct_ov17_0224E958.h" #include "overlay017/struct_ov17_02253084.h" -void ov17_0224E930(UnkStruct_ov17_0224E958 *param0, int param1, int param2, u32 param3, int param4); +void ov17_0224E930(UnkStruct_ov17_0224E958 *param0, int contestantID, int param2, u32 param3, int param4); void ov17_0224E958(UnkStruct_ov17_0224E958 *param0); void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *param1, u32 param2, u32 param3); void ov17_0224ED8C(int param0, UnkStruct_ov17_0224DF54 *param1, UnkStruct_ov17_0224E958 *param2, u32 param3, u32 param4, u32 param5, const UnkStruct_ov17_02253084 *param6, UnkStruct_ov17_0224D69C *param7); diff --git a/include/overlay017/ov17_0224F080.h b/include/overlay017/ov17_0224F080.h index 9e0c083688..ac72e8f259 100644 --- a/include/overlay017/ov17_0224F080.h +++ b/include/overlay017/ov17_0224F080.h @@ -11,7 +11,7 @@ u32 ov17_0224F080(int param0); u32 ov17_0224F098(void); u32 ov17_0224F09C(void); u8 ov17_0224F0A0(int param0); -enum NarcID ov17_0224F0B8(void); +enum NarcID Contest_GetContestGraphicsNarcID(); void ov17_0224F0BC(SpriteSystem *param0, SpriteManager *param1, NNS_G2D_VRAM_TYPE param2, int param3, u32 param4); void ov17_0224F0F0(SpriteSystem *param0, SpriteManager *param1, u32 param2, u32 param3); void ov17_0224F138(SpriteManager *param0, u32 param1); diff --git a/include/overlay017/ov17_0224F18C.h b/include/overlay017/ov17_0224F18C.h index 81df74e9ec..d1530d7079 100644 --- a/include/overlay017/ov17_0224F18C.h +++ b/include/overlay017/ov17_0224F18C.h @@ -12,6 +12,6 @@ int ov17_0224F30C(UnkStruct_ov17_0224F30C *param0, void *param1, int param2, voi BOOL ov17_0224F35C(UnkStruct_ov17_0224F30C *param0); BOOL ov17_0224F3D0(UnkStruct_ov17_0224F30C *param0); int ov17_0224F3D8(UnkStruct_ov17_0224F30C *param0, void *param1); -BOOL ov17_0224F4B8(UnkStruct_ov17_0224F30C *param0, int param1, int param2, int param3); +BOOL ov17_0224F4B8(UnkStruct_ov17_0224F30C *param0, int connectionCount, int playerContestantID, int param3); #endif // POKEPLATINUM_OV17_0224F18C_H diff --git a/include/overlay017/ov17_0224F4D4.h b/include/overlay017/ov17_0224F4D4.h index fa5f35b4bc..ae54e414c7 100644 --- a/include/overlay017/ov17_0224F4D4.h +++ b/include/overlay017/ov17_0224F4D4.h @@ -3,8 +3,8 @@ #include "overlay_manager.h" -int ov17_0224F4D4(ApplicationManager *appMan, int *param1); -int ov17_0224F754(ApplicationManager *appMan, int *param1); -int ov17_0224F86C(ApplicationManager *appMan, int *param1); +int ContestFinalScoring_Init(ApplicationManager *appMan, int *param1); +int ContestFinalScoring_Main(ApplicationManager *appMan, int *param1); +int ContestFinalScoring_Exit(ApplicationManager *appMan, int *param1); #endif // POKEPLATINUM_OV17_0224F4D4_H diff --git a/include/overlay017/ov17_02250744.h b/include/overlay017/ov17_02250744.h index 2ee56f30ea..f4d7107831 100644 --- a/include/overlay017/ov17_02250744.h +++ b/include/overlay017/ov17_02250744.h @@ -1,17 +1,26 @@ #ifndef POKEPLATINUM_OV17_02250744_H #define POKEPLATINUM_OV17_02250744_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_0224FCA0.h" #include "overlay017/struct_ov17_022507C4.h" #include "overlay017/struct_ov17_022508E4.h" +#include "contest.h" #include "narc.h" +enum ContestAnnouncerMessagesIDs { + CONTEST_ANNOUNCER_MESSAGE_NONE, + CONTEST_ANNOUNCER_MESSAGE_JUDGING_COMPLETED, + CONTEST_ANNOUNCER_MESSAGE_VISUAL_COMPETITION_RESULTS, + CONTEST_ANNOUNCER_MESSAGE_DANCE_COMPETITION_RESULTS, + CONTEST_ANNOUNCER_MESSAGE_ACTING_COMPETITION_RESULTS, + CONTEST_ANNOUNCER_MESSAGE_WINNER_IS, + CONTEST_ANNOUNCER_MESSAGE_INDIVIDUAL_CATEGORIES +}; + void ov17_02250744(UnkStruct_ov17_0224FCA0 *param0); void ov17_022507C4(UnkStruct_ov17_022507C4 *param0); -void ov17_02250968(UnkStruct_ov17_0224FCA0 *param0, u32 param1, const UnkStruct_ov17_022508E4 *param2); +void ov17_02250968(UnkStruct_ov17_0224FCA0 *param0, u32 announcerMessagesID, const UnkStruct_ov17_022508E4 *param2); int ov17_0225099C(UnkStruct_ov17_0224FCA0 *param0); void ov17_022509AC(UnkStruct_ov17_0224FCA0 *param0); void ov17_02250A84(UnkStruct_ov17_0224FCA0 *param0); @@ -36,8 +45,8 @@ void ov17_022513C0(UnkStruct_ov17_0224FCA0 *param0); void ov17_022513F4(UnkStruct_ov17_0224FCA0 *param0, int param1, int param2, int param3, int param4); void ov17_02251544(UnkStruct_ov17_0224FCA0 *param0); void ov17_02251598(UnkStruct_ov17_0224FCA0 *param0, int param1, u8 *param2); -void ov17_02251718(UnkStruct_ov17_0224FCA0 *param0, int param1, int param2, u8 *param3); -void ov17_02251930(UnkStruct_02095C48 *param0, int param1, s16 param2[]); +void ov17_02251718(UnkStruct_ov17_0224FCA0 *param0, int contestantID, int param2, u8 *param3); +void ov17_02251930(Contest *param0, int param1, s16 param2[]); void ov17_02251A1C(UnkStruct_ov17_0224FCA0 *param0); #endif // POKEPLATINUM_OV17_02250744_H diff --git a/include/overlay017/ov17_02252AB0.h b/include/overlay017/ov17_02252AB0.h index 25c30ae1f7..9059a20d3e 100644 --- a/include/overlay017/ov17_02252AB0.h +++ b/include/overlay017/ov17_02252AB0.h @@ -11,7 +11,7 @@ void ov17_02252B20(SpriteManager *param0, u32 param1, u32 param2, u32 param3, u3 UnkStruct_ov17_02252B48 *ov17_02252B48(SpriteSystem *param0, SpriteManager *param1, enum HeapID heapID, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8); void ov17_02252BCC(UnkStruct_ov17_02252B48 *param0); void ov17_02252BF0(UnkStruct_ov17_02252B48 *param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, fx32 param9); -void ov17_02252C78(UnkStruct_ov17_02252B48 *param0, int param1, int param2, int param3, int param4, fx32 param5); +void ov17_02252C78(UnkStruct_ov17_02252B48 *param0, int touchScreenRectLeft, int touchScreenRectRight, int touchScreenRectTop, int touchScreenRectBottom, fx32 param5); void ov17_02252C9C(UnkStruct_ov17_02252B48 *param0); #endif // POKEPLATINUM_OV17_02252AB0_H diff --git a/include/overlay017/struct_ov17_0223BE58.h b/include/overlay017/struct_ov17_0223BE58.h index 6a26464152..7f618d530a 100644 --- a/include/overlay017/struct_ov17_0223BE58.h +++ b/include/overlay017/struct_ov17_0223BE58.h @@ -1,9 +1,11 @@ #ifndef POKEPLATINUM_STRUCT_OV17_0223BE58_H #define POKEPLATINUM_STRUCT_OV17_0223BE58_H +#include "constants/contests.h" + typedef struct { - u16 unk_00[4]; - u8 unk_08[4]; + u16 moveIDs[CONTEST_NUM_PARTICIPANTS]; + u8 unk_08[CONTEST_NUM_PARTICIPANTS]; } UnkStruct_ov17_0223BE58; #endif // POKEPLATINUM_STRUCT_OV17_0223BE58_H diff --git a/include/overlay017/struct_ov17_0223F88C.h b/include/overlay017/struct_ov17_0223F88C.h index 6c443a7e4c..55f9d40e86 100644 --- a/include/overlay017/struct_ov17_0223F88C.h +++ b/include/overlay017/struct_ov17_0223F88C.h @@ -19,21 +19,21 @@ typedef struct { UnkStruct_02095C48_sub1 *unk_00; PokemonSpriteManager *unk_04; - PokemonSprite *unk_08[4]; + PokemonSprite *unk_08[CONTEST_NUM_PARTICIPANTS]; SpriteSystem *unk_18; SpriteManager *unk_1C; BattleAnimSystem *unk_20; BgConfig *unk_24; Window unk_28[1]; - MessageLoader *unk_38; - MessageLoader *unk_3C; - MessageLoader *unk_40; - MessageLoader *unk_44; + MessageLoader *contestTextMessageLoader; + MessageLoader *contestOpponentNames; + MessageLoader *contestEffectMessages; + MessageLoader *contestActingCompetitionMessages; StringTemplate *unk_48; String *unk_4C; PaletteData *unk_50; UnkStruct_02012744 *unk_54; - PokemonSpriteData pokemonSpriteDataArray[4]; + PokemonSpriteData pokemonSpriteDataArray[CONTEST_NUM_PARTICIPANTS]; PokemonSpriteData pokemonSpriteData; ManagedSprite *unk_A8[3]; ManagedSprite *unk_B4[3]; @@ -43,8 +43,8 @@ typedef struct { ManagedSprite *unk_160[4]; ManagedSprite *unk_170[3]; ManagedSprite *unk_17C; - UnkStruct_ov17_0223F2E4 unk_180[4]; - UnkStruct_ov17_0223F2E4 unk_1C8[4]; + UnkStruct_ov17_0223F2E4 unk_180[CONTEST_NUM_PARTICIPANTS]; + UnkStruct_ov17_0223F2E4 unk_1C8[CONTEST_NUM_PARTICIPANTS]; u8 unk_210; } UnkStruct_ov17_0223F88C; diff --git a/include/overlay017/struct_ov17_022439C8.h b/include/overlay017/struct_ov17_022439C8.h index 09b1325b25..76714ae4f4 100644 --- a/include/overlay017/struct_ov17_022439C8.h +++ b/include/overlay017/struct_ov17_022439C8.h @@ -3,10 +3,10 @@ typedef struct { u32 unk_00; - u16 unk_04; + u16 actingAnimationMoveID; u8 unk_06; u8 unk_07; - u8 unk_08; + u8 friendship; } UnkStruct_ov17_022439C8; #endif // POKEPLATINUM_STRUCT_OV17_022439C8_H diff --git a/include/overlay017/struct_ov17_02243C28.h b/include/overlay017/struct_ov17_02243C28.h index 1cc1a38d7f..d091d0818d 100644 --- a/include/overlay017/struct_ov17_02243C28.h +++ b/include/overlay017/struct_ov17_02243C28.h @@ -6,8 +6,8 @@ typedef struct { const struct UnkStruct_ov17_022539E4_t *unk_00; u16 unk_04; - u8 unk_06; - u8 unk_07; + u8 playerContestantID; + u8 isLinkContest; u8 unk_08; } UnkStruct_ov17_02243C28; diff --git a/include/overlay017/struct_ov17_02243DCC.h b/include/overlay017/struct_ov17_02243DCC.h index 031e78d337..d7feaba6bd 100644 --- a/include/overlay017/struct_ov17_02243DCC.h +++ b/include/overlay017/struct_ov17_02243DCC.h @@ -12,7 +12,7 @@ typedef struct { u16 unk_0E; u8 unk_10; UnkStruct_ov17_022449B8 unk_12; - u8 unk_18; + u8 actingMessagesID; } UnkStruct_ov17_02243DCC; #endif // POKEPLATINUM_STRUCT_OV17_02243DCC_H diff --git a/include/overlay017/struct_ov17_02243F10.h b/include/overlay017/struct_ov17_02243F10.h index 8933707d4f..c83d6b596e 100644 --- a/include/overlay017/struct_ov17_02243F10.h +++ b/include/overlay017/struct_ov17_02243F10.h @@ -10,7 +10,7 @@ typedef struct { s32 unk_0C; s32 unk_10; u8 unk_14; - u8 unk_15; + u8 contestantID; u8 unk_16; s16 unk_18; } UnkStruct_ov17_02243F10; diff --git a/include/overlay017/struct_ov17_02244240.h b/include/overlay017/struct_ov17_02244240.h index 2ad3aeadb6..f12f7dcaf3 100644 --- a/include/overlay017/struct_ov17_02244240.h +++ b/include/overlay017/struct_ov17_02244240.h @@ -9,14 +9,14 @@ typedef struct { UnkStruct_ov17_02246F24 *unk_00; UnkStruct_ov17_02243C80 unk_04; u8 unk_0C; - u8 unk_0D; + u8 contestantID; u8 unk_0E; u8 unk_0F; u8 unk_10; u8 unk_11; u8 unk_12; UnkStruct_ov17_022449B8 unk_14; - u8 unk_1A; + u8 actingMessagesID; } UnkStruct_ov17_02244240; #endif // POKEPLATINUM_STRUCT_OV17_02244240_H diff --git a/include/overlay017/struct_ov17_022443F8.h b/include/overlay017/struct_ov17_022443F8.h index f738589ec0..e3266134ce 100644 --- a/include/overlay017/struct_ov17_022443F8.h +++ b/include/overlay017/struct_ov17_022443F8.h @@ -10,15 +10,15 @@ typedef struct { UnkStruct_ov17_02246F24 *unk_00; UnkStruct_ov17_02243C80 unk_04; - u8 unk_0C; - u8 unk_0D; - u16 unk_0E; + u8 state; + u8 contestantID; + u16 moveID; u8 unk_10; UnkStruct_ov17_02246F24_sub1 unk_14; UnkStruct_ov17_022449B8 unk_F2; - u8 unk_F8; + u8 actingMessagesID; UnkStruct_ov17_022449B8 unk_FA; - u8 unk_100; + u8 actingMessagesID2; UnkStruct_ov17_022439C8 unk_104; } UnkStruct_ov17_022443F8; diff --git a/include/overlay017/struct_ov17_022444BC.h b/include/overlay017/struct_ov17_022444BC.h index 9177f38263..d2eb6b9f4b 100644 --- a/include/overlay017/struct_ov17_022444BC.h +++ b/include/overlay017/struct_ov17_022444BC.h @@ -4,8 +4,8 @@ #include "overlay017/struct_ov17_022449B8.h" typedef struct { - u16 unk_00; - u8 unk_02; + u16 moveID; + u8 contestMoveEffect; u8 unk_03; u8 unk_04; s16 unk_06; diff --git a/include/overlay017/struct_ov17_022449B8.h b/include/overlay017/struct_ov17_022449B8.h index 3396a2f9ee..853349b9eb 100644 --- a/include/overlay017/struct_ov17_022449B8.h +++ b/include/overlay017/struct_ov17_022449B8.h @@ -4,9 +4,9 @@ typedef struct { u8 unk_00; u8 unk_01; - u16 unk_02; + u16 moveID; u8 unk_04; - u8 unk_05; + u8 judgeID; } UnkStruct_ov17_022449B8; #endif // POKEPLATINUM_STRUCT_OV17_022449B8_H diff --git a/include/overlay017/struct_ov17_02244C08.h b/include/overlay017/struct_ov17_02244C08.h index 45bf8ec7bf..10fbec7f40 100644 --- a/include/overlay017/struct_ov17_02244C08.h +++ b/include/overlay017/struct_ov17_02244C08.h @@ -10,7 +10,7 @@ typedef struct { UnkStruct_ov17_02246F24 *unk_00; UnkStruct_ov17_02243C80 unk_04; u8 unk_0C; - u8 unk_0D; + u8 contestantID; u8 unk_0E; s8 unk_0F; s8 unk_10; diff --git a/include/overlay017/struct_ov17_02245E14.h b/include/overlay017/struct_ov17_02245E14.h index 358128d1c9..ee411dd2dd 100644 --- a/include/overlay017/struct_ov17_02245E14.h +++ b/include/overlay017/struct_ov17_02245E14.h @@ -11,10 +11,10 @@ typedef struct { UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; u8 unk_10; - u8 unk_11; + u8 contestantID; u8 unk_12; UnkStruct_ov17_022449B8 unk_14; - u8 unk_1A; + u8 actingMessagesID; u8 unk_1B; u8 unk_1C; } UnkStruct_ov17_02245E14; diff --git a/include/overlay017/struct_ov17_022463C4.h b/include/overlay017/struct_ov17_022463C4.h index 97164e3621..c89486ad26 100644 --- a/include/overlay017/struct_ov17_022463C4.h +++ b/include/overlay017/struct_ov17_022463C4.h @@ -6,8 +6,8 @@ typedef struct { UnkStruct_ov17_022449B8 unk_00; UnkStruct_ov17_022449B8 unk_06; - u8 unk_0C; - u8 unk_0D; + u8 actingMessagesID; + u8 actingMessagesID2; u8 unk_0E; u8 unk_0F; } UnkStruct_ov17_022463C4; diff --git a/include/overlay017/struct_ov17_02246540_sub1.h b/include/overlay017/struct_ov17_02246540_sub1.h index a03670d261..e48bbfc85e 100644 --- a/include/overlay017/struct_ov17_02246540_sub1.h +++ b/include/overlay017/struct_ov17_02246540_sub1.h @@ -2,8 +2,8 @@ #define POKEPLATINUM_STRUCT_OV17_02246540_SUB1_H typedef struct { - u32 unk_00_0 : 16; - u32 unk_00_16 : 8; + u32 moveID : 16; + u32 contestMoveEffect : 8; u32 : 8; } UnkStruct_ov17_02246540_sub1; diff --git a/include/overlay017/struct_ov17_02246F24.h b/include/overlay017/struct_ov17_02246F24.h index f4260eaf4e..7a8b1596b6 100644 --- a/include/overlay017/struct_ov17_02246F24.h +++ b/include/overlay017/struct_ov17_02246F24.h @@ -1,8 +1,6 @@ #ifndef POKEPLATINUM_STRUCT_OV17_02246F24_H #define POKEPLATINUM_STRUCT_OV17_02246F24_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_0223BCE8.h" #include "overlay017/struct_ov17_0223F88C.h" #include "overlay017/struct_ov17_02246F24_sub1.h" @@ -10,11 +8,12 @@ #include "overlay017/struct_ov17_022472F8.h" #include "overlay017/struct_ov17_0224F30C.h" +#include "contest.h" #include "g3d_pipeline.h" #include "sys_task_manager.h" typedef struct { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; SysTask *unk_04; G3DPipelineBuffers *unk_08; UnkStruct_ov17_0223F88C unk_0C; diff --git a/include/overlay017/struct_ov17_02246F24_sub1.h b/include/overlay017/struct_ov17_02246F24_sub1.h index 06f7308098..1dbcac9112 100644 --- a/include/overlay017/struct_ov17_02246F24_sub1.h +++ b/include/overlay017/struct_ov17_02246F24_sub1.h @@ -6,16 +6,14 @@ #include "overlay017/struct_ov17_02246540.h" typedef struct { - u8 unk_00; + u8 contestantID; u8 unk_01; u8 unk_02; u8 unk_03; u8 unk_04[3][4]; UnkStruct_ov17_02246540 unk_10; UnkStruct_ov17_022463C4 unk_C6; - union { - UnkStruct_ov17_0224290C unk_D6_val1; - }; + UnkStruct_ov17_0224290C unk_D6_val1; } UnkStruct_ov17_02246F24_sub1; #endif // POKEPLATINUM_STRUCT_OV17_02246F24_SUB1_H diff --git a/include/overlay017/struct_ov17_022472F8.h b/include/overlay017/struct_ov17_022472F8.h index 5896cc3720..d2270dd606 100644 --- a/include/overlay017/struct_ov17_022472F8.h +++ b/include/overlay017/struct_ov17_022472F8.h @@ -1,15 +1,17 @@ #ifndef POKEPLATINUM_STRUCT_OV17_022472F8_H #define POKEPLATINUM_STRUCT_OV17_022472F8_H +#include "constants/contests.h" + #include "overlay017/struct_ov17_02246540.h" typedef struct { u8 unk_00; u8 unk_01[4]; u8 unk_05; - u16 unk_06[4]; - u8 unk_0E[4]; - s16 unk_12[4]; + u16 moveIDs[CONTEST_NUM_PARTICIPANTS]; + u8 unk_0E[CONTEST_NUM_PARTICIPANTS]; + s16 unk_12[CONTEST_NUM_PARTICIPANTS]; s16 unk_1A[4]; s8 unk_22[3]; u16 unk_26[4]; diff --git a/include/overlay017/struct_ov17_022476F8.h b/include/overlay017/struct_ov17_022476F8.h index ad27be2e22..e0a2993bc4 100644 --- a/include/overlay017/struct_ov17_022476F8.h +++ b/include/overlay017/struct_ov17_022476F8.h @@ -23,7 +23,7 @@ typedef struct { SpriteManager *unk_20; BgConfig *unk_24; Window unk_28[1]; - MessageLoader *unk_38; + MessageLoader *visualCompetitionMessages; StringTemplate *unk_3C; String *unk_40; PaletteData *unk_44; diff --git a/include/overlay017/struct_ov17_0224792C.h b/include/overlay017/struct_ov17_0224792C.h index abc0e0cb82..e9db8607d2 100644 --- a/include/overlay017/struct_ov17_0224792C.h +++ b/include/overlay017/struct_ov17_0224792C.h @@ -2,7 +2,7 @@ #define POKEPLATINUM_STRUCT_OV17_0224792C_H typedef struct { - u8 unk_00; + u8 contestantID; u8 unk_01; u8 unk_02; u8 unk_03; diff --git a/include/overlay017/struct_ov17_02247A48.h b/include/overlay017/struct_ov17_02247A48.h index 4227a509bd..8582da5998 100644 --- a/include/overlay017/struct_ov17_02247A48.h +++ b/include/overlay017/struct_ov17_02247A48.h @@ -1,7 +1,7 @@ #ifndef POKEPLATINUM_STRUCT_OV17_02247A48_H #define POKEPLATINUM_STRUCT_OV17_02247A48_H -#include "struct_defs/struct_02095C48.h" +#include "constants/contests.h" #include "overlay017/struct_ov17_0223D60C.h" #include "overlay017/struct_ov17_022476F8.h" @@ -11,11 +11,12 @@ #include "overlay017/struct_ov17_0224B09C.h" #include "overlay017/struct_ov17_0224F30C.h" +#include "contest.h" #include "g3d_pipeline.h" #include "sys_task_manager.h" typedef struct { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; SysTask *unk_04; G3DPipelineBuffers *unk_08; UnkStruct_ov17_022476F8 unk_0C; @@ -29,7 +30,7 @@ typedef struct { UnkStruct_ov17_0224F30C unk_4F8; UnkStruct_ov17_0223D60C unk_F0C; u8 unk_F14; - UnkStruct_ov17_0224B09C unk_F18[4]; + UnkStruct_ov17_0224B09C unk_F18[CONTEST_NUM_PARTICIPANTS]; u8 unk_F58; u8 unk_F59; u8 unk_F5A; diff --git a/include/overlay017/struct_ov17_022482B0.h b/include/overlay017/struct_ov17_022482B0.h index 64fd091e52..6fec8613f1 100644 --- a/include/overlay017/struct_ov17_022482B0.h +++ b/include/overlay017/struct_ov17_022482B0.h @@ -9,7 +9,7 @@ typedef struct { UnkStruct_ov17_02247A48 *unk_00; UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; - u8 unk_10; + u8 state; s8 unk_11; u8 unk_12; s8 unk_13; diff --git a/include/overlay017/struct_ov17_02248464.h b/include/overlay017/struct_ov17_02248464.h index 23aac3b9a9..e96924d908 100644 --- a/include/overlay017/struct_ov17_02248464.h +++ b/include/overlay017/struct_ov17_02248464.h @@ -9,7 +9,7 @@ typedef struct { UnkStruct_ov17_02247A48 *unk_00; UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; - u8 unk_10; + u8 state; s8 unk_11; u8 unk_12; s8 unk_13; diff --git a/include/overlay017/struct_ov17_02248744.h b/include/overlay017/struct_ov17_02248744.h index 2dd0ed3878..d03f8d1333 100644 --- a/include/overlay017/struct_ov17_02248744.h +++ b/include/overlay017/struct_ov17_02248744.h @@ -9,7 +9,7 @@ typedef struct { UnkStruct_ov17_02247A48 *unk_00; UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; - u8 unk_10; + u8 state; u8 unk_11; s32 unk_14; s32 unk_18; diff --git a/include/overlay017/struct_ov17_02248860.h b/include/overlay017/struct_ov17_02248860.h index e101336458..680b9228c0 100644 --- a/include/overlay017/struct_ov17_02248860.h +++ b/include/overlay017/struct_ov17_02248860.h @@ -13,7 +13,7 @@ typedef struct { UnkStruct_ov17_02247A48 *unk_00; UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; - u8 unk_10; + u8 state; u8 unk_11; UnkStruct_ov17_022489C8 unk_14; UnkStruct_ov17_02248A24 unk_2C; diff --git a/include/overlay017/struct_ov17_022489C8.h b/include/overlay017/struct_ov17_022489C8.h index aefe79b69f..c7dac23cff 100644 --- a/include/overlay017/struct_ov17_022489C8.h +++ b/include/overlay017/struct_ov17_022489C8.h @@ -9,8 +9,8 @@ typedef struct { UnkStruct_ov12_02236030 unk_00; UnkStruct_ov12_02235FE0 *unk_0C; - Pokemon *unk_10; - u8 unk_14; + Pokemon *mon; + u8 state; u8 unk_15; } UnkStruct_ov17_022489C8; diff --git a/include/overlay017/struct_ov17_02248A24.h b/include/overlay017/struct_ov17_02248A24.h index 2c16467cc7..d40a15d858 100644 --- a/include/overlay017/struct_ov17_02248A24.h +++ b/include/overlay017/struct_ov17_02248A24.h @@ -6,7 +6,7 @@ typedef struct { UnkStruct_ov17_02247A48 *unk_00; - BallRotation *unk_04; + BallRotation *ballRotation; u8 unk_08; u8 unk_09; u8 unk_0A; diff --git a/include/overlay017/struct_ov17_02248AA4.h b/include/overlay017/struct_ov17_02248AA4.h index 4a81555c2a..51129565c6 100644 --- a/include/overlay017/struct_ov17_02248AA4.h +++ b/include/overlay017/struct_ov17_02248AA4.h @@ -9,7 +9,7 @@ typedef struct { fx32 unk_08; u8 unk_0C; u8 unk_0D; - u8 unk_0E; + u8 contestantID; } UnkStruct_ov17_02248AA4; #endif // POKEPLATINUM_STRUCT_OV17_02248AA4_H diff --git a/include/overlay017/struct_ov17_0224A1EC.h b/include/overlay017/struct_ov17_0224A1EC.h index ca3c88c074..77df82682d 100644 --- a/include/overlay017/struct_ov17_0224A1EC.h +++ b/include/overlay017/struct_ov17_0224A1EC.h @@ -34,9 +34,9 @@ typedef struct { SpriteManager *unk_5C; BgConfig *unk_60; Window unk_64[2]; - MessageLoader *unk_84; + MessageLoader *danceMessageLoader; StringTemplate *unk_88; - String *unk_8C; + String *danceMessage; PaletteData *unk_90; UnkStruct_02012744 *unk_94; PokemonSpriteData pokemonSpriteDataArray[4]; @@ -45,7 +45,7 @@ typedef struct { SysTask *unk_1EC; UnkStruct_ov17_0224C9A4 unk_1F0; UnkStruct_ov17_0224C384 *unk_1FC; - UnkStruct_ov17_0224ABFC unk_200[4]; + UnkStruct_ov17_0224ABFC unk_200[CONTEST_NUM_PARTICIPANTS]; UnkStruct_ov17_0224A1EC_sub1 unk_254[4]; UnkStruct_ov17_0224AE84 unk_290[4][16]; UnkStruct_ov17_0224B058 unk_910; diff --git a/include/overlay017/struct_ov17_0224C0C0.h b/include/overlay017/struct_ov17_0224C0C0.h index 954fe3e96a..71fd356f47 100644 --- a/include/overlay017/struct_ov17_0224C0C0.h +++ b/include/overlay017/struct_ov17_0224C0C0.h @@ -2,7 +2,7 @@ #define POKEPLATINUM_STRUCT_OV17_0224C0C0_H typedef struct { - u8 unk_00; + u8 contestantID; u8 unk_01; u16 unk_02; u8 unk_04; diff --git a/include/overlay017/struct_ov17_0224D710.h b/include/overlay017/struct_ov17_0224D710.h index 36a3bb09fc..e060fbc525 100644 --- a/include/overlay017/struct_ov17_0224D710.h +++ b/include/overlay017/struct_ov17_0224D710.h @@ -21,7 +21,7 @@ typedef struct { u8 unk_17; UnkStruct_ov17_0224DF54_sub2 unk_18; UnkStruct_ov17_0224DC1C unk_50; - UnkStruct_ov17_0224E958 unk_58[4]; + UnkStruct_ov17_0224E958 unk_58[CONTEST_NUM_PARTICIPANTS]; UnkStruct_ov17_0224D69C *unk_140[4]; } UnkStruct_ov17_0224D710; diff --git a/include/overlay017/struct_ov17_0224DF54.h b/include/overlay017/struct_ov17_0224DF54.h index c3c7ba034e..70e633f7b1 100644 --- a/include/overlay017/struct_ov17_0224DF54.h +++ b/include/overlay017/struct_ov17_0224DF54.h @@ -1,8 +1,6 @@ #ifndef POKEPLATINUM_STRUCT_OV17_0224DF54_H #define POKEPLATINUM_STRUCT_OV17_0224DF54_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_0223E838.h" #include "overlay017/struct_ov17_0224A1EC.h" #include "overlay017/struct_ov17_0224B5C8.h" @@ -15,12 +13,13 @@ #include "overlay017/struct_ov17_0224EDE0.h" #include "overlay017/struct_ov17_0224F30C.h" +#include "contest.h" #include "g3d_pipeline.h" #include "particle_system.h" #include "sys_task_manager.h" typedef struct UnkStruct_ov17_0224DF54_t { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; SysTask *unk_04; SysTask *unk_08; ParticleSystem *unk_0C; diff --git a/include/overlay017/struct_ov17_0224DF54_sub1.h b/include/overlay017/struct_ov17_0224DF54_sub1.h index c2e1a020a1..4ffdfa91d6 100644 --- a/include/overlay017/struct_ov17_0224DF54_sub1.h +++ b/include/overlay017/struct_ov17_0224DF54_sub1.h @@ -2,9 +2,9 @@ #define POKEPLATINUM_STRUCT_OV17_0224DF54_SUB1_H typedef struct { - u8 unk_00[4]; + u8 unk_00[CONTEST_NUM_PARTICIPANTS]; u8 unk_04; - u8 unk_05[4]; + u8 unk_05[CONTEST_NUM_PARTICIPANTS]; s16 unk_0A[4]; u32 unk_14; u32 unk_18; diff --git a/include/overlay017/struct_ov17_0224DF54_sub2.h b/include/overlay017/struct_ov17_0224DF54_sub2.h index 18a2b13428..471f64105a 100644 --- a/include/overlay017/struct_ov17_0224DF54_sub2.h +++ b/include/overlay017/struct_ov17_0224DF54_sub2.h @@ -7,11 +7,11 @@ typedef struct { u8 unk_00; u8 unk_01; - u8 unk_02[4]; + u8 unk_02[CONTEST_NUM_PARTICIPANTS]; u32 unk_08; u32 unk_0C; u16 unk_10; - u32 unk_14[4]; + u32 unk_14[CONTEST_NUM_PARTICIPANTS]; UnkStruct_ov17_02253084 unk_24; UnkStruct_ov17_0224C0C0 unk_30; u8 unk_36; diff --git a/include/overlay017/struct_ov17_0224E1F4.h b/include/overlay017/struct_ov17_0224E1F4.h index 5dde590a30..8ddc93e16c 100644 --- a/include/overlay017/struct_ov17_0224E1F4.h +++ b/include/overlay017/struct_ov17_0224E1F4.h @@ -7,10 +7,10 @@ #include "pokemon_sprite.h" typedef struct { - Pokemon *unk_00; + Pokemon *mon; PokemonSprite *unk_04; UnkStruct_ov17_0224B09C *unk_08; - u8 unk_0C; + u8 contestantID; u8 unk_0D; u16 unk_0E; s32 unk_10; diff --git a/include/overlay017/struct_ov17_0224F3D8.h b/include/overlay017/struct_ov17_0224F3D8.h index c102eac060..e601b8958f 100644 --- a/include/overlay017/struct_ov17_0224F3D8.h +++ b/include/overlay017/struct_ov17_0224F3D8.h @@ -1,8 +1,10 @@ #ifndef POKEPLATINUM_STRUCT_OV17_0224F3D8_H #define POKEPLATINUM_STRUCT_OV17_0224F3D8_H +#include "constants/contests.h" + typedef struct { - void *unk_00[4]; + void *unk_00[CONTEST_NUM_PARTICIPANTS]; } UnkStruct_ov17_0224F3D8; #endif // POKEPLATINUM_STRUCT_OV17_0224F3D8_H diff --git a/include/overlay017/struct_ov17_0224FCA0.h b/include/overlay017/struct_ov17_0224FCA0.h index 2a89b03bba..7bf87c5837 100644 --- a/include/overlay017/struct_ov17_0224FCA0.h +++ b/include/overlay017/struct_ov17_0224FCA0.h @@ -1,8 +1,6 @@ #ifndef POKEPLATINUM_STRUCT_OV17_0224FCA0_H #define POKEPLATINUM_STRUCT_OV17_0224FCA0_H -#include "struct_defs/struct_02095C48.h" - #include "overlay017/struct_ov17_0224F30C.h" #include "overlay017/struct_ov17_0224FCA0_sub1.h" #include "overlay017/struct_ov17_0224FCA0_sub2.h" @@ -10,11 +8,12 @@ #include "overlay017/struct_ov17_0224FECC.h" #include "overlay017/struct_ov17_022507C4.h" +#include "contest.h" #include "g3d_pipeline.h" #include "sys_task_manager.h" typedef struct { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; SysTask *unk_04; SysTask *unk_08; G3DPipelineBuffers *unk_0C; diff --git a/include/overlay017/struct_ov17_0224FCA0_sub1.h b/include/overlay017/struct_ov17_0224FCA0_sub1.h index 721367ad3f..feafd379a4 100644 --- a/include/overlay017/struct_ov17_0224FCA0_sub1.h +++ b/include/overlay017/struct_ov17_0224FCA0_sub1.h @@ -1,11 +1,13 @@ #ifndef POKEPLATINUM_STRUCT_OV17_0224FCA0_SUB1_H #define POKEPLATINUM_STRUCT_OV17_0224FCA0_SUB1_H +#include "constants/contests.h" + #include "struct_defs/struct_02095C48_sub1_sub1.h" typedef struct { - UnkStruct_02095C48_sub1_sub1 unk_00[4]; - u8 unk_30[4]; + UnkStruct_02095C48_sub1_sub1 unk_00[CONTEST_NUM_PARTICIPANTS]; + u8 unk_30[CONTEST_NUM_PARTICIPANTS]; u8 unk_34; u8 unk_35[4]; s16 unk_3A[4]; diff --git a/include/overlay017/struct_ov17_0224FCA0_sub2.h b/include/overlay017/struct_ov17_0224FCA0_sub2.h index 37c7bf6945..9d13834543 100644 --- a/include/overlay017/struct_ov17_0224FCA0_sub2.h +++ b/include/overlay017/struct_ov17_0224FCA0_sub2.h @@ -6,11 +6,11 @@ typedef struct { u8 unk_00; u8 unk_01; - u8 unk_02; + u8 winningContestantID; u8 unk_03[4]; u8 unk_07; UnkStruct_ov17_022508E4 unk_08; - u8 unk_0E; + u8 announcerMessagesID; u8 unk_0F; u8 unk_10; u8 unk_11; diff --git a/include/overlay017/struct_ov17_022507C4.h b/include/overlay017/struct_ov17_022507C4.h index 7bd095364c..b161156a81 100644 --- a/include/overlay017/struct_ov17_022507C4.h +++ b/include/overlay017/struct_ov17_022507C4.h @@ -19,20 +19,20 @@ typedef struct { UnkStruct_02095C48_sub1 *unk_00; PokemonSpriteManager *unk_04; - PokemonSprite *unk_08[4]; + PokemonSprite *unk_08[CONTEST_NUM_PARTICIPANTS]; SpriteSystem *unk_18; SpriteManager *unk_1C; BgConfig *unk_20; Window unk_24[9]; - MessageLoader *unk_B4; - StringTemplate *unk_B8; + MessageLoader *contestResultsMessages; + StringTemplate *contestResultsTemplate; String *unk_BC; PaletteData *unk_C0; UnkStruct_02012744 *unk_C4; PokemonSpriteData pokemonSpriteDataArray[4]; UnkStruct_ov17_0223F6E8 unk_108; SysTask *unk_124; - ManagedSprite *unk_128[4]; + ManagedSprite *unk_128[CONTEST_NUM_PARTICIPANTS]; ManagedSprite *unk_138[4]; ManagedSprite *unk_148[4][12]; ManagedSprite *unk_208[4][12]; diff --git a/include/overlay017/struct_ov17_022508E4.h b/include/overlay017/struct_ov17_022508E4.h index e84792aae6..8a1de7f9d8 100644 --- a/include/overlay017/struct_ov17_022508E4.h +++ b/include/overlay017/struct_ov17_022508E4.h @@ -2,10 +2,10 @@ #define POKEPLATINUM_STRUCT_OV17_022508E4_H typedef struct { - u8 unk_00; + u8 contestantID; u8 unk_01; u16 unk_02; - u8 unk_04; + u8 contestantEntryNum; u8 unk_05; } UnkStruct_ov17_022508E4; diff --git a/include/overlay017/struct_ov17_0225228C.h b/include/overlay017/struct_ov17_0225228C.h index 471ab94aad..ccbe8d9425 100644 --- a/include/overlay017/struct_ov17_0225228C.h +++ b/include/overlay017/struct_ov17_0225228C.h @@ -14,7 +14,7 @@ typedef struct { u8 unk_11; u8 unk_12; UnkStruct_ov17_022508E4 unk_14; - u8 unk_1A; + u8 announcerMessagesID; u8 unk_1B; u8 unk_1C; u8 unk_1D; diff --git a/include/overlay017/struct_ov17_0225266C.h b/include/overlay017/struct_ov17_0225266C.h index 4012f550f6..a8222f0cab 100644 --- a/include/overlay017/struct_ov17_0225266C.h +++ b/include/overlay017/struct_ov17_0225266C.h @@ -10,7 +10,7 @@ typedef struct { UnkStruct_ov17_02243C80 unk_04; UnkStruct_ov17_0224F30C *unk_0C; u8 unk_10; - u8 unk_11; + u8 winningContestantID; u8 unk_12; u8 unk_13; s16 unk_14; diff --git a/include/overlay017/struct_ov17_022538F0.h b/include/overlay017/struct_ov17_022538F0.h deleted file mode 100644 index 6d9bce3944..0000000000 --- a/include/overlay017/struct_ov17_022538F0.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV17_022538F0_H -#define POKEPLATINUM_STRUCT_OV17_022538F0_H - -typedef struct { - u16 unk_00; - u8 unk_02; - u8 unk_03; -} UnkStruct_ov17_022538F0; - -#endif // POKEPLATINUM_STRUCT_OV17_022538F0_H diff --git a/include/overlay017/struct_ov17_0225442C.h b/include/overlay017/struct_ov17_0225442C.h deleted file mode 100644 index efa1401bd8..0000000000 --- a/include/overlay017/struct_ov17_0225442C.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV17_0225442C_H -#define POKEPLATINUM_STRUCT_OV17_0225442C_H - -typedef struct { - u16 unk_00; - u8 unk_02; -} UnkStruct_ov17_0225442C; - -#endif // POKEPLATINUM_STRUCT_OV17_0225442C_H diff --git a/include/overlay017/struct_ov17_0225470C.h b/include/overlay017/struct_ov17_0225470C.h index cca4565de1..50cf0d4b21 100644 --- a/include/overlay017/struct_ov17_0225470C.h +++ b/include/overlay017/struct_ov17_0225470C.h @@ -2,7 +2,7 @@ #define POKEPLATINUM_STRUCT_OV17_0225470C_H typedef struct { - u16 unk_00; + u16 danceMessageID; u8 unk_02; } UnkStruct_ov17_0225470C; diff --git a/include/overlay017/struct_ov17_02254C0C.h b/include/overlay017/struct_ov17_02254C0C.h deleted file mode 100644 index 2f1a0de5eb..0000000000 --- a/include/overlay017/struct_ov17_02254C0C.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV17_02254C0C_H -#define POKEPLATINUM_STRUCT_OV17_02254C0C_H - -typedef struct { - u16 unk_00; - u8 unk_02; -} UnkStruct_ov17_02254C0C; - -#endif // POKEPLATINUM_STRUCT_OV17_02254C0C_H diff --git a/include/overlay022/ov22_02255D44.h b/include/overlay022/ov22_02255D44.h index 479eef5dbf..e3343b20a9 100644 --- a/include/overlay022/ov22_02255D44.h +++ b/include/overlay022/ov22_02255D44.h @@ -6,9 +6,9 @@ int ov22_02255D44(ApplicationManager *appMan, int *param1); int ov22_02255E50(ApplicationManager *appMan, int *param1); int ov22_02256098(ApplicationManager *appMan, int *param1); -int ov22_02256174(ApplicationManager *appMan, int *param1); -int ov22_022562EC(ApplicationManager *appMan, int *param1); -int ov22_02256600(ApplicationManager *appMan, int *param1); +int VisualCompetition_Init(ApplicationManager *appMan, int *param1); +int VisualCompetition_Main(ApplicationManager *appMan, int *param1); +int VisualCompetition_Exit(ApplicationManager *appMan, int *param1); void ov22_022577EC(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, int *param5, int *param6); #endif // POKEPLATINUM_OV22_02255D44_H diff --git a/include/scrcmd_contests.h b/include/scrcmd_contests.h new file mode 100644 index 0000000000..6c2fb8ba98 --- /dev/null +++ b/include/scrcmd_contests.h @@ -0,0 +1,40 @@ +#ifndef POKEPLATINUM_UNK_02046C7C_H +#define POKEPLATINUM_UNK_02046C7C_H + +#include "field_script_context.h" + +BOOL ScrCmd_StartContestCommSync(ScriptContext *ctx); +BOOL ScrCmd_WaitForCommSyncState(ScriptContext *ctx); +BOOL ScrCmd_NewContest(ScriptContext *ctx); +BOOL ScrCmd_EndContest(ScriptContext *ctx); +BOOL ScrCmd_BufferJudgeName(ScriptContext *ctx); +BOOL ScrCmd_BufferContestantTrainerName(ScriptContext *ctx); +BOOL ScrCmd_BufferContestantMonName(ScriptContext *ctx); +BOOL ScrCmd_BufferContestRegistrationEntryNumber(ScriptContext *ctx); +BOOL ScrCmd_WaitForLinkContestSetup(ScriptContext *ctx); +BOOL ScrCmd_RunContestApplication(ScriptContext *ctx); +BOOL ScrCmd_BufferContestRank(ScriptContext *ctx); +BOOL ScrCmd_BufferContestType(ScriptContext *ctx); +BOOL ScrCmd_BufferWinningContestantTrainerName(ScriptContext *ctx); +BOOL ScrCmd_SetTrue(ScriptContext *ctx); +BOOL ScrCmd_BufferWinningContestantMonName(ScriptContext *ctx); +BOOL ScrCmd_GetPlayerContestPlacement(ScriptContext *ctx); +BOOL ScrCmd_GetWinningContestantEntryNum(ScriptContext *ctx); +BOOL ScrCmd_GetContestRegistrationEntryNum(ScriptContext *ctx); +BOOL ScrCmd_GetContestantObjEventGFX(ScriptContext *ctx); +BOOL ScrCmd_GetContestantMonContestFame(ScriptContext *ctx); +BOOL ScrCmd_GetContestMode(ScriptContext *ctx); +BOOL ScrCmd_GetContestInfo(ScriptContext *ctx); +BOOL ScrCmd_CheckPlayerMonHasRibbon(ScriptContext *ctx); +BOOL ScrCmd_SetRibbonName(ScriptContext *ctx); +BOOL ScrCmd_GetFirstTimeVictoryAccessory(ScriptContext *ctx); +BOOL ScrCmd_LockAutoScrollForLinkContests(ScriptContext *ctx); +BOOL ScrCmd_LockTextSpeed(ScriptContext *ctx); +BOOL ScrCmd_StartContestCameraFlashTask(ScriptContext *ctx); +BOOL ScrCmd_WaitForContestCameraFlashTask(ScriptContext *ctx); +BOOL ScrCmd_StopHBlank(ScriptContext *ctx); +BOOL ScrCmd_StartHBlank(ScriptContext *ctx); +BOOL ScrCmd_GetShouldSkipAwardCeremony(ScriptContext *ctx); +BOOL ScrCmd_ShowLinkContestRecords(ScriptContext *ctx); + +#endif // POKEPLATINUM_UNK_02046C7C_H diff --git a/include/script_manager.h b/include/script_manager.h index 647e607d5b..fc0285b764 100644 --- a/include/script_manager.h +++ b/include/script_manager.h @@ -105,7 +105,7 @@ enum ScriptContextType { #define SCRIPT_ID_OFFSET_DAY_CARE_COMMON 9500 #define SCRIPT_ID_OFFSET_INIT_NEW_GAME 9600 #define SCRIPT_ID_OFFSET_FOLLOWER_PARTNERS 9700 -#define SCRIPT_ID_OFFSET_CONTEST_REGISTRATION 9800 +#define SCRIPT_ID_OFFSET_CONTESTS 9800 #define SCRIPT_ID_OFFSET_POKEDEX_RATINGS 9950 #define SCRIPT_ID_OFFSET_FIELD_MOVES 10000 #define SCRIPT_ID_OFFSET_TV_BROADCAST 10100 diff --git a/include/struct_defs/contest_camera_flash_task.h b/include/struct_defs/contest_camera_flash_task.h new file mode 100644 index 0000000000..fa47587db7 --- /dev/null +++ b/include/struct_defs/contest_camera_flash_task.h @@ -0,0 +1,16 @@ +#ifndef POKEPLATINUM_STRUCT_CONTEST_CAMERA_FLASH_TASK_H +#define POKEPLATINUM_STRUCT_CONTEST_CAMERA_FLASH_TASK_H + +#include "sys_task_manager.h" + +typedef struct ContestCameraFlashTask { + SysTask *sysTask; + const u8 *cameraFlashFrameDelays; + s16 frameCounter; + u8 flashCounter; + u8 state; + u8 contestantID; + u8 padding_0D[3]; +} ContestCameraFlashTask; + +#endif // POKEPLATINUM_STRUCT_CONTEST_CAMERA_FLASH_TASK_H diff --git a/include/struct_defs/contest_player_mon_dto.h b/include/struct_defs/contest_player_mon_dto.h new file mode 100644 index 0000000000..26a073e3e6 --- /dev/null +++ b/include/struct_defs/contest_player_mon_dto.h @@ -0,0 +1,29 @@ +#ifndef POKEPLATINUM_CONTEST_PLAYER_MON_DTO_H +#define POKEPLATINUM_CONTEST_PLAYER_MON_DTO_H + +#include "struct_defs/image_clips.h" + +#include "game_options.h" +#include "pokemon.h" +#include "savedata.h" +#include "string_gf.h" +#include "trainer_info.h" + +typedef struct PlayerMonContestDTO { + u8 contestType; + u8 contestRank; + u8 competitionType; + u8 isGameCompleted; + u8 isNatDexObtained; + u8 monPartySlot; + u8 padding_06[2]; + Pokemon *mon; + const String *trainerName; + const TrainerInfo *trainerInfo; + ImageClips *imageClips; + const Options *options; + SaveData *saveData; + void *chatotCry; +} PlayerMonContestDTO; + +#endif // POKEPLATINUM_CONTEST_PLAYER_MON_DTO_H diff --git a/include/struct_defs/struct_0202440C.h b/include/struct_defs/struct_0202440C.h index 4c949dd0d1..ce6ab9d1d5 100644 --- a/include/struct_defs/struct_0202440C.h +++ b/include/struct_defs/struct_0202440C.h @@ -5,7 +5,6 @@ #include "struct_defs/struct_0202E768.h" #include "struct_defs/struct_0202E794.h" -#include "struct_defs/struct_0202E7D8.h" #include "struct_defs/struct_0202E7E4.h" #include "struct_defs/struct_0202E7F0.h" #include "struct_defs/struct_0202E7FC.h" @@ -14,6 +13,7 @@ #include "struct_defs/struct_0202E81C.h" #include "struct_defs/struct_0202E828.h" #include "struct_defs/struct_0202E834.h" +#include "struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h" #define TV_BROADCAST_MAX_PLAYED_SEGMENTS 4 @@ -27,7 +27,7 @@ typedef struct TVBroadcast { UnkStruct_0202E794 unk_234[16]; UnkStruct_0202E794 unk_684[8]; UnkStruct_0202E794 unk_8AC[8]; - UnkStruct_0202E7D8 unk_AD4; + TVEpisodeSegment_ContestHall_ShowcasedPokemon showcasedPokemon; UnkStruct_0202E7E4 unk_ADE; UnkStruct_0202E7F0 unk_B02; UnkStruct_0202E7FC unk_B04; diff --git a/include/struct_defs/struct_0202E7D8.h b/include/struct_defs/struct_0202E7D8.h deleted file mode 100644 index 41b55d01a5..0000000000 --- a/include/struct_defs/struct_0202E7D8.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_0202E7D8_H -#define POKEPLATINUM_STRUCT_0202E7D8_H - -typedef struct { - u8 unk_00; - u8 padding_01; - u16 unk_02; - u8 unk_04; - u8 language; - u8 unk_06; - u8 unk_07; - u8 unk_08; - u8 unk_09; -} UnkStruct_0202E7D8; - -#endif // POKEPLATINUM_STRUCT_0202E7D8_H diff --git a/include/struct_defs/struct_02093800.h b/include/struct_defs/struct_02093800.h deleted file mode 100644 index e53961e47d..0000000000 --- a/include/struct_defs/struct_02093800.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02093800_H -#define POKEPLATINUM_STRUCT_02093800_H - -#include "struct_defs/image_clips.h" - -#include "game_options.h" -#include "pokemon.h" -#include "savedata.h" -#include "string_gf.h" -#include "trainer_info.h" - -typedef struct { - u8 unk_00; - u8 unk_01; - u8 unk_02; - u8 unk_03; - u8 unk_04; - u8 unk_05; - u8 padding_06[2]; - Pokemon *unk_08; - const String *unk_0C; - const TrainerInfo *unk_10; - ImageClips *imageClips; - const Options *options; - SaveData *saveData; - void *unk_20; -} UnkStruct_02093800; - -#endif // POKEPLATINUM_STRUCT_02093800_H diff --git a/include/struct_defs/struct_02093BBC.h b/include/struct_defs/struct_02093BBC.h deleted file mode 100644 index 34b0b72be4..0000000000 --- a/include/struct_defs/struct_02093BBC.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02093BBC_H -#define POKEPLATINUM_STRUCT_02093BBC_H - -#include "struct_defs/fashion_case.h" -#include "struct_defs/struct_02029C88.h" -#include "struct_defs/struct_02095C60.h" - -#include "game_options.h" -#include "pokemon.h" -#include "trainer_info.h" - -typedef struct { - Pokemon *unk_00; - UnkStruct_02029C88 *unk_04; - int unk_08; - int unk_0C; - int unk_10; - int unk_14; - const FashionCase *fashionCase; - UnkStruct_02095C60 *unk_1C; - const Options *options; - const TrainerInfo *unk_24; -} UnkStruct_02093BBC; - -#endif // POKEPLATINUM_STRUCT_02093BBC_H diff --git a/include/struct_defs/struct_02094A58.h b/include/struct_defs/struct_02094A58.h deleted file mode 100644 index d824d00458..0000000000 --- a/include/struct_defs/struct_02094A58.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02094A58_H -#define POKEPLATINUM_STRUCT_02094A58_H - -#include "sys_task_manager.h" - -typedef struct { - SysTask *unk_00; - const u8 *unk_04; - s16 unk_08; - u8 unk_0A; - u8 unk_0B; - u8 unk_0C; - u8 padding_0D[3]; -} UnkStruct_02094A58; - -#endif // POKEPLATINUM_STRUCT_02094A58_H diff --git a/include/struct_defs/struct_020954F0.h b/include/struct_defs/struct_020954F0.h index e27108b74d..78333a6d66 100644 --- a/include/struct_defs/struct_020954F0.h +++ b/include/struct_defs/struct_020954F0.h @@ -2,7 +2,7 @@ #define POKEPLATINUM_STRUCT_020954F0_H typedef struct { - u16 unk_00; + u16 judgeNameMessageID; u8 padding_02[2]; u16 unk_04_0 : 2; u16 unk_04_2 : 2; diff --git a/include/struct_defs/struct_02095C48.h b/include/struct_defs/struct_02095C48.h deleted file mode 100644 index 7d0b9b9230..0000000000 --- a/include/struct_defs/struct_02095C48.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02095C48_H -#define POKEPLATINUM_STRUCT_02095C48_H - -#include "struct_defs/image_clips.h" -#include "struct_defs/struct_02094A58.h" -#include "struct_defs/struct_02095C48_sub1.h" -#include "struct_defs/struct_02095C60.h" - -#include "game_options.h" -#include "party.h" -#include "pokemon.h" -#include "savedata.h" -#include "sys_task_manager.h" -#include "trainer_info.h" - -typedef struct { - UnkStruct_02095C48_sub1 unk_00; - Party *unk_148; - void *unk_14C[4]; - void *unk_150; - u8 unk_154; - u8 isLinkContest; - u8 unk_156[4]; - u8 unk_15A; - u8 unk_15B; - int unk_15C; - int padding_160; - SysTask *unk_164; - u8 unk_168[4][256]; - u8 unk_568; - u8 unk_569[1024]; - u8 unk_969[4][1024]; - u8 padding_1969[3]; - const Options *options; - SaveData *saveData; - Pokemon *unk_1974; - const TrainerInfo *unk_1978; - u8 unk_197C; - u8 isGameCompleted; - u8 isNatDexObtained; - u8 padding_197F; - ImageClips *imageClips; - UnkStruct_02095C60 unk_1984; - void *unk_199C; - UnkStruct_02094A58 *unk_19A0; - u32 unk_19A4; -} UnkStruct_02095C48; - -#endif // POKEPLATINUM_STRUCT_02095C48_H diff --git a/include/struct_defs/struct_02095C48_sub1.h b/include/struct_defs/struct_02095C48_sub1.h index 60eb32ee30..bc61540632 100644 --- a/include/struct_defs/struct_02095C48_sub1.h +++ b/include/struct_defs/struct_02095C48_sub1.h @@ -1,6 +1,8 @@ #ifndef POKEPLATINUM_STRUCT_02095C48_SUB1_H #define POKEPLATINUM_STRUCT_02095C48_SUB1_H +#include "constants/contests.h" + #include "struct_defs/struct_02029C88.h" #include "struct_defs/struct_020954F0.h" #include "struct_defs/struct_02095C48_sub1_sub1.h" @@ -11,28 +13,28 @@ #include "string_gf.h" typedef struct { - Pokemon *unk_00[4]; - UnkStruct_ov6_02248BE8 unk_10[4]; - UnkStruct_020954F0 unk_C0[3]; - String *unk_D8[4]; - UnkStruct_02029C88 *unk_E8[4]; - u8 unk_F8[4]; - u8 unk_FC[4]; - u8 unk_100[4]; - u16 unk_104[4]; + Pokemon *contestMons[CONTEST_NUM_PARTICIPANTS]; + UnkStruct_ov6_02248BE8 unk_10[CONTEST_NUM_PARTICIPANTS]; + UnkStruct_020954F0 unk_C0[CONTEST_NUM_JUDGES]; + String *trainerNames[CONTEST_NUM_PARTICIPANTS]; + UnkStruct_02029C88 *unk_E8[CONTEST_NUM_PARTICIPANTS]; + u8 trainerGenders[CONTEST_NUM_PARTICIPANTS]; + u8 unk_FC[CONTEST_NUM_PARTICIPANTS]; + u8 monContestFame[CONTEST_NUM_PARTICIPANTS]; + u16 contestantObjEventGFX[CONTEST_NUM_PARTICIPANTS]; u8 unk_10C; u8 unk_10D; u8 unk_10E; u8 contestType; u8 contestRank; - u8 unk_111; + u8 competitionType; u8 unk_112; - u8 unk_113; + u8 playerContestantID; u8 unk_114; u8 unk_115; - u8 unk_116; - u8 unk_117; - UnkStruct_02095C48_sub1_sub1 unk_118[4]; + u8 npcCount; + u8 connectionCount; + UnkStruct_02095C48_sub1_sub1 unk_118[CONTEST_NUM_PARTICIPANTS]; } UnkStruct_02095C48_sub1; #endif // POKEPLATINUM_STRUCT_02095C48_SUB1_H diff --git a/include/struct_defs/struct_02095C48_sub1_sub1.h b/include/struct_defs/struct_02095C48_sub1_sub1.h index ba3fa89562..c698b963e9 100644 --- a/include/struct_defs/struct_02095C48_sub1_sub1.h +++ b/include/struct_defs/struct_02095C48_sub1_sub1.h @@ -6,7 +6,7 @@ typedef struct { s16 unk_02; s16 unk_04; s16 unk_06; - u8 unk_08; + u8 contestPlacement; u8 padding_09[3]; } UnkStruct_02095C48_sub1_sub1; diff --git a/include/struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h b/include/struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h new file mode 100644 index 0000000000..9595bea4eb --- /dev/null +++ b/include/struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h @@ -0,0 +1,16 @@ +#ifndef POKEPLATINUM_TV_EPISODE_SEGMENT_CONTEST_HALL_SHOWCASED_POKEMON_H +#define POKEPLATINUM_TV_EPISODE_SEGMENT_CONTEST_HALL_SHOWCASED_POKEMON_H + +typedef struct TVEpisodeSegment_ContestHall_ShowcasedPokemon { + u8 unk_00; + u8 padding_01; + u16 species; + u8 gender; + u8 language; + u8 metGame; + u8 contestRank; + u8 contestType; + u8 contestPlacement; +} TVEpisodeSegment_ContestHall_ShowcasedPokemon; + +#endif // POKEPLATINUM_TV_EPISODE_SEGMENT_CONTEST_HALL_SHOWCASED_POKEMON_H diff --git a/include/struct_defs/visual_competition_app_args.h b/include/struct_defs/visual_competition_app_args.h new file mode 100644 index 0000000000..09a2f51064 --- /dev/null +++ b/include/struct_defs/visual_competition_app_args.h @@ -0,0 +1,28 @@ +#ifndef POKEPLATINUM_VISUAL_COMPETITION_APP_ARGS_H +#define POKEPLATINUM_VISUAL_COMPETITION_APP_ARGS_H + +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" + +#include "struct_defs/fashion_case.h" +#include "struct_defs/struct_02029C88.h" +#include "struct_defs/struct_02095C60.h" + +#include "game_options.h" +#include "pokemon.h" +#include "trainer_info.h" + +typedef struct { + Pokemon *mon; + UnkStruct_02029C88 *unk_04; + int unk_08; + enum PokemonContestRank contestRank; + int competitionType; + enum PokemonContestType contestType; + const FashionCase *fashionCase; + UnkStruct_02095C60 *unk_1C; + const Options *options; + const TrainerInfo *trainerInfo; +} VisualCompetitionAppArgs; + +#endif // POKEPLATINUM_VISUAL_COMPETITION_APP_ARGS_H diff --git a/include/tv_episode_segment.h b/include/tv_episode_segment.h index 3df0e9a543..ebb463ee96 100644 --- a/include/tv_episode_segment.h +++ b/include/tv_episode_segment.h @@ -1,6 +1,9 @@ #ifndef POKEPLATINUM_TV_EPISODE_SEGMENT_H #define POKEPLATINUM_TV_EPISODE_SEGMENT_H +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" + #include "struct_decls/struct_0202440C_decl.h" #include "field/field_system_decl.h" @@ -14,7 +17,7 @@ int TVEpisodeSegment_LoadMessage(int programTypeID, FieldSystem *fieldSystem, StringTemplate *template, UnkStruct_ov6_022465F4 *param3, u16 *bankDestVar); BOOL TVEpisodeSegment_IsEligible(int programTypeID, FieldSystem *fieldSystem, UnkStruct_ov6_022465F4 *param2); -void sub_0206CF14(TVBroadcast *broadcast, Pokemon *param1, int param2, int param3, int param4); +void TVBroadcast_SetContestHallShowInfo(TVBroadcast *broadcast, Pokemon *mon, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int contestPlacement); void sub_0206CF48(TVBroadcast *broadcast, Pokemon *param1, enum HeapID heapID); void FieldSystem_SaveTVEpisodeSegment_PlantingAndWateringShow(FieldSystem *fieldSystem, u16 berryItemID, u8 yieldRating, u16 yieldAmount); void sub_0206CF9C(TVBroadcast *broadcast, int param1); diff --git a/include/unk_020298BC.h b/include/unk_020298BC.h index bd959a7fe7..d667726565 100644 --- a/include/unk_020298BC.h +++ b/include/unk_020298BC.h @@ -1,6 +1,8 @@ #ifndef POKEPLATINUM_UNK_020298BC_H #define POKEPLATINUM_UNK_020298BC_H +#include "generated/pokemon_contest_ranks.h" + #include "struct_defs/dress_up_photo.h" #include "struct_defs/image_clips.h" #include "struct_defs/photo_accessory.h" @@ -59,7 +61,7 @@ void sub_0202A25C(UnkStruct_02029C88 *param0); void sub_0202A284(UnkStruct_02029C88 *param0, Pokemon *param1, UnkStruct_020298D8 *param2); void sub_0202A2A8(UnkStruct_02029C88 *param0, const UnkStruct_ov22_02255040 *param1, int param2); void sub_0202A35C(UnkStruct_02029C88 *param0, u8 param1); -void sub_0202A378(UnkStruct_02029C88 *param0, u32 param1); +void sub_0202A378(UnkStruct_02029C88 *param0, enum PokemonContestRank contestRank); void sub_0202A390(UnkStruct_02029C88 *param0, const UnkStruct_02029C88 *param1); void sub_0202A3B0(UnkStruct_02029C88 *param0, Pokemon *mon, s8 param2); void sub_0202A3EC(UnkStruct_02029C88 *param0, u32 param1, u8 param2, u8 xPos, u8 yPos, s8 priority); diff --git a/include/unk_0202E2CC.h b/include/unk_0202E2CC.h index 7d339ded4d..efec78529a 100644 --- a/include/unk_0202E2CC.h +++ b/include/unk_0202E2CC.h @@ -5,7 +5,6 @@ #include "struct_decls/struct_0202E4D4_decl.h" #include "struct_decls/struct_0202E768_decl.h" #include "struct_decls/struct_0202E794_decl.h" -#include "struct_defs/struct_0202E7D8.h" #include "struct_defs/struct_0202E7E4.h" #include "struct_defs/struct_0202E7F0.h" #include "struct_defs/struct_0202E7FC.h" @@ -14,6 +13,7 @@ #include "struct_defs/struct_0202E81C.h" #include "struct_defs/struct_0202E828.h" #include "struct_defs/struct_0202E834.h" +#include "struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h" int TVBroadcast_SaveSize(void); void TVBroadcast_Init(TVBroadcast *broadcast); @@ -40,7 +40,7 @@ UnkStruct_0202E768 *sub_0202E768(TVBroadcast *broadcast, int param1, int param2) UnkStruct_0202E794 *sub_0202E794(TVBroadcast *broadcast, int param1, int param2); BOOL sub_0202E7C0(int param0); int sub_0202E7D0(int param0); -UnkStruct_0202E7D8 *sub_0202E7D8(TVBroadcast *broadcast); +TVEpisodeSegment_ContestHall_ShowcasedPokemon *TVBroadcast_GetShowcasedPokemon(TVBroadcast *broadcast); UnkStruct_0202E7E4 *sub_0202E7E4(TVBroadcast *broadcast); UnkStruct_0202E7F0 *sub_0202E7F0(TVBroadcast *broadcast); UnkStruct_0202E7FC *sub_0202E7FC(TVBroadcast *broadcast); diff --git a/include/unk_020363E8.h b/include/unk_020363E8.h index 99c2c30c1a..ded686fa6f 100644 --- a/include/unk_020363E8.h +++ b/include/unk_020363E8.h @@ -7,10 +7,10 @@ BOOL CommTool_IsInitialized(void); void CommCmd_16(int param0, int param1, void *param2, void *param3); void CommCmd_18(int param0, int param1, void *param2, void *param3); void CommCmd_17(int param0, int param1, void *param2, void *param3); -void CommTiming_StartSync(u8 param0); +void CommTiming_StartSync(u8 syncNo); void sub_0203650C(void); -BOOL CommTiming_IsSyncState(u8 param0); -int sub_02036564(int param0); +BOOL CommTiming_IsSyncState(u8 syncState); +int CommTool_GetSyncNo(int netId); void sub_02036574(int param0, int param1, void *param2, void *param3); int sub_02036590(void); void sub_02036594(u8 param0, u8 param1); diff --git a/include/unk_0203D1B8.h b/include/unk_0203D1B8.h index 9c2b7d53be..6f89f4dc51 100644 --- a/include/unk_0203D1B8.h +++ b/include/unk_0203D1B8.h @@ -51,9 +51,9 @@ PartyMenu *FieldSystem_OpenPartyMenu_SelectForSpinTrade(FieldSystem *fieldSystem PartyMenu *FieldSystem_OpenPartyMenu_SelectForItemUsage(FieldSystem *fieldSystem, enum HeapID heapID, enum Item item); int PartyMenu_GetSelectedSlot(PartyMenu *partyMenu); -int sub_0203D438(void *param0); -int sub_0203D440(void *param0); -void *sub_0203D5C8(int param0, FieldSystem *fieldSystem, int param2); +int PartyMenu_GetMenuSelectionResult(PartyMenu *partyMenu); +int PokemonSummary_GetPartySlot(PokemonSummary *monSummary); +void *FieldSystem_GetContestMonSummary(int unused, FieldSystem *fieldSystem, int partySlot); PokemonSummary *sub_0203D670(FieldSystem *fieldSystem, enum HeapID heapID, int mode); void *FieldSystem_OpenSummaryScreenSelectMove(enum HeapID heapID, FieldSystem *fieldSystem, u8 partyIndex); int PokemonSummary_GetSelectedMoveSlot(void *summary); diff --git a/include/unk_02046C7C.h b/include/unk_02046C7C.h deleted file mode 100644 index ea3ab07bdf..0000000000 --- a/include/unk_02046C7C.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef POKEPLATINUM_UNK_02046C7C_H -#define POKEPLATINUM_UNK_02046C7C_H - -#include "field_script_context.h" - -BOOL ScrCmd_0F8(ScriptContext *param0); -BOOL ScrCmd_0F9(ScriptContext *param0); -BOOL ScrCmd_0FA(ScriptContext *param0); -BOOL ScrCmd_0FB(ScriptContext *param0); -BOOL ScrCmd_0FC(ScriptContext *param0); -BOOL ScrCmd_0FD(ScriptContext *param0); -BOOL ScrCmd_0FE(ScriptContext *param0); -BOOL ScrCmd_0FF(ScriptContext *param0); -BOOL ScrCmd_100(ScriptContext *param0); -BOOL ScrCmd_101(ScriptContext *param0); -BOOL ScrCmd_102(ScriptContext *param0); -BOOL ScrCmd_103(ScriptContext *param0); -BOOL ScrCmd_104(ScriptContext *param0); -BOOL ScrCmd_105(ScriptContext *param0); -BOOL ScrCmd_106(ScriptContext *param0); -BOOL ScrCmd_107(ScriptContext *param0); -BOOL ScrCmd_108(ScriptContext *param0); -BOOL ScrCmd_109(ScriptContext *param0); -BOOL ScrCmd_10A(ScriptContext *param0); -BOOL ScrCmd_10B(ScriptContext *param0); -BOOL ScrCmd_10C(ScriptContext *param0); -BOOL ScrCmd_110(ScriptContext *param0); -BOOL ScrCmd_10D(ScriptContext *param0); -BOOL ScrCmd_10E(ScriptContext *param0); -BOOL ScrCmd_10F(ScriptContext *param0); -BOOL ScrCmd_LockAutoScrollForLinkContests(ScriptContext *ctx); -BOOL ScrCmd_118(ScriptContext *param0); -BOOL ScrCmd_111(ScriptContext *param0); -BOOL ScrCmd_112(ScriptContext *param0); -BOOL ScrCmd_113(ScriptContext *param0); -BOOL ScrCmd_114(ScriptContext *param0); -BOOL ScrCmd_115(ScriptContext *param0); -BOOL ScrCmd_ShowLinkContestRecords(ScriptContext *ctx); - -#endif // POKEPLATINUM_UNK_02046C7C_H diff --git a/include/unk_02054884.h b/include/unk_02054884.h index ae77620078..54b1c04c36 100644 --- a/include/unk_02054884.h +++ b/include/unk_02054884.h @@ -5,8 +5,6 @@ #include "pokemon.h" #include "savedata.h" -#define PARTY_SLOT_NONE 0xFF - BOOL Pokemon_CanBattle(Pokemon *mon); BOOL Pokemon_GiveMonFromScript(enum HeapID heapID, SaveData *saveData, u16 species, u8 level, u16 heldItem, int metLocation, int metTerrain); BOOL sub_02054930(int unused, SaveData *saveData, u16 param2, u8 param3, int param4, int param5); diff --git a/include/unk_020933F8.h b/include/unk_020933F8.h deleted file mode 100644 index 480ea1e9d9..0000000000 --- a/include/unk_020933F8.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef POKEPLATINUM_UNK_020933F8_H -#define POKEPLATINUM_UNK_020933F8_H - -#include "struct_defs/struct_02093800.h" -#include "struct_defs/struct_02095C48.h" - -#include "field_task.h" -#include "journal.h" -#include "savedata.h" -#include "string_template.h" - -void sub_020933F8(FieldTask *param0, UnkStruct_02095C48 *param1); -UnkStruct_02095C48 *sub_02093800(const UnkStruct_02093800 *param0); -void sub_02093AD4(UnkStruct_02095C48 *param0); -BOOL sub_020943B0(UnkStruct_02095C48 *param0); -BOOL sub_020944CC(UnkStruct_02095C48 *param0); -void sub_02094630(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -void sub_02094648(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -void sub_02094680(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -void sub_020946A4(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2); -void sub_020946CC(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2); -void sub_020946F0(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2); -void sub_02094720(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2); -u32 sub_02094750(UnkStruct_02095C48 *param0); -void sub_02094754(UnkStruct_02095C48 *param0, u8 param1); -BOOL sub_0209476C(UnkStruct_02095C48 *param0, u8 param1); -int sub_02094790(UnkStruct_02095C48 *param0); -int sub_020947A4(UnkStruct_02095C48 *param0); -int sub_020947C8(UnkStruct_02095C48 *param0); -int sub_020947D8(UnkStruct_02095C48 *param0, int param1); -int sub_020947F0(UnkStruct_02095C48 *param0, int param1); -int sub_02094804(UnkStruct_02095C48 *param0); -void sub_02094828(UnkStruct_02095C48 *param0, u16 *param1, u16 *param2, u16 *param3, u16 *param4); -void sub_02094850(UnkStruct_02095C48 *param0); -void sub_02094860(UnkStruct_02095C48 *param0); -BOOL sub_02094868(UnkStruct_02095C48 *param0); -void sub_02094898(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2, int param3); -u32 sub_02094904(UnkStruct_02095C48 *param0); -void sub_02094A58(UnkStruct_02095C48 *param0, int param1); -BOOL sub_02094B1C(UnkStruct_02095C48 *param0); -void sub_02094BB4(UnkStruct_02095C48 *param0, int *param1, BOOL *isLinkContest, int *param3, int *param4, int *param5); -void sub_02094C44(UnkStruct_02095C48 *param0, SaveData *saveData, u32 param2, JournalEntry *param3); -u16 sub_02094E98(UnkStruct_02095C48 *param0); -u16 sub_02094EA0(u32 param0, u32 *param1); - -#endif // POKEPLATINUM_UNK_020933F8_H diff --git a/include/unk_02094EDC.h b/include/unk_02094EDC.h index 62e3a6bb9b..b2fea709de 100644 --- a/include/unk_02094EDC.h +++ b/include/unk_02094EDC.h @@ -5,34 +5,33 @@ #include "generated/pokemon_contest_ranks.h" #include "generated/pokemon_contest_types.h" -#include "struct_defs/struct_02095C48.h" - #include "battle/pokemon_sprite_data.h" #include "overlay006/struct_ov6_02248BE8.h" +#include "contest.h" #include "pokemon.h" #include "pokemon_sprite.h" -BOOL sub_02094EDC(UnkStruct_02095C48 *param0); -void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int param5, BOOL isGameCompleted, BOOL isNatDexObtained); -void sub_020951B0(UnkStruct_02095C48 *param0, enum HeapID heapID); -void sub_02095338(UnkStruct_02095C48 *param0); +BOOL sub_02094EDC(Contest *contest); +void sub_02094F04(Contest *contest, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int competitionType, BOOL isGameCompleted, BOOL isNatDexObtained); +void sub_020951B0(Contest *contest, enum HeapID heapID); +void sub_02095338(Contest *contest); void sub_02095380(const UnkStruct_ov6_02248BE8 *param0, Pokemon *param1, enum HeapID heapID); PokemonSprite *sub_02095484(PokemonSpriteManager *param0, int param1, Pokemon *param2, int param3, PokemonSpriteData *pokemonSpriteData, enum HeapID heapID, int param6, int param7, int param8); -void sub_020954F0(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank); +void sub_020954F0(Contest *contest, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank); s8 sub_02095734(enum ContestEffects contestEffect); -void LoadTwoLineContestEffectMessages(int param0, u32 *lineOneEffectMessageID, u32 *lineTwoEffectMessageID); +void Contest_LoadTwoLineContestEffectMessages(int moveContestEffectID, u32 *lineOneEffectMessageID, u32 *lineTwoEffectMessageID); u32 sub_0209577C(int param0); -void sub_02095790(int param0, int param1, u32 *param2, u32 *param3); -u32 sub_02095848(enum PokemonContestRank contestRank, int param1, BOOL isLinkContest); +void sub_02095790(int contestMoveEffect, int param1, u32 *param2, u32 *param3); +u32 Contest_GetContestRankTitleMessageID(enum PokemonContestRank contestRank, int competitionType, BOOL isLinkContest); u32 Contest_GetRankMessageID(enum PokemonContestRank contestRank); -u32 Contest_GetContestTypeMessageID(int param0); -u32 sub_020958C4(enum PokemonContestType contestType, int param1); -int sub_020958FC(int param0); -int sub_02095904(int param0); -BOOL sub_0209590C(UnkStruct_02095C48 *param0); -int sub_02095928(UnkStruct_02095C48 *param0, int param1); -int sub_0209598C(UnkStruct_02095C48 *param0, int param1); +u32 Contest_GetContestTypeMessageID(enum PokemonContestType contestType); +u32 Contest_GetFullContestTypeMessageID(enum PokemonContestType contestType, int competitionType); +int Contest_ContestantIDToContestantEntryNum(int contestantID); +int Contest_ContestantEntryNumToContestantID(int contestantEntryNum); +BOOL Contest_IsPracticeCompetition(Contest *contest); +int sub_02095928(Contest *contest, int param1); +int sub_0209598C(Contest *contest, int param1); void SetLockTextWithAutoScroll(BOOL lockTextWithAutoScroll); void LockTextSpeed(); u32 CalcMonDataRibbon(enum PokemonContestRank contestRank, enum PokemonContestType contestType); diff --git a/include/unk_02095AF0.h b/include/unk_02095AF0.h index 7050c2e669..5b2ce34126 100644 --- a/include/unk_02095AF0.h +++ b/include/unk_02095AF0.h @@ -2,12 +2,13 @@ #define POKEPLATINUM_UNK_02095AF0_H #include "struct_defs/struct_02029C88.h" -#include "struct_defs/struct_02095C48.h" #include "struct_defs/struct_02095C60.h" +#include "contest.h" + void sub_02095AF0(void *param0); -BOOL sub_02095B5C(UnkStruct_02095C48 *param0, int param1, const UnkStruct_02029C88 *param2); -BOOL sub_02095BEC(UnkStruct_02095C48 *param0, UnkStruct_02029C88 **param1); +BOOL sub_02095B5C(Contest *param0, int param1, const UnkStruct_02029C88 *param2); +BOOL sub_02095BEC(Contest *param0, UnkStruct_02029C88 **param1); BOOL sub_02095C60(UnkStruct_02095C60 *param0, u32 param1); BOOL sub_02095CA8(UnkStruct_02095C60 *param0, int param1); diff --git a/platinum.us/main.lsf b/platinum.us/main.lsf index 5c272e761c..b2f8019ebf 100644 --- a/platinum.us/main.lsf +++ b/platinum.us/main.lsf @@ -184,7 +184,7 @@ Static main Object main.nef.p/src_script_manager.c.o Object main.nef.p/src_scrcmd.c.o Object main.nef.p/src_scrcmd_shop.c.o - Object main.nef.p/src_unk_02046C7C.c.o + Object main.nef.p/src_scrcmd_contests.c.o Object main.nef.p/src_scrcmd_strings.c.o Object main.nef.p/src_scrcmd_jubilife_lottery.c.o Object main.nef.p/src_scrcmd_sound.c.o @@ -325,7 +325,7 @@ Static main Object main.nef.p/src_applications_pokemon_summary_screen_subscreen.c.o Object main.nef.p/src_ribbon.c.o Object main.nef.p/src_unk_02092494.c.o - Object main.nef.p/src_unk_020933F8.c.o + Object main.nef.p/src_contest.c.o Object main.nef.p/src_unk_02094EDC.c.o Object main.nef.p/src_unk_02095AF0.c.o Object main.nef.p/src_unk_02095CD4.c.o diff --git a/res/field/events/events_contest_hall_lobby.json b/res/field/events/events_contest_hall_lobby.json index 11f8908e9d..beae30bd36 100644 --- a/res/field/events/events_contest_hall_lobby.json +++ b/res/field/events/events_contest_hall_lobby.json @@ -51,7 +51,7 @@ ], "object_events": [ { - "id": "CONTEST_HALL_LOBBY_POKECENTER_NURSE_0", + "id": "CONTEST_HALL_LOBBY_RECEPTIONIST_OFFICIAL_CONTEST", "graphics_id": "OBJ_EVENT_GFX_POKECENTER_NURSE", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", @@ -66,7 +66,7 @@ "y": 0 }, { - "id": "CONTEST_HALL_LOBBY_POKECENTER_NURSE_1", + "id": "CONTEST_HALL_LOBBY_RECEPTIONIST_LINK_CONTEST", "graphics_id": "OBJ_EVENT_GFX_POKECENTER_NURSE", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", @@ -81,7 +81,7 @@ "y": 0 }, { - "id": "CONTEST_HALL_LOBBY_POKECENTER_NURSE_2", + "id": "CONTEST_HALL_LOBBY_RECEPTIONIST_PRACTICE_CONTEST", "graphics_id": "OBJ_EVENT_GFX_POKECENTER_NURSE", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", @@ -160,7 +160,7 @@ "graphics_id": "OBJ_EVENT_GFX_REPORTER", "movement_type": "MOVEMENT_TYPE_NONE", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0213", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_LOBBY_REPORTER", "script": 10156, "initial_dir": 2, "data": [], @@ -186,7 +186,7 @@ "y": 0 }, { - "id": "CONTEST_HALL_LOBBY_RICH_BOY_9", + "id": "CONTEST_HALL_LOBBY_RICH_BOY", "graphics_id": "OBJ_EVENT_GFX_RICH_BOY", "movement_type": "MOVEMENT_TYPE_NONE", "trainer_type": "TRAINER_TYPE_NONE", diff --git a/res/field/events/events_contest_hall_stage_ongoing_contest.json b/res/field/events/events_contest_hall_stage_ongoing_contest.json index 554def4a2c..3c2584da9f 100644 --- a/res/field/events/events_contest_hall_stage_ongoing_contest.json +++ b/res/field/events/events_contest_hall_stage_ongoing_contest.json @@ -2,7 +2,7 @@ "bg_events": [], "object_events": [ { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_GENTLEMAN_0", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER", "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", @@ -17,11 +17,11 @@ "y": 0 }, { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_COUNTERPART_1", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT1", "graphics_id": "OBJ_EVENT_GFX_COUNTERPART", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0201", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT1", "script": 0, "initial_dir": 1, "data": [], @@ -32,11 +32,11 @@ "y": 0 }, { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_UNK_102_2", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT2", "graphics_id": "OBJ_EVENT_GFX_UNK_102", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0202", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT2", "script": 0, "initial_dir": 1, "data": [], @@ -47,11 +47,11 @@ "y": 0 }, { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_UNK_103_3", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT3", "graphics_id": "OBJ_EVENT_GFX_UNK_103", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0203", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT3", "script": 0, "initial_dir": 1, "data": [], @@ -62,11 +62,11 @@ "y": 0 }, { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_UNK_104_4", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT4", "graphics_id": "OBJ_EVENT_GFX_UNK_104", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0204", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT4", "script": 0, "initial_dir": 1, "data": [], @@ -77,11 +77,11 @@ "y": 0 }, { - "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_UNK_105_5", + "id": "CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT_WINNER", "graphics_id": "OBJ_EVENT_GFX_UNK_105", "movement_type": "MOVEMENT_TYPE_LOOK_SOUTH", "trainer_type": "TRAINER_TYPE_NONE", - "hidden_flag": "FLAG_UNK_0x0205", + "hidden_flag": "FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT_WINNER", "script": 0, "initial_dir": 1, "data": [], diff --git a/res/field/scripts/meson.build b/res/field/scripts/meson.build index 267f6948b9..d69ec32c8a 100644 --- a/res/field/scripts/meson.build +++ b/res/field/scripts/meson.build @@ -245,7 +245,7 @@ scr_seq_files = files( 'scripts_fight_area_south_house.s', 'scripts_unk_0210.s', 'scripts_common.s', - 'scripts_contest_registration.s', + 'scripts_contests.s', 'scripts_pokemon_center_2f_attendants.s', 'scripts_oreburgh_mine_b1f.s', 'scripts_oreburgh_mine_b2f.s', diff --git a/res/field/scripts/scripts.order b/res/field/scripts/scripts.order index 46131e5810..6ae00fb457 100644 --- a/res/field/scripts/scripts.order +++ b/res/field/scripts/scripts.order @@ -210,7 +210,7 @@ scripts_fight_area_middle_house scripts_fight_area_south_house scripts_unk_0210 scripts_common -scripts_contest_registration +scripts_contests scripts_pokemon_center_2f_attendants scripts_oreburgh_mine_b1f scripts_oreburgh_mine_b2f diff --git a/res/field/scripts/scripts_contest_registration.s b/res/field/scripts/scripts_contest_registration.s deleted file mode 100644 index 7c963ae902..0000000000 --- a/res/field/scripts/scripts_contest_registration.s +++ /dev/null @@ -1,1323 +0,0 @@ -#include "macros/scrcmd.inc" -#include "res/text/bank/contest_registration.h" -#include "constants/map_object.h" -#include "generated/pokemon_contest_types.h" - - - ScriptEntry _0036 - ScriptEntry _0148 - ScriptEntry _014A - ScriptEntry _0184 - ScriptEntry _01D4 - ScriptEntry _01E9 - ScriptEntry _01FC - ScriptEntry _021B - ScriptEntry _0E74 - ScriptEntry _0E74 - ScriptEntry _0E74 - ScriptEntry _0E74 - ScriptEntry ContestRegistration_LinkContestRecordsDisplay - ScriptEntryEnd - -_0036: - LockAll - SetVar VAR_RESULT, 7 - Call _0052 - ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE - SetVar VAR_UNK_0x40D5, 0 - ReleaseAll - End - -_0052: - ApplyMovement LOCALID_PLAYER, _0120 - WaitMovement - LoadDoorAnimation 0, 0, VAR_RESULT, 5, ANIMATION_TAG_DOOR_1 - Call _010D - ApplyMovement LOCALID_PLAYER, _0128 - WaitMovement - Call _0115 - Return - -_007F: - ApplyMovement LOCALID_PLAYER, _013C - WaitMovement - Return - -_008B: - ApplyMovement LOCALID_PLAYER, _0130 - WaitMovement - CallIfEq VAR_0x8007, 3, _00C8 - CallIfEq VAR_0x8007, 5, _00DF - CallIfEq VAR_0x8007, 7, _00F6 - SetVar VAR_0x8004, 0 - ShowYesNoMenu VAR_RESULT - Return - -_00C8: - GoToIfGt VAR_0x8004, 1, _00DA - Message 184 - Return - -_00DA: - Message 185 - Return - -_00DF: - GoToIfGt VAR_0x8004, 1, _00F1 - Message 194 - Return - -_00F1: - Message 195 - Return - -_00F6: - GoToIfGt VAR_0x8004, 1, _0108 - Message 204 - Return - -_0108: - Message 205 - Return - -_010D: - PlayDoorOpenAnimation ANIMATION_TAG_DOOR_1 - WaitForAnimation ANIMATION_TAG_DOOR_1 - Return - -_0115: - PlayDoorCloseAnimation ANIMATION_TAG_DOOR_1 - WaitForAnimation ANIMATION_TAG_DOOR_1 - UnloadAnimation ANIMATION_TAG_DOOR_1 - Return - - .balign 4, 0 -_0120: - WalkNormalSouth - EndMovement - - .balign 4, 0 -_0128: - WalkNormalSouth 2 - EndMovement - - .balign 4, 0 -_0130: - WalkNormalWest - WalkOnSpotFastNorth - EndMovement - - .balign 4, 0 -_013C: - WalkNormalWest 2 - WalkOnSpotFastNorth - EndMovement - -_0148: - End - -_014A: - CallIfEq VAR_UNK_0x40CC, 0, _0168 - GoToIfEq VAR_UNK_0x40CC, 0, _0166 - HidePoketch -_0166: - End - -_0168: - SetVar VAR_UNK_0x40CC, 0 - SetFlag FLAG_UNK_0x0201 - SetFlag FLAG_UNK_0x0202 - SetFlag FLAG_UNK_0x0203 - SetFlag FLAG_UNK_0x0204 - SetFlag FLAG_UNK_0x0205 - Return - -_0184: - ShowPoketch - Call _01B1 - Call _0168 - CheckTVInterviewEligible TV_PROGRAM_SEGMENT_CONTEST_HALL, VAR_MAP_LOCAL_0 - GoToIfEq VAR_MAP_LOCAL_0, 0, _01AB - ClearFlag FLAG_UNK_0x0213 - End - -_01AB: - SetFlag FLAG_UNK_0x0213 - End - -_01B1: - GoToIfSet FLAG_UNK_0x0159, _01BE - Return - -_01BE: - SetObjectEventPos 9, 24, 6 - SetObjectEventMovementType 9, MOVEMENT_TYPE_LOOK_SOUTH - SetObjectEventDir 9, DIR_SOUTH - Return - -_01D4: - CallIfEq VAR_UNK_0x40CC, 1, _01E3 - End - -_01E3: - HideObject LOCALID_PLAYER - Return - -_01E9: - NPCMessage 0 - End - -_01FC: - PlayFanfare SEQ_SE_CONFIRM - LockAll - FacePlayer - SetVar VAR_MAP_LOCAL_3, 0 - SetVar VAR_0x8007, 2 - Message 3 - GoTo _023A - End - -_021B: - PlayFanfare SEQ_SE_CONFIRM - LockAll - FacePlayer - SetVar VAR_MAP_LOCAL_3, 1 - SetVar VAR_0x8007, 2 - Message 7 - GoTo _023A - End - -_023A: - GoToIfEq VAR_MAP_LOCAL_3, 1, _0250 - Message 4 - GoTo _0253 - -_0250: - Message 12 -_0253: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 8, 0 - AddMenuEntryImm 9, 1 - AddMenuEntryImm 10, 2 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _02A8 - GoToIfEq VAR_0x8008, 1, _02F0 - GoTo _0291 - End - -_0291: - EndCommunication - SetVar VAR_UNK_0x40D5, 0 - ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE - Message 11 - WaitABXPadPress - CloseMessage - ReleaseAll - End - -_02A8: - GoToIfEq VAR_MAP_LOCAL_3, 1, _02BD - GoTo _040D - End - -_02BD: - HealParty - ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE - Common_SaveGame - SetVar VAR_RESULT, VAR_MAP_LOCAL_0 - GoToIfEq VAR_RESULT, 1, _02E2 - GoTo _0291 - End - -_02E2: - SetVar VAR_0x8004, 2 - GoTo _04A8 - End - -_02F0: - GoToIfEq VAR_MAP_LOCAL_3, 1, _0305 - GoTo _030E - End - -_0305: - Message 13 - GoTo _023A - -_030E: - Message 5 -_0311: - InitGlobalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 96, 0 - AddMenuEntryImm 97, 1 - AddMenuEntryImm 98, 2 - AddMenuEntryImm 99, 3 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _0360 - GoToIfEq VAR_0x8008, 1, _0368 - GoToIfEq VAR_0x8008, 2, _0373 - GoTo _023A - End - -_0360: - GoTo _0381 - End - -_0368: - Message 18 - GoTo _030E - End - -_0373: - Message 19 - GoTo _030E - End - -_037E: - Message 117 -_0381: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 36, 0 - AddMenuEntryImm 37, 1 - AddMenuEntryImm 38, 2 - AddMenuEntryImm 39, 3 - AddMenuEntryImm 40, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _03E1 - GoToIfEq VAR_0x8008, 1, _03EC - GoToIfEq VAR_0x8008, 2, _03F7 - GoToIfEq VAR_0x8008, 3, _0402 - GoTo _0311 - End - -_03E1: - Message 14 - GoTo _037E - End - -_03EC: - Message 15 - GoTo _037E - End - -_03F7: - Message 16 - GoTo _037E - End - -_0402: - Message 17 - GoTo _037E - End - -_040D: - Message 27 - InitGlobalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 105, 0 - AddMenuEntryImm 106, 1 - AddMenuEntryImm 107, 2 - AddMenuEntryImm 108, 3 - AddMenuEntryImm 109, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _0470 - GoToIfEq VAR_0x8008, 1, _047E - GoToIfEq VAR_0x8008, 2, _048C - GoToIfEq VAR_0x8008, 3, _049A - GoTo _0291 - End - -_0470: - SetVar VAR_0x8004, 0 - GoTo _04A8 - End - -_047E: - SetVar VAR_0x8004, 1 - GoTo _04A8 - End - -_048C: - SetVar VAR_0x8004, 2 - GoTo _04A8 - End - -_049A: - SetVar VAR_0x8004, 3 - GoTo _04A8 - End - -_04A8: - Message 28 - InitGlobalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 110, 0 - AddMenuEntryImm 111, 1 - AddMenuEntryImm 112, 2 - AddMenuEntryImm 113, 3 - AddMenuEntryImm 114, 4 - AddMenuEntryImm 115, 5 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _051C - GoToIfEq VAR_0x8008, 1, _052A - GoToIfEq VAR_0x8008, 2, _0538 - GoToIfEq VAR_0x8008, 3, _0546 - GoToIfEq VAR_0x8008, 4, _0554 - GoTo _0291 - End - -_051C: - SetVar VAR_0x8005, CONTEST_TYPE_COOL - GoTo _0562 - End - -_052A: - SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY - GoTo _0562 - End - -_0538: - SetVar VAR_0x8005, CONTEST_TYPE_CUTE - GoTo _0562 - End - -_0546: - SetVar VAR_0x8005, CONTEST_TYPE_SMART - GoTo _0562 - End - -_0554: - SetVar VAR_0x8005, CONTEST_TYPE_TOUGH - GoTo _0562 - End - -_0562: - Message 20 - Message 21 - CloseMessage - FadeScreenOut - WaitFadeScreen - CallIfEq VAR_MAP_LOCAL_3, 0, _0600 - CallIfEq VAR_MAP_LOCAL_3, 1, _0608 - SetVar VAR_RESULT, 0 -_0596: - OpenPartyMenuForContest VAR_RESULT, VAR_0x8004, VAR_0x8005, VAR_MAP_LOCAL_4 - ScrCmd_195 VAR_MAP_LOCAL_2, VAR_RESULT - GoToIfEq VAR_RESULT, 0, _05C1 - ScrCmd_196 VAR_MAP_LOCAL_2 - ScrCmd_197 VAR_RESULT - GoTo _0596 - -_05C1: - ReturnToField - FadeScreenIn - WaitFadeScreen - GoToIfEq VAR_MAP_LOCAL_2, 0xFF, _05E4 - GoTo _0610 - End - -_05E4: - Message 215 - ShowYesNoMenu VAR_RESULT - GoToIfEq VAR_RESULT, MENU_YES, _0291 - GoTo _0562 - End - -_0600: - SetVar VAR_MAP_LOCAL_4, 0 - Return - -_0608: - SetVar VAR_MAP_LOCAL_4, 1 - Return - -_0610: - GoToIfEq VAR_MAP_LOCAL_3, 1, _0625 - GoTo _070D - End - -_0625: - Message 219 - InitGlobalTextMenu 30, 1, 0, VAR_RESULT - SetMenuXOriginToRight - AddMenuEntryImm 13, 0 - AddMenuEntryImm 14, 1 - AddMenuEntryImm 5, 2 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _0669 - GoToIfEq VAR_0x8008, 1, _06BB - GoTo _0291 - End - -_0669: - Message 212 - ShowYesNoMenu VAR_RESULT - GoToIfEq VAR_RESULT, MENU_NO, _0625 - CloseMessage - StartBattleClient 8, VAR_0x8005, VAR_0x8004, VAR_RESULT - GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _06AB - GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _06B3 - GoTo _070D - End - -_06AB: - GoTo _0625 - End - -_06B3: - GoTo _0625 - End - -_06BB: - Message 212 - ShowYesNoMenu VAR_RESULT - GoToIfEq VAR_RESULT, MENU_NO, _0625 - CloseMessage - StartBattleServer 8, VAR_0x8005, VAR_0x8004, VAR_RESULT - GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, _06FD - GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, _0705 - GoTo _070D - End - -_06FD: - GoTo _0625 - End - -_0705: - EndCommunication - CloseMessage - ReleaseAll - End - -_070D: - ScrCmd_0FA VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 - CallIfEq VAR_MAP_LOCAL_3, 1, _07B5 - GoToIfEq VAR_MAP_LOCAL_3, 2, _078A - ScrCmd_109 VAR_RESULT - AddVar VAR_RESULT, 1 - ScrCmd_0FF VAR_RESULT, 0 - MessageSynchronized 22 - ScrCmd_109 VAR_RESULT - ScrCmd_0FD VAR_RESULT, 0 - ScrCmd_0FE VAR_RESULT, 1 - MessageSynchronized 64 - ScrCmd_0F8 25 - ScrCmd_0F9 25 - CloseMessage -_0761: - GoToIfEq VAR_MAP_LOCAL_3, 0, _07BC - GoToIfEq VAR_MAP_LOCAL_3, 1, _07F1 - GoToIfEq VAR_MAP_LOCAL_3, 2, _0830 - End - -_078A: - ScrCmd_109 VAR_RESULT - AddVar VAR_RESULT, 1 - ScrCmd_0FF VAR_RESULT, 0 - Message 177 - ScrCmd_109 VAR_RESULT - ScrCmd_0FD VAR_RESULT, 0 - ScrCmd_0FE VAR_RESULT, 1 - CloseMessage - GoTo _0761 - -_07B5: - Message 210 - ScrCmd_100 - Return - -_07BC: - LoadDoorAnimation 0, 0, 19, 5, ANIMATION_TAG_DOOR_1 - Call _010D - WaitMovement - ApplyMovement LOCALID_PLAYER, _0DA0 - ApplyMovement 0, _0E08 - WaitMovement - Call _0115 - WaitMovement - GoTo _086A - End - -_07F1: - SetFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE - SetVar VAR_UNK_0x40D5, 5 - LoadDoorAnimation 0, 0, 7, 5, ANIMATION_TAG_DOOR_1 - Call _010D - WaitMovement - ApplyMovement LOCALID_PLAYER, _0DB0 - ApplyMovement 1, _0E18 - WaitMovement - Call _0115 - WaitMovement - GoTo _086A - End - -_0830: - LoadDoorAnimation 0, 0, 28, 5, ANIMATION_TAG_DOOR_1 - Call _010D - WaitMovement - ApplyMovement LOCALID_PLAYER, _0DC0 - ApplyMovement 2, _0E28 - WaitMovement - Call _0115 - WaitMovement - MessageSynchronized 211 - CloseMessage - GoTo _086A - End - -_086A: - GoToIfEq VAR_MAP_LOCAL_3, 2, _08CD - ScrCmd_0C6 - GetPlayerGender VAR_RESULT - GoToIfEq VAR_RESULT, GENDER_MALE, _0892 - GoTo _08A0 - End - -_0892: - BufferPlayerName 0 - MessageSynchronized 66 - GoTo _08AE - End - -_08A0: - BufferPlayerName 0 - MessageSynchronized 67 - GoTo _08AE - End - -_08AE: - ApplyMovement LOCALID_PLAYER, _0E00 - WaitMovement - MessageSynchronized 68 - ScrCmd_0F8 26 - ScrCmd_0F9 26 - CloseMessage - GoTo _0947 - End - -_08CD: - FadeScreenOut - WaitFadeScreen - ScrCmd_101 - ScrCmd_110 VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 - SetVar VAR_UNK_0x40CC, 0 - Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 28, 3, 1 - LockAll - FadeScreenIn - WaitFadeScreen - ScrCmd_10C VAR_MAP_LOCAL_3 - ScrCmd_110 VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 - ScrCmd_107 VAR_0x8004 - ScrCmd_118 - ScrCmd_0FB VAR_MAP_LOCAL_2 - SetVar VAR_RESULT, 28 - Call _0052 - Call _008B - GoToIfEq VAR_RESULT, MENU_YES, _070D - Message 116 - WaitABXPadPress - CloseMessage - ReleaseAll - End - -_0947: - ClearFlag FLAG_UNK_0x0220 - SetVar VAR_UNK_0x40CC, 1 - Call _0D20 - PlayFanfare SEQ_SE_DP_KAIDAN2 - ClearFlag FLAG_UNK_0x0201 - ClearFlag FLAG_UNK_0x0202 - ClearFlag FLAG_UNK_0x0203 - ClearFlag FLAG_UNK_0x0204 - FadeScreenOut - WaitFadeScreen - Warp MAP_HEADER_CONTEST_HALL_STAGE_ONGOING_CONTEST, 0, 29, 7, 0 - LockAutoScrollForLinkContests - ScrCmd_10C VAR_MAP_LOCAL_3 - ScrCmd_113 - FadeScreenIn - WaitFadeScreen - ScrCmd_114 - ScrCmd_0F8 3 - ScrCmd_0F9 3 - PlayFanfare SEQ_SE_DP_CON_F007 - ApplyMovement 0, _0E38 - WaitMovement - ScrCmd_102 0 - ScrCmd_103 1 - MessageSynchronized 69 - ScrCmd_0F8 19 - ScrCmd_0F9 19 - ApplyMovement 0, _0E54 - WaitMovement - ScrCmd_0FD 0, 0 - MessageSynchronized 70 - ScrCmd_10B 0, VAR_RESULT - ScrCmd_111 0 - Call _0C47 - ScrCmd_112 - ScrCmd_0F8 20 - ScrCmd_0F9 20 - ApplyMovement 0, _0E5C - WaitMovement - ScrCmd_0FD 1, 0 - MessageSynchronized 71 - ScrCmd_10B 1, VAR_RESULT - ScrCmd_111 1 - Call _0C47 - ScrCmd_112 - ScrCmd_0F8 21 - ScrCmd_0F9 21 - WaitTime 8, VAR_RESULT - ScrCmd_0FD 2, 0 - MessageSynchronized 72 - ScrCmd_10B 2, VAR_RESULT - ScrCmd_111 2 - Call _0C47 - ScrCmd_112 - ScrCmd_0F8 22 - ScrCmd_0F9 22 - ApplyMovement 0, _0E64 - WaitMovement - ScrCmd_0FD 3, 0 - MessageSynchronized 73 - ScrCmd_10B 3, VAR_RESULT - ScrCmd_111 3 - Call _0C47 - ScrCmd_112 - ScrCmd_0F8 23 - ScrCmd_0F9 23 - ApplyMovement 0, _0E6C - WaitMovement - MessageSynchronized 74 - CloseMessage - ScrCmd_0F8 4 - ScrCmd_0F9 4 - PlayFanfare SEQ_SE_DP_CON_F007 - WaitTime 30, VAR_RESULT - ScrCmd_113 - FadeScreen FADE_SCREEN_CMD_STEPS, FADE_SCREEN_SPEED_FAST, FADE_TYPE_UNK_20, COLOR_BLACK - WaitFadeScreen - ScrCmd_114 - ScrCmd_2B1 - ScrCmd_101 - LockAutoScrollForLinkContests - ScrCmd_110 VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 - ScrCmd_10C VAR_MAP_LOCAL_3 - Call _0D3A - ScrCmd_2B0 - FadeScreenIn FADE_SCREEN_SPEED_FAST, COLOR_WHITE - WaitFadeScreen - ScrCmd_108 VAR_RESULT - ScrCmd_111 VAR_RESULT - ScrCmd_10B VAR_RESULT, VAR_RESULT - Call _0C47 - ScrCmd_112 - MessageSynchronized 76 - ScrCmd_115 VAR_RESULT - GoToIfEq VAR_RESULT, 1, _0B50 - ScrCmd_104 0 - ScrCmd_106 1 - ScrCmd_10E 2 - ScrCmd_10D VAR_RESULT - GoToIfEq VAR_RESULT, 0, _0B1B - MessageSynchronized 79 - GoTo _0B50 - -_0B1B: - MessageSynchronized 77 - CloseMessage - ApplyMovement 0, _0E64 - ApplyMovement 5, _0E54 - WaitMovement - WaitTime 15, VAR_RESULT - PlaySound SEQ_FANFA1 - WaitSound - ApplyMovement 0, _0E6C - ApplyMovement 5, _0E6C - WaitMovement -_0B50: - MessageSynchronized 78 - CloseMessage - PlayFanfare SEQ_SE_DP_CON_F007 - ScrCmd_108 VAR_RESULT - ScrCmd_111 VAR_RESULT - ScrCmd_10B VAR_RESULT, VAR_RESULT - Call _0C47 - ScrCmd_112 - WaitTime 30, VAR_RESULT - ScrCmd_0F8 24 - ScrCmd_0F9 24 - ScrCmd_2BB - WaitTime 10, VAR_RESULT - ScrCmd_2B1 - ScrCmd_113 - FadeScreen FADE_SCREEN_CMD_STEPS, FADE_SCREEN_SPEED_FAST, FADE_TYPE_UNK_20, COLOR_BLACK - WaitFadeScreen - ScrCmd_114 - ScrCmd_110 VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 - ScrCmd_10F VAR_0x8004 - ScrCmd_118 - ScrCmd_0FB VAR_MAP_LOCAL_2 - SetVar VAR_UNK_0x40CC, 0 - GoToIfEq VAR_MAP_LOCAL_3, 0, _0BF2 - Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 7, 3, 1 - FadeScreenIn - WaitFadeScreen - SetVar VAR_RESULT, 7 - Call _0052 - ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE - SetVar VAR_UNK_0x40D5, 0 - GoTo _0C45 - -_0BF2: - Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 18, 3, 1 - FadeScreenIn - WaitFadeScreen - SetVar VAR_RESULT, 19 - Call _0052 - Call _007F - GoToIfEq VAR_0x8004, -1, _0C3E - BufferPlayerName 0 - BufferAccessoryName 1, VAR_0x8004 - Message 80 - SetVar VAR_0x8005, 1 - Common_GiveAccessory -_0C3E: - Message 82 - WaitABXPadPress - CloseMessage -_0C45: - End - -_0C47: - PlayFanfare SEQ_SE_DP_CON_F007 - CallIfEq VAR_RESULT, 1, _0C8E - CallIfEq VAR_RESULT, 2, _0C98 - CallIfEq VAR_RESULT, 3, _0CAC - CallIfEq VAR_RESULT, 4, _0CC8 - CallIfGe VAR_RESULT, 5, _0CEE - Return - -_0C8E: - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - Return - -_0C98: - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - Return - -_0CAC: - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - Return - -_0CC8: - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - Return - -_0CEE: - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 10, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitTime 5, VAR_RESULT - PlayFanfare SEQ_SE_DP_CON_015 - WaitFanfare SEQ_SE_DP_CON_015 - Return - -_0D20: - ScrCmd_10A 0, VAR_OBJ_GFX_ID_0 - ScrCmd_10A 1, VAR_OBJ_GFX_ID_1 - ScrCmd_10A 2, VAR_OBJ_GFX_ID_2 - ScrCmd_10A 3, VAR_OBJ_GFX_ID_3 - Return - -_0D3A: - ScrCmd_108 VAR_RESULT - ScrCmd_10A VAR_RESULT, VAR_OBJ_GFX_ID_4 - ClearFlag FLAG_UNK_0x0205 - AddObject 5 - ScrCmd_108 VAR_MAP_LOCAL_0 - GoToIfEq VAR_MAP_LOCAL_0, 0, _0D86 - GoToIfEq VAR_MAP_LOCAL_0, 1, _0D8C - GoToIfEq VAR_MAP_LOCAL_0, 2, _0D92 - GoToIfEq VAR_MAP_LOCAL_0, 3, _0D98 - Return - -_0D86: - RemoveObject 1 - Return - -_0D8C: - RemoveObject 2 - Return - -_0D92: - RemoveObject 3 - Return - -_0D98: - RemoveObject 4 - Return - - .balign 4, 0 -_0DA0: - WalkNormalEast 2 - WalkNormalNorth 3 - WalkOnSpotNormalWest - EndMovement - - .balign 4, 0 -_0DB0: - WalkNormalEast 2 - WalkNormalNorth 3 - WalkOnSpotNormalWest - EndMovement - - .balign 4, 0 -_0DC0: - WalkNormalEast - WalkNormalNorth 3 - EndMovement - -Unk212_UnusedMovement: - Delay4 - FaceEast - Delay4 - FaceSouth - Delay2 - FaceWest - Delay1 - FaceNorth - Delay1 - FaceEast - Delay1 - FaceSouth - EndMovement - - .balign 4, 0 -_0E00: - WalkOnSpotNormalNorth - EndMovement - - .balign 4, 0 -_0E08: - Delay8 2 - WalkNormalNorth - WalkNormalEast - EndMovement - - .balign 4, 0 -_0E18: - Delay8 2 - WalkNormalNorth - WalkNormalEast - EndMovement - - .balign 4, 0 -_0E28: - Delay8 2 - WalkNormalNorth - WalkOnSpotNormalEast - EndMovement - - .balign 4, 0 -_0E38: - Delay8 2 - WalkOnSpotNormalWest - Delay8 - WalkOnSpotNormalEast - Delay8 - WalkOnSpotFastSouth - EndMovement - - .balign 4, 0 -_0E54: - WalkOnSpotNormalWest - EndMovement - - .balign 4, 0 -_0E5C: - WalkOnSpotNormalNorth - EndMovement - - .balign 4, 0 -_0E64: - WalkOnSpotNormalEast - EndMovement - - .balign 4, 0 -_0E6C: - WalkOnSpotNormalSouth - EndMovement - -_0E74: - PlayFanfare SEQ_SE_CONFIRM - LockAll - FacePlayer - SetVar VAR_MAP_LOCAL_3, 2 - SetVar VAR_0x8004, 0 - Message 111 - GoTo _0E93 - End - -_0E93: - Message 112 - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 113, 0 - AddMenuEntryImm 114, 1 - AddMenuEntryImm 115, 2 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _0EE1 - GoToIfEq VAR_0x8008, 1, _1169 - GoToIfEq VAR_0x8008, 2, _138E - GoTo _138E - End - -_0EE1: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 155, 0 - AddMenuEntryImm 156, 1 - AddMenuEntryImm 157, 2 - AddMenuEntryImm 158, 3 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _0F30 - GoToIfEq VAR_0x8008, 1, _0F44 - GoToIfEq VAR_0x8008, 2, _0F5E - GoTo _0F72 - End - -_0F30: - SetVar VAR_MAP_LOCAL_4, 0 - SetVar VAR_0x8007, 3 - GoTo _1027 - End - -_0F44: - SetVar VAR_MAP_LOCAL_4, 1 - SetVar VAR_0x8005, 0 - SetVar VAR_0x8007, 5 - GoTo _1027 - End - -_0F5E: - SetVar VAR_MAP_LOCAL_4, 0 - SetVar VAR_0x8007, 7 - GoTo _1027 - End - -_0F72: - Message 159 - WaitABXPadPress - GoTo _1393 - End - -Unk212_Unused: - Message 168 - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 169, 0 - AddMenuEntryImm 170, 1 - AddMenuEntryImm 171, 2 - AddMenuEntryImm 172, 3 - AddMenuEntryImm 173, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, Unk212_Unused2 - GoToIfEq VAR_0x8008, 1, Unk212_Unused3 - GoToIfEq VAR_0x8008, 2, Unk212_Unused4 - GoToIfEq VAR_0x8008, 3, Unk212_Unused5 - GoTo Unk212_Unused6 - End - -Unk212_Unused2: - SetVar VAR_0x8004, 0 - GoTo _1027 - End - -Unk212_Unused3: - SetVar VAR_0x8004, 1 - GoTo _1027 - End - -Unk212_Unused4: - SetVar VAR_0x8004, 2 - GoTo _1027 - End - -Unk212_Unused5: - SetVar VAR_0x8004, 3 - GoTo _1027 - End - -Unk212_Unused6: - Message 174 - WaitABXPadPress - GoTo _1393 - End - -_1027: - GoToIfEq VAR_MAP_LOCAL_4, 1, _1101 - GoTo _103A - -_103A: - Message 160 - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 161, 0 - AddMenuEntryImm 162, 1 - AddMenuEntryImm 163, 2 - AddMenuEntryImm 164, 3 - AddMenuEntryImm 165, 4 - AddMenuEntryImm 166, 5 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _10AE - GoToIfEq VAR_0x8008, 1, _10BC - GoToIfEq VAR_0x8008, 2, _10CA - GoToIfEq VAR_0x8008, 3, _10D8 - GoToIfEq VAR_0x8008, 4, _10E6 - GoTo _10F4 - End - -_10AE: - SetVar VAR_0x8005, CONTEST_TYPE_COOL - GoTo _1101 - End - -_10BC: - SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY - GoTo _1101 - End - -_10CA: - SetVar VAR_0x8005, CONTEST_TYPE_CUTE - GoTo _1101 - End - -_10D8: - SetVar VAR_0x8005, CONTEST_TYPE_SMART - GoTo _1101 - End - -_10E6: - SetVar VAR_0x8005, CONTEST_TYPE_TOUGH - GoTo _1101 - End - -_10F4: - Message 167 - WaitABXPadPress - GoTo _1393 - End - -_1101: - Message 175 - Message 176 - CloseMessage - FadeScreenOut - WaitFadeScreen - SetVar VAR_RESULT, 0 -_111B: - OpenPartyMenuForContest VAR_RESULT, VAR_0x8004, VAR_0x8005, 0 - ScrCmd_195 VAR_MAP_LOCAL_2, VAR_RESULT - GoToIfEq VAR_RESULT, 0, _1146 - ScrCmd_196 VAR_MAP_LOCAL_2 - ScrCmd_197 VAR_RESULT - GoTo _111B - -_1146: - ReturnToField - FadeScreenIn - WaitFadeScreen - GoToIfEq VAR_MAP_LOCAL_2, 0xFF, _10F4 - GoTo _070D - End - -_1169: - Message 117 -_116C: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 121, 0 - AddMenuEntryImm 118, 1 - AddMenuEntryImm 119, 2 - AddMenuEntryImm 120, 3 - AddMenuEntryImm 122, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _1375 - GoToIfEq VAR_0x8008, 1, _11CF - GoToIfEq VAR_0x8008, 2, _124A - GoToIfEq VAR_0x8008, 3, _12E1 - GoTo _0E93 - End - -_11CC: - Message 117 -_11CF: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 125, 0 - AddMenuEntryImm 126, 1 - AddMenuEntryImm 127, 2 - AddMenuEntryImm 129, 3 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _121E - GoToIfEq VAR_0x8008, 1, _1229 - GoToIfEq VAR_0x8008, 2, _1234 - GoTo _123F - End - -_121E: - Message 130 - GoTo _11CC - End - -_1229: - Message 131 - GoTo _11CC - End - -_1234: - Message 132 - GoTo _11CC - End - -_123F: - GoTo _116C - End - -_1247: - Message 117 -_124A: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 135, 0 - AddMenuEntryImm 136, 1 - AddMenuEntryImm 137, 2 - AddMenuEntryImm 138, 3 - AddMenuEntryImm 139, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _12AA - GoToIfEq VAR_0x8008, 1, _12B5 - GoToIfEq VAR_0x8008, 2, _12C0 - GoToIfEq VAR_0x8008, 3, _12CB - GoTo _12D6 - End - -_12AA: - Message 140 - GoTo _1247 - End - -_12B5: - Message 141 - GoTo _1247 - End - -_12C0: - Message 142 - GoTo _1247 - End - -_12CB: - Message 143 - GoTo _1247 - End - -_12D6: - GoTo _116C - End - -_12DE: - Message 117 -_12E1: - InitLocalTextMenu 1, 1, 0, VAR_RESULT - AddMenuEntryImm 145, 0 - AddMenuEntryImm 146, 1 - AddMenuEntryImm 147, 2 - AddMenuEntryImm 148, 3 - AddMenuEntryImm 149, 4 - ShowMenu - SetVar VAR_0x8008, VAR_RESULT - GoToIfEq VAR_0x8008, 0, _1341 - GoToIfEq VAR_0x8008, 1, _134C - GoToIfEq VAR_0x8008, 2, _1357 - GoToIfEq VAR_0x8008, 3, _1362 - GoTo _136D - End - -_1341: - Message 150 - GoTo _12DE - End - -_134C: - Message 151 - GoTo _12DE - End - -_1357: - Message 152 - GoTo _12DE - End - -_1362: - Message 153 - GoTo _12DE - End - -_136D: - GoTo _116C - End - -_1375: - Message 124 - Message 117 - GoTo _116C - End - -Unk212_Unused7: - Message 123 - GoTo _1393 - End - -_138E: - Message 116 - WaitABXPadPress -_1393: - CloseMessage - ReleaseAll - End - -ContestRegistration_LinkContestRecordsDisplay: - PlayFanfare SEQ_SE_CONFIRM - LockAll - ShowLinkContestRecords - ReleaseAll - End - - .balign 4, 0 diff --git a/res/field/scripts/scripts_contests.s b/res/field/scripts/scripts_contests.s new file mode 100644 index 0000000000..850bd72aa3 --- /dev/null +++ b/res/field/scripts/scripts_contests.s @@ -0,0 +1,1412 @@ +#include "macros/scrcmd.inc" +#include "res/field/events/events_contest_hall_stage_ongoing_contest.h" +#include "res/field/events/events_contest_hall_lobby.h" +#include "res/text/bank/contest_registration.h" +#include "res/text/bank/menu_entries.h" + +#include "constants/communication/comm_type.h" +#include "constants/contests.h" +#include "constants/map_object.h" +#include "constants/pokemon.h" +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" + + + ScriptEntry _0036 @ 0x2648 + ScriptEntry ContestRegistration_Dummy @ 0x2649 + ScriptEntry OngoingContest_OnTransition @ 0x264A + ScriptEntry ContestHallLobby_OnTransition @ 0x264B + ScriptEntry _01D4 @ 0x264C + ScriptEntry _01E9 @ 0x264D + ScriptEntry ContestRegistration_ReceptionistOfficialContest @ 0x264E + ScriptEntry ContestRegistration_ReceptionistLinkContest @ 0x264F + ScriptEntry ContestRegistration_ReceptionistPracticeContest @ 0x2650 + ScriptEntry ContestRegistration_ReceptionistPracticeContest @ 0x2651 + ScriptEntry ContestRegistration_ReceptionistPracticeContest @ 0x2652 + ScriptEntry ContestRegistration_ReceptionistPracticeContest @ 0x2653 + ScriptEntry ContestRegistration_LinkContestRecordsDisplay @ 0x2654 + ScriptEntryEnd + +_0036: + LockAll + SetVar VAR_RESULT, 7 + Call ContestRegistration_Movement_ExitContestHall + ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE + SetVar VAR_UNK_0x40D5, 0 + ReleaseAll + End + +ContestRegistration_Movement_ExitContestHall: + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_WalkSouth + WaitMovement + LoadDoorAnimation 0, 0, VAR_RESULT, 5, ANIMATION_TAG_DOOR_1 + Call ContestRegistration_OpenDoor + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_WalkSouth2 + WaitMovement + Call ContestRegistration_CloseDoor + Return + +ContestRegistration_Movement_ReturnToReceptionist: + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_WalkWest2FaceNorth + WaitMovement + Return + +ContestRegistration_AssessPracticeResults: + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_ToPracticeReceptionist + WaitMovement + CallIfEq VAR_0x8007, CONTEST_COMPETITION_PRACTICE_VISUAL, ContestRegistration_CompletedVisualPractice + CallIfEq VAR_0x8007, CONTEST_COMPETITION_PRACTICE_DANCE, ContestRegistration_CompletedDancePractice + CallIfEq VAR_0x8007, CONTEST_COMPETITION_PRACTICE_ACTING, ContestRegistration_CompletedActingPractice + SetVar VAR_0x8004, 0 + ShowYesNoMenu VAR_RESULT + Return + +ContestRegistration_CompletedVisualPractice: + GoToIfGt VAR_0x8004, 1, ContestRegistration_FailedVisualPractice + Message ContestRegistration_Text_CompletedVisualPractice + Return + +ContestRegistration_FailedVisualPractice: + Message ContestRegistration_Text_FailedVisualPractice + Return + +ContestRegistration_CompletedDancePractice: + GoToIfGt VAR_0x8004, 1, ContestRegistration_FailedDancePractice + Message ContestRegistration_Text_CompletedDancePractice + Return + +ContestRegistration_FailedDancePractice: + Message ContestRegistration_Text_FailedDancePractice + Return + +ContestRegistration_CompletedActingPractice: + GoToIfGt VAR_0x8004, 1, ContestRegistration_FailedActingPractice + Message ContestRegistration_Text_CompletedActingPractice + Return + +ContestRegistration_FailedActingPractice: + Message ContestRegistration_Text_FailedActingPractice + Return + +ContestRegistration_OpenDoor: + PlayDoorOpenAnimation ANIMATION_TAG_DOOR_1 + WaitForAnimation ANIMATION_TAG_DOOR_1 + Return + +ContestRegistration_CloseDoor: + PlayDoorCloseAnimation ANIMATION_TAG_DOOR_1 + WaitForAnimation ANIMATION_TAG_DOOR_1 + UnloadAnimation ANIMATION_TAG_DOOR_1 + Return + + .balign 4, 0 +ContestRegistration_Movement_WalkSouth: + WalkNormalSouth + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_WalkSouth2: + WalkNormalSouth 2 + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_ToPracticeReceptionist: + WalkNormalWest + WalkOnSpotFastNorth + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_WalkWest2FaceNorth: + WalkNormalWest 2 + WalkOnSpotFastNorth + EndMovement + +ContestRegistration_Dummy: + End + +OngoingContest_OnTransition: + CallIfEq VAR_ONGOING_CONTEST, FALSE, OngoingContest_HideContestObjects + GoToIfEq VAR_ONGOING_CONTEST, FALSE, OngoingContest_End + HidePoketch +OngoingContest_End: + End + +OngoingContest_HideContestObjects: + SetVar VAR_ONGOING_CONTEST, FALSE + SetFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT1 + SetFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT2 + SetFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT3 + SetFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT4 + SetFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT_WINNER + Return + +ContestHallLobby_OnTransition: + ShowPoketch + Call _01B1 + Call OngoingContest_HideContestObjects + CheckTVInterviewEligible TV_PROGRAM_SEGMENT_CONTEST_HALL, VAR_MAP_LOCAL_0 + GoToIfEq VAR_MAP_LOCAL_0, FALSE, ContestHallLobby_HideReporter + ClearFlag FLAG_HIDE_CONTEST_HALL_LOBBY_REPORTER + End + +ContestHallLobby_HideReporter: + SetFlag FLAG_HIDE_CONTEST_HALL_LOBBY_REPORTER + End + +_01B1: + GoToIfSet FLAG_UNK_0x0159, _01BE + Return + +_01BE: + SetObjectEventPos CONTEST_HALL_LOBBY_RICH_BOY, 24, 6 + SetObjectEventMovementType CONTEST_HALL_LOBBY_RICH_BOY, MOVEMENT_TYPE_LOOK_SOUTH + SetObjectEventDir CONTEST_HALL_LOBBY_RICH_BOY, DIR_SOUTH + Return + +_01D4: + CallIfEq VAR_ONGOING_CONTEST, TRUE, _01E3 + End + +_01E3: + HideObject LOCALID_PLAYER + Return + +_01E9: + NPCMessage 0 + End + +ContestRegistration_ReceptionistOfficialContest: + PlayFanfare SEQ_SE_CONFIRM + LockAll + FacePlayer + SetVar VAR_MAP_LOCAL_3, CONTEST_MODE_OFFICIAL + SetVar VAR_0x8007, CONTEST_COMPETITION_LINK_OR_OFFICIAL + Message ContestRegistration_Text_Welcome + GoTo ContestRegistration_Receptionists_WouldYouLikeToEnterContest + End + +ContestRegistration_ReceptionistLinkContest: + PlayFanfare SEQ_SE_CONFIRM + LockAll + FacePlayer + SetVar VAR_MAP_LOCAL_3, CONTEST_MODE_LINK + SetVar VAR_0x8007, CONTEST_COMPETITION_LINK_OR_OFFICIAL + Message ContestRegistration_Text_WelcomeLinkContest + GoTo ContestRegistration_Receptionists_WouldYouLikeToEnterContest + End + +ContestRegistration_Receptionists_WouldYouLikeToEnterContest: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_ReceptionistLinkContest_WouldYouLikeToEnterContest + Message ContestRegistration_Text_WouldYouLikeToEnterAContest + GoTo ContestRegistration_Receptionists_ContestMenu + + +#define Receptionists_ContestMenuItem_Enter 0 +#define Receptionists_ContestMenuItem_Info 1 +#define Receptionists_ContestMenuItem_Exit 2 + +ContestRegistration_ReceptionistLinkContest_WouldYouLikeToEnterContest: + Message ContestRegistration_Text_WouldYouLikeToEnterLinkContest +ContestRegistration_Receptionists_ContestMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_Enter, Receptionists_ContestMenuItem_Enter + AddMenuEntryImm ContestRegistration_Text_Info1, Receptionists_ContestMenuItem_Info + AddMenuEntryImm ContestRegistration_Text_Exit1, Receptionists_ContestMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, Receptionists_ContestMenuItem_Enter, ContestRegistration_Receptionists_ContestMenuItem_EnterSelected + GoToIfEq VAR_0x8008, Receptionists_ContestMenuItem_Info, ContestRegistration_Receptionists_ContestMenuItem_InfoSelected + GoTo ContestRegistration_Receptionists_ContestMenuExit + End + +ContestRegistration_Receptionists_ContestMenuExit: + EndCommunication + SetVar VAR_UNK_0x40D5, 0 + ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE + Message ContestRegistration_Text_LookForwardToYourParticipationAnotherTime + WaitABXPadPress + CloseMessage + ReleaseAll + End + +ContestRegistration_Receptionists_ContestMenuItem_EnterSelected: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_ReceptionistLinkContest_EnterLinkContest + GoTo ContestRegistration_ReceptionistOfficialContest_ContestRankMenu + End + +ContestRegistration_ReceptionistLinkContest_EnterLinkContest: + HealParty + ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE + Common_SaveGame + SetVar VAR_RESULT, VAR_MAP_LOCAL_0 @ VAR_MAP_LOCAL_0 is set in CommonScript_SaveGame + GoToIfEq VAR_RESULT, TRUE, ContestRegistration_ReceptionistLinkContest_SavedGame + GoTo ContestRegistration_Receptionists_ContestMenuExit + End + +ContestRegistration_ReceptionistLinkContest_SavedGame: + SetVar VAR_0x8004, 2 + GoTo ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu + End + +ContestRegistration_Receptionists_ContestMenuItem_InfoSelected: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_ReceptionistLinkContest_LinkContestInfo + GoTo ContestRegistration_ReceptionistOfficialContest_InfoMenuEntry + End + +ContestRegistration_ReceptionistLinkContest_LinkContestInfo: + Message ContestRegistration_Text_ExplainLinkContest + GoTo ContestRegistration_Receptionists_WouldYouLikeToEnterContest + + +#define ReceptionistOfficialContest_InfoMenuItem_ContestBasics 0 +#define ReceptionistOfficialContest_InfoMenuItem_TypesOfContests 1 +#define ReceptionistOfficialContest_InfoMenuItem_ContestRanks 2 +#define ReceptionistOfficialContest_InfoMenuItem_Cancel 3 + +ContestRegistration_ReceptionistOfficialContest_InfoMenuEntry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow1 +ContestRegistration_ReceptionistOfficialContest_InfoMenu: + InitGlobalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm MenuEntries_Text_ContestRegistration_ContestBasics, ReceptionistOfficialContest_InfoMenuItem_ContestBasics + AddMenuEntryImm MenuEntries_Text_ContestRegistration_TypesOfContests, ReceptionistOfficialContest_InfoMenuItem_TypesOfContests + AddMenuEntryImm MenuEntries_Text_ContestRegistration_ContestRanks, ReceptionistOfficialContest_InfoMenuItem_ContestRanks + AddMenuEntryImm MenuEntries_Text_ContestRegistration_Cancel, ReceptionistOfficialContest_InfoMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoMenuItem_ContestBasics, GoTo_ContestRegistration_ReceptionistOfficialContest_InfoContestBasics + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoMenuItem_TypesOfContests, ContestRegistration_ReceptionistOfficialContest_InfoTypesOfContests + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoMenuItem_ContestRanks, ContestRegistration_ReceptionistOfficialContest_InfoContestRanks + GoTo ContestRegistration_Receptionists_WouldYouLikeToEnterContest + End + +GoTo_ContestRegistration_ReceptionistOfficialContest_InfoContestBasics: + GoTo ContestRegistration_ReceptionistOfficialContest_InfoContestBasics + End + +ContestRegistration_ReceptionistOfficialContest_InfoTypesOfContests: + Message ContestRegistration_Text_ExplainContestTypes + GoTo ContestRegistration_ReceptionistOfficialContest_InfoMenuEntry + End + +ContestRegistration_ReceptionistOfficialContest_InfoContestRanks: + Message ContestRegistration_Text_ExplainContestRanks + GoTo ContestRegistration_ReceptionistOfficialContest_InfoMenuEntry + End + +#define ReceptionistOfficialContest_InfoContestBasicsMenuItem_WhatsAContest 0 +#define ReceptionistOfficialContest_InfoContestBasicsMenuItem_VisualCompetition 1 +#define ReceptionistOfficialContest_InfoContestBasicsMenuItem_DanceCompetition 2 +#define ReceptionistOfficialContest_InfoContestBasicsMenuItem_ActingCompetition 3 +#define ReceptionistOfficialContest_InfoContestBasicsMenuItem_CancelCompetition 4 + +ContestRegistration_ReceptionistOfficialContest_InfoContestBasicsReentry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 +ContestRegistration_ReceptionistOfficialContest_InfoContestBasics: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_WhatsAContest, ReceptionistOfficialContest_InfoContestBasicsMenuItem_WhatsAContest + AddMenuEntryImm ContestRegistration_Text_VisualCompetition, ReceptionistOfficialContest_InfoContestBasicsMenuItem_VisualCompetition + AddMenuEntryImm ContestRegistration_Text_DanceCompetition, ReceptionistOfficialContest_InfoContestBasicsMenuItem_DanceCompetition + AddMenuEntryImm ContestRegistration_Text_ActingCompetition, ReceptionistOfficialContest_InfoContestBasicsMenuItem_ActingCompetition + AddMenuEntryImm ContestRegistration_Text_CancelCompetition, ReceptionistOfficialContest_InfoContestBasicsMenuItem_CancelCompetition + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoContestBasicsMenuItem_WhatsAContest, ContestRegistration_ReceptionistOfficialContest_WhatsAContest + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoContestBasicsMenuItem_VisualCompetition, ContestRegistration_ReceptionistOfficialContest_VisualCompetition + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoContestBasicsMenuItem_DanceCompetition, ContestRegistration_ReceptionistOfficialContest_DanceCompetition + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_InfoContestBasicsMenuItem_ActingCompetition, ContestRegistration_ReceptionistOfficialContest_ActingCompetition + GoTo ContestRegistration_ReceptionistOfficialContest_InfoMenu + End + +ContestRegistration_ReceptionistOfficialContest_WhatsAContest: + Message ContestRegistration_Text_ExplainOfficialContest + GoTo ContestRegistration_ReceptionistOfficialContest_InfoContestBasicsReentry + End + +ContestRegistration_ReceptionistOfficialContest_VisualCompetition: + Message ContestRegistration_Text_ExplainVisualContest + GoTo ContestRegistration_ReceptionistOfficialContest_InfoContestBasicsReentry + End + +ContestRegistration_ReceptionistOfficialContest_DanceCompetition: + Message ContestRegistration_Text_ExplainDanceContest + GoTo ContestRegistration_ReceptionistOfficialContest_InfoContestBasicsReentry + End + +ContestRegistration_ReceptionistOfficialContest_ActingCompetition: + Message ContestRegistration_Text_ExplainActingContest + GoTo ContestRegistration_ReceptionistOfficialContest_InfoContestBasicsReentry + End + + +#define ReceptionistOfficialContest_ContestRankMenuItem_NormalRank 0 +#define ReceptionistOfficialContest_ContestRankMenuItem_GreatRank 1 +#define ReceptionistOfficialContest_ContestRankMenuItem_UltraRank 2 +#define ReceptionistOfficialContest_ContestRankMenuItem_MasterRank 3 +#define ReceptionistOfficialContest_ContestRankMenuItem_Exit 4 + +ContestRegistration_ReceptionistOfficialContest_ContestRankMenu: + Message ContestRegistration_Text_SelectRank + InitGlobalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm MenuEntries_Text_ContestRegistration_NormalRank, ReceptionistOfficialContest_ContestRankMenuItem_NormalRank + AddMenuEntryImm MenuEntries_Text_ContestRegistration_GreatRank, ReceptionistOfficialContest_ContestRankMenuItem_GreatRank + AddMenuEntryImm MenuEntries_Text_ContestRegistration_UltraRank, ReceptionistOfficialContest_ContestRankMenuItem_UltraRank + AddMenuEntryImm MenuEntries_Text_ContestRegistration_MasterRank, ReceptionistOfficialContest_ContestRankMenuItem_MasterRank + AddMenuEntryImm MenuEntries_Text_ContestRegistration_ContestRankExit, ReceptionistOfficialContest_ContestRankMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestRankMenuItem_NormalRank, ContestRegistration_ReceptionistOfficialContest_NormalRank + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestRankMenuItem_GreatRank, ContestRegistration_ReceptionistOfficialContest_GreatRank + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestRankMenuItem_UltraRank, ContestRegistration_ReceptionistOfficialContest_UltraRank + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestRankMenuItem_MasterRank, ContestRegistration_ReceptionistOfficialContest_MasterRank + GoTo ContestRegistration_Receptionists_ContestMenuExit + End + +ContestRegistration_ReceptionistOfficialContest_NormalRank: + SetVar VAR_0x8004, CONTEST_RANK_NORMAL + GoTo ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu + End + +ContestRegistration_ReceptionistOfficialContest_GreatRank: + SetVar VAR_0x8004, CONTEST_RANK_GREAT + GoTo ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu + End + +ContestRegistration_ReceptionistOfficialContest_UltraRank: + SetVar VAR_0x8004, CONTEST_RANK_ULTRA + GoTo ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu + End + +ContestRegistration_ReceptionistOfficialContest_MasterRank: + SetVar VAR_0x8004, CONTEST_RANK_MASTER + GoTo ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu + End + + +#define ReceptionistOfficialContest_ContestTypeMenuItem_Cool 0 +#define ReceptionistOfficialContest_ContestTypeMenuItem_Beauty 1 +#define ReceptionistOfficialContest_ContestTypeMenuItem_Cute 2 +#define ReceptionistOfficialContest_ContestTypeMenuItem_Smart 3 +#define ReceptionistOfficialContest_ContestTypeMenuItem_Tough 4 +#define ReceptionistOfficialContest_ContestTypeMenuItem_Exit 5 + +ContestRegistration_ReceptionistOfficialContest_ContestTypeMenu: + Message ContestRegistration_Text_SelectContestType + InitGlobalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm MenuEntries_Text_ContestRegistration_CoolContest, ReceptionistOfficialContest_ContestTypeMenuItem_Cool + AddMenuEntryImm MenuEntries_Text_ContestRegistration_BeautyContest, ReceptionistOfficialContest_ContestTypeMenuItem_Beauty + AddMenuEntryImm MenuEntries_Text_ContestRegistration_CuteContest, ReceptionistOfficialContest_ContestTypeMenuItem_Cute + AddMenuEntryImm MenuEntries_Text_ContestRegistration_SmartContest, ReceptionistOfficialContest_ContestTypeMenuItem_Smart + AddMenuEntryImm MenuEntries_Text_ContestRegistration_ToughContest, ReceptionistOfficialContest_ContestTypeMenuItem_Tough + AddMenuEntryImm MenuEntries_Text_ContestRegistration_ContestTypeExit, ReceptionistOfficialContest_ContestTypeMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestTypeMenuItem_Cool, ContestRegistration_ReceptionistOfficialContest_SelectContestTypeCool + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestTypeMenuItem_Beauty, ContestRegistration_ReceptionistOfficialContest_SelectContestTypeBeauty + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestTypeMenuItem_Cute, ContestRegistration_ReceptionistOfficialContest_SelectContestTypeCute + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestTypeMenuItem_Smart, ContestRegistration_ReceptionistOfficialContest_SelectContestTypeSmart + GoToIfEq VAR_0x8008, ReceptionistOfficialContest_ContestTypeMenuItem_Tough, ContestRegistration_ReceptionistOfficialContest_SelectContestTypeTough + GoTo ContestRegistration_Receptionists_ContestMenuExit + End + +ContestRegistration_ReceptionistOfficialContest_SelectContestTypeCool: + SetVar VAR_0x8005, CONTEST_TYPE_COOL + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_ReceptionistOfficialContest_SelectContestTypeBeauty: + SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_ReceptionistOfficialContest_SelectContestTypeCute: + SetVar VAR_0x8005, CONTEST_TYPE_CUTE + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_ReceptionistOfficialContest_SelectContestTypeSmart: + SetVar VAR_0x8005, CONTEST_TYPE_SMART + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_ReceptionistOfficialContest_SelectContestTypeTough: + SetVar VAR_0x8005, CONTEST_TYPE_TOUGH + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_Receptionists_RegisterMon: + Message ContestRegistration_Text_EnterWhichPokemon1 + Message ContestRegistration_Text_PleaseChoosePokemon1 + CloseMessage + FadeScreenOut + WaitFadeScreen + CallIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_OFFICIAL, ContestRegistration_ReceptionistOfficialContest_UseSelectedContestRank + CallIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_ReceptionistLinkContest_UseDefaultContestRank + SetVar VAR_RESULT, 0 +ContestRegistration_Receptionists_TryRegisterMon: + OpenPartyMenuForContest VAR_RESULT, VAR_0x8004, VAR_0x8005, VAR_MAP_LOCAL_4 + TryEnterContestMon VAR_MAP_LOCAL_2, VAR_RESULT + GoToIfEq VAR_RESULT, 0, ContestRegistration_Receptionists_RegisterMonDone + SetMonSummary VAR_MAP_LOCAL_2 + GetMonPartySlot VAR_RESULT + GoTo ContestRegistration_Receptionists_TryRegisterMon + +ContestRegistration_Receptionists_RegisterMonDone: + ReturnToField + FadeScreenIn + WaitFadeScreen + GoToIfEq VAR_MAP_LOCAL_2, PARTY_SLOT_NONE, ContestRegistration_Receptionists_ConfirmCancelEntry + GoTo ContestRegistration_Receptionists_PreContestControl + End + +ContestRegistration_Receptionists_ConfirmCancelEntry: + Message ContestRegistration_Text_CancelEntry + ShowYesNoMenu VAR_RESULT + GoToIfEq VAR_RESULT, MENU_YES, ContestRegistration_Receptionists_ContestMenuExit + GoTo ContestRegistration_Receptionists_RegisterMon + End + +ContestRegistration_ReceptionistOfficialContest_UseSelectedContestRank: + SetVar VAR_MAP_LOCAL_4, FALSE + Return + +ContestRegistration_ReceptionistLinkContest_UseDefaultContestRank: + SetVar VAR_MAP_LOCAL_4, TRUE + Return + +ContestRegistration_Receptionists_PreContestControl: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_ReceptionistLinkContest_EstablishGroup + GoTo ContestRegistration_StartContest + End + + +#define ReceptionistLinkContest_EstablishGroupMenuItem_JoinGroup 0 +#define ReceptionistLinkContest_EstablishGroupMenuItem_BecomeLeader 1 +#define ReceptionistLinkContest_EstablishGroupMenuItem_Exit 2 + +ContestRegistration_ReceptionistLinkContest_EstablishGroup: + Message ContestRegistration_Text_OnePersonMustBeLeader + InitGlobalTextMenu 30, 1, 0, VAR_RESULT + SetMenuXOriginToRight + AddMenuEntryImm MenuEntries_Text_BattleTower_JoinGroup, ReceptionistLinkContest_EstablishGroupMenuItem_JoinGroup + AddMenuEntryImm MenuEntries_Text_BattleTower_BecomeLeader, ReceptionistLinkContest_EstablishGroupMenuItem_BecomeLeader + AddMenuEntryImm MenuEntries_Text_Exit, ReceptionistLinkContest_EstablishGroupMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistLinkContest_EstablishGroupMenuItem_JoinGroup, ContestRegistration_ReceptionistLinkContest_JoinGroup + GoToIfEq VAR_0x8008, ReceptionistLinkContest_EstablishGroupMenuItem_BecomeLeader, ContestRegistration_ReceptionistLinkContest_BecomeLeader + GoTo ContestRegistration_Receptionists_ContestMenuExit + End + +ContestRegistration_ReceptionistLinkContest_JoinGroup: + Message ContestRegistration_Text_CommunicatingWillBeLaunched + ShowYesNoMenu VAR_RESULT + GoToIfEq VAR_RESULT, MENU_NO, ContestRegistration_ReceptionistLinkContest_EstablishGroup + CloseMessage + StartBattleClient COMM_TYPE_CONTEST, VAR_0x8005, VAR_0x8004, VAR_RESULT + GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup1 + GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup2 + GoTo ContestRegistration_StartContest + End + +GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup1: + GoTo ContestRegistration_ReceptionistLinkContest_EstablishGroup + End + +GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup2: + GoTo ContestRegistration_ReceptionistLinkContest_EstablishGroup + End + +ContestRegistration_ReceptionistLinkContest_BecomeLeader: + Message ContestRegistration_Text_CommunicatingWillBeLaunched + ShowYesNoMenu VAR_RESULT + GoToIfEq VAR_RESULT, MENU_NO, ContestRegistration_ReceptionistLinkContest_EstablishGroup + CloseMessage + StartBattleServer COMM_TYPE_CONTEST, VAR_0x8005, VAR_0x8004, VAR_RESULT + GoToIfEq VAR_RESULT, COMM_CLUB_RET_CANCEL, GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup3 + GoToIfEq VAR_RESULT, COMM_CLUB_RET_ERROR, ContestRegistration_ReceptionistLinkContest_End + GoTo ContestRegistration_StartContest + End + +GoTo_ContestRegistration_ReceptionistLinkContest_EstablishGroup3: + GoTo ContestRegistration_ReceptionistLinkContest_EstablishGroup + End + +ContestRegistration_ReceptionistLinkContest_End: + EndCommunication + CloseMessage + ReleaseAll + End + +ContestRegistration_StartContest: + NewContest VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 + CallIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_SetupLinkContest + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_PRACTICE, ContestRegistration_RegisteredForPractice + GetContestRegistrationEntryNum VAR_RESULT + AddVar VAR_RESULT, 1 + BufferContestRegistrationEntryNumber VAR_RESULT, 0 + MessageSynchronized ContestRegistration_Text_YourPokemonHasBeenAccepted + GetContestRegistrationEntryNum VAR_RESULT + BufferContestantTrainerName VAR_RESULT, 0 + BufferContestantMonName VAR_RESULT, 1 + MessageSynchronized ContestRegistration_Text_TheContestWillStartRightAway + StartContestCommSync 25 + WaitForCommSyncState 25 + CloseMessage +ContestRegistration_SelectContestDoor: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_OFFICIAL, ContestRegistration_OfficialContestDoor + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_LINK, ContestRegistration_LinkContestDoor + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_PRACTICE, ContestRegistration_PracticeContestDoor + End + +ContestRegistration_RegisteredForPractice: + GetContestRegistrationEntryNum VAR_RESULT + AddVar VAR_RESULT, 1 + BufferContestRegistrationEntryNumber VAR_RESULT, 0 + Message ContestRegistration_Text_YourPokemonRegisteredForPractice + GetContestRegistrationEntryNum VAR_RESULT + BufferContestantTrainerName VAR_RESULT, 0 + BufferContestantMonName VAR_RESULT, 1 + CloseMessage + GoTo ContestRegistration_SelectContestDoor + +ContestRegistration_SetupLinkContest: + Message ContestRegistration_Text_CommunicatingStandBy + WaitForLinkContestSetup + Return + +ContestRegistration_OfficialContestDoor: + LoadDoorAnimation 0, 0, 19, 5, ANIMATION_TAG_DOOR_1 + Call ContestRegistration_OpenDoor + WaitMovement + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_PlayerToOfficialContestDoor + ApplyMovement CONTEST_HALL_LOBBY_RECEPTIONIST_OFFICIAL_CONTEST, ContestRegistration_Movement_OfficialContestReceptionistToPlayer + WaitMovement + Call ContestRegistration_CloseDoor + WaitMovement + GoTo ContestRegistration_ChangeIntoContestAttire + End + +ContestRegistration_LinkContestDoor: + SetFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE + SetVar VAR_UNK_0x40D5, 5 + LoadDoorAnimation 0, 0, 7, 5, ANIMATION_TAG_DOOR_1 + Call ContestRegistration_OpenDoor + WaitMovement + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_PlayerToLinkContestDoor + ApplyMovement CONTEST_HALL_LOBBY_RECEPTIONIST_LINK_CONTEST, ContestRegistration_Movement_LinkContestReceptionistToPlayer + WaitMovement + Call ContestRegistration_CloseDoor + WaitMovement + GoTo ContestRegistration_ChangeIntoContestAttire + End + +ContestRegistration_PracticeContestDoor: + LoadDoorAnimation 0, 0, 28, 5, ANIMATION_TAG_DOOR_1 + Call ContestRegistration_OpenDoor + WaitMovement + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_ApproachPracticeContestDoor + ApplyMovement CONTEST_HALL_LOBBY_RECEPTIONIST_PRACTICE_CONTEST, ContestRegistration_Movement_PracticeReceptionistToPlayer + WaitMovement + Call ContestRegistration_CloseDoor + WaitMovement + MessageSynchronized ContestRegistration_Text_RightThisWayPlease2 + CloseMessage + GoTo ContestRegistration_ChangeIntoContestAttire + End + +ContestRegistration_ChangeIntoContestAttire: + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_PRACTICE, ContestRegistration_StartPracticeContest + ChangeIntoContestAttire + GetPlayerGender VAR_RESULT + GoToIfEq VAR_RESULT, GENDER_MALE, ContestRegistration_PlayerChangedIntoTuxedo + GoTo ContestRegistration_PlayerChangedIntoDress + End + +ContestRegistration_PlayerChangedIntoTuxedo: + BufferPlayerName 0 + MessageSynchronized ContestRegistration_Text_PlayerChangedIntoTuxedo + GoTo ContestRegistration_ThisWayToContestHall + End + +ContestRegistration_PlayerChangedIntoDress: + BufferPlayerName 0 + MessageSynchronized ContestRegistration_Text_PlayerChangedIntoDress + GoTo ContestRegistration_ThisWayToContestHall + End + +ContestRegistration_ThisWayToContestHall: + ApplyMovement LOCALID_PLAYER, ContestRegistration_Movement_FaceContestHall + WaitMovement + MessageSynchronized ContestRegistration_Text_RightThisWayPlease1 + StartContestCommSync 26 + WaitForCommSyncState 26 + CloseMessage + GoTo Contest_DoContest + End + +ContestRegistration_StartPracticeContest: + FadeScreenOut + WaitFadeScreen + RunContestApplication + GetContestInfo VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 + SetVar VAR_ONGOING_CONTEST, FALSE + Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 28, 3, 1 + LockAll + FadeScreenIn + WaitFadeScreen + GetContestMode VAR_MAP_LOCAL_3 + GetContestInfo VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 + GetPlayerContestPlacement VAR_0x8004 + LockTextSpeed + EndContest VAR_MAP_LOCAL_2 + SetVar VAR_RESULT, 28 + Call ContestRegistration_Movement_ExitContestHall + Call ContestRegistration_AssessPracticeResults + GoToIfEq VAR_RESULT, MENU_YES, ContestRegistration_StartContest + Message ContestRegistration_Text_WeLookForwardToYourNextVisit1 + WaitABXPadPress + CloseMessage + ReleaseAll + End + +Contest_DoContest: + ClearFlag FLAG_UNK_0x0220 + SetVar VAR_ONGOING_CONTEST, TRUE + Call OngoingContest_GetContestantGFX + PlayFanfare SEQ_SE_DP_KAIDAN2 + ClearFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT1 + ClearFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT2 + ClearFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT3 + ClearFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT4 + FadeScreenOut + WaitFadeScreen + Warp MAP_HEADER_CONTEST_HALL_STAGE_ONGOING_CONTEST, 0, 29, 7, 0 + LockAutoScrollForLinkContests + GetContestMode VAR_MAP_LOCAL_3 + StopHBlank + FadeScreenIn + WaitFadeScreen + StartHBlank + StartContestCommSync 3 + WaitForCommSyncState 3 + PlayFanfare SEQ_SE_DP_CON_F007 + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_LookAround + WaitMovement + BufferContestRank 0 + BufferContestType 1 + MessageSynchronized ContestRegistration_Text_WeAreAboutToGetUnderWay + StartContestCommSync 19 + WaitForCommSyncState 19 + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_LookWest + WaitMovement + BufferContestantTrainerName 0, 0 + MessageSynchronized ContestRegistration_Text_IntroduceFirstContestant + GetContestantMonContestFame 0, VAR_RESULT + StartContestCameraFlashTask 0 + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + StartContestCommSync 20 + WaitForCommSyncState 20 + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_DexterLookNorth + WaitMovement + BufferContestantTrainerName 1, 0 + MessageSynchronized ContestRegistration_Text_IntroduceSecondContestant + GetContestantMonContestFame 1, VAR_RESULT + StartContestCameraFlashTask 1 + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + StartContestCommSync 21 + WaitForCommSyncState 21 + WaitTime 8, VAR_RESULT + BufferContestantTrainerName 2, 0 + MessageSynchronized ContestRegistration_Text_IntroduceThirdContestant + GetContestantMonContestFame 2, VAR_RESULT + StartContestCameraFlashTask 2 + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + StartContestCommSync 22 + WaitForCommSyncState 22 + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_DexterLookEast + WaitMovement + BufferContestantTrainerName 3, 0 + MessageSynchronized ContestRegistration_Text_IntroduceFourthContestant + GetContestantMonContestFame 3, VAR_RESULT + StartContestCameraFlashTask 3 + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + StartContestCommSync 23 + WaitForCommSyncState 23 + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_LookSouth + WaitMovement + MessageSynchronized ContestRegistration_Text_DressUpYourPokemon + CloseMessage + StartContestCommSync 4 + WaitForCommSyncState 4 + PlayFanfare SEQ_SE_DP_CON_F007 + WaitTime 30, VAR_RESULT + StopHBlank + FadeScreen FADE_SCREEN_CMD_STEPS, FADE_SCREEN_SPEED_FAST, FADE_TYPE_UNK_20, COLOR_BLACK + WaitFadeScreen + StartHBlank + DestroyNetworkIcon + RunContestApplication + LockAutoScrollForLinkContests + GetContestInfo VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 + GetContestMode VAR_MAP_LOCAL_3 + Call OngoingContest_PresentWinner + ScrCmd_2B0 + FadeScreenIn FADE_SCREEN_SPEED_FAST, COLOR_WHITE + WaitFadeScreen + GetWinningContestantEntryNum VAR_RESULT + StartContestCameraFlashTask VAR_RESULT + GetContestantMonContestFame VAR_RESULT, VAR_RESULT + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + MessageSynchronized ContestRegistration_Text_Congratulations2 + GetShouldSkipAwardCeremony VAR_RESULT + GoToIfEq VAR_RESULT, TRUE, OngoingContest_EndContest + BufferWinningContestantTrainerName 0 + BufferWinningContestantMonName 1 + SetRibbonName 2 + CheckPlayerMonHasRibbon VAR_RESULT + GoToIfEq VAR_RESULT, 0, OngoingContest_AwardCeremony + MessageSynchronized ContestRegistration_Text_WeExpectGreatThingsFromWinningTeam + GoTo OngoingContest_EndContest + +OngoingContest_AwardCeremony: + MessageSynchronized ContestRegistration_Text_LetsRecognizeOurWinner + CloseMessage + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_DexterLookEast + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT_WINNER, OngoingContest_Movement_LookWest + WaitMovement + WaitTime 15, VAR_RESULT + PlaySound SEQ_FANFA1 + WaitSound + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_MCDEXTER, OngoingContest_Movement_LookSouth + ApplyMovement CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT_WINNER, OngoingContest_Movement_LookSouth + WaitMovement +OngoingContest_EndContest: + MessageSynchronized ContestRegistration_Text_WeLookForwardToYourNextContestChallenge + CloseMessage + PlayFanfare SEQ_SE_DP_CON_F007 + GetWinningContestantEntryNum VAR_RESULT + StartContestCameraFlashTask VAR_RESULT + GetContestantMonContestFame VAR_RESULT, VAR_RESULT + Call OngoingContest_PlayApplause + WaitForContestCameraFlashTask + WaitTime 30, VAR_RESULT + StartContestCommSync 24 + WaitForCommSyncState 24 + ScrCmd_2BB + WaitTime 10, VAR_RESULT + DestroyNetworkIcon + StopHBlank + FadeScreen FADE_SCREEN_CMD_STEPS, FADE_SCREEN_SPEED_FAST, FADE_TYPE_UNK_20, COLOR_BLACK + WaitFadeScreen + StartHBlank + GetContestInfo VAR_0x8004, VAR_0x8005, VAR_0x8007, VAR_MAP_LOCAL_2 + GetFirstTimeVictoryAccessory VAR_0x8004 + LockTextSpeed + EndContest VAR_MAP_LOCAL_2 + SetVar VAR_ONGOING_CONTEST, FALSE + GoToIfEq VAR_MAP_LOCAL_3, CONTEST_MODE_OFFICIAL, OngoingContest_OfficialContest_ReturnToContestRegistration + Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 7, 3, 1 + FadeScreenIn + WaitFadeScreen + SetVar VAR_RESULT, 7 + Call ContestRegistration_Movement_ExitContestHall + ClearFlag FLAG_COMMUNICATION_CLUB_ACCESSIBLE + SetVar VAR_UNK_0x40D5, 0 + GoTo ContestRegistration_End + +OngoingContest_OfficialContest_ReturnToContestRegistration: + Warp MAP_HEADER_CONTEST_HALL_LOBBY, 0, 18, 3, 1 + FadeScreenIn + WaitFadeScreen + SetVar VAR_RESULT, 19 + Call ContestRegistration_Movement_ExitContestHall + Call ContestRegistration_Movement_ReturnToReceptionist + GoToIfEq VAR_0x8004, -1, ContestRegistration_ThankYouForParticipating + BufferPlayerName 0 + BufferAccessoryName 1, VAR_0x8004 + Message ContestRegistration_Text_Congratulations1 + SetVar VAR_0x8005, 1 + Common_GiveAccessory +ContestRegistration_ThankYouForParticipating: + Message ContestRegistration_Text_ThankYouForParticipating + WaitABXPadPress + CloseMessage +ContestRegistration_End: + End + +OngoingContest_PlayApplause: + PlayFanfare SEQ_SE_DP_CON_F007 + CallIfEq VAR_RESULT, 1, OngoingContest_PlayApplauseMinimum + CallIfEq VAR_RESULT, 2, OngoingContest_PlayApplauseSmall + CallIfEq VAR_RESULT, 3, OngoingContest_PlayApplauseMedium + CallIfEq VAR_RESULT, 4, OngoingContest_PlayApplauseLarge + CallIfGe VAR_RESULT, 5, OngoingContest_PlayApplauseMaximum + Return + +OngoingContest_PlayApplauseMinimum: + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + Return + +OngoingContest_PlayApplauseSmall: + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + Return + +OngoingContest_PlayApplauseMedium: + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + Return + +OngoingContest_PlayApplauseLarge: + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + Return + +OngoingContest_PlayApplauseMaximum: + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 10, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitTime 5, VAR_RESULT + PlayFanfare SEQ_SE_DP_CON_015 + WaitFanfare SEQ_SE_DP_CON_015 + Return + +OngoingContest_GetContestantGFX: + GetContestantObjEventGFX 0, VAR_OBJ_GFX_ID_0 + GetContestantObjEventGFX 1, VAR_OBJ_GFX_ID_1 + GetContestantObjEventGFX 2, VAR_OBJ_GFX_ID_2 + GetContestantObjEventGFX 3, VAR_OBJ_GFX_ID_3 + Return + +OngoingContest_PresentWinner: + GetWinningContestantEntryNum VAR_RESULT + GetContestantObjEventGFX VAR_RESULT, VAR_OBJ_GFX_ID_4 + ClearFlag FLAG_HIDE_CONTEST_HALL_STAGE_CONTESTANT_WINNER + AddObject CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT_WINNER + GetWinningContestantEntryNum VAR_MAP_LOCAL_0 + GoToIfEq VAR_MAP_LOCAL_0, 0, OngoingContest_HideContestant1 + GoToIfEq VAR_MAP_LOCAL_0, 1, OngoingContest_HideContestant2 + GoToIfEq VAR_MAP_LOCAL_0, 2, OngoingContest_HideContestant3 + GoToIfEq VAR_MAP_LOCAL_0, 3, OngoingContest_HideContestant4 + Return + +OngoingContest_HideContestant1: + RemoveObject CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT1 + Return + +OngoingContest_HideContestant2: + RemoveObject CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT2 + Return + +OngoingContest_HideContestant3: + RemoveObject CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT3 + Return + +OngoingContest_HideContestant4: + RemoveObject CONTEST_HALL_STAGE_ONGOING_CONTEST_CONTESTANT4 + Return + + .balign 4, 0 +ContestRegistration_Movement_PlayerToOfficialContestDoor: + WalkNormalEast 2 + WalkNormalNorth 3 + WalkOnSpotNormalWest + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_PlayerToLinkContestDoor: + WalkNormalEast 2 + WalkNormalNorth 3 + WalkOnSpotNormalWest + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_ApproachPracticeContestDoor: + WalkNormalEast + WalkNormalNorth 3 + EndMovement + +ContestRegistration_UnusedMovement: + Delay4 + FaceEast + Delay4 + FaceSouth + Delay2 + FaceWest + Delay1 + FaceNorth + Delay1 + FaceEast + Delay1 + FaceSouth + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_FaceContestHall: + WalkOnSpotNormalNorth + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_OfficialContestReceptionistToPlayer: + Delay8 2 + WalkNormalNorth + WalkNormalEast + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_LinkContestReceptionistToPlayer: + Delay8 2 + WalkNormalNorth + WalkNormalEast + EndMovement + + .balign 4, 0 +ContestRegistration_Movement_PracticeReceptionistToPlayer: + Delay8 2 + WalkNormalNorth + WalkOnSpotNormalEast + EndMovement + + .balign 4, 0 +OngoingContest_Movement_LookAround: + Delay8 2 + WalkOnSpotNormalWest + Delay8 + WalkOnSpotNormalEast + Delay8 + WalkOnSpotFastSouth + EndMovement + + .balign 4, 0 +OngoingContest_Movement_LookWest: + WalkOnSpotNormalWest + EndMovement + + .balign 4, 0 +OngoingContest_Movement_DexterLookNorth: + WalkOnSpotNormalNorth + EndMovement + + .balign 4, 0 +OngoingContest_Movement_DexterLookEast: + WalkOnSpotNormalEast + EndMovement + + .balign 4, 0 +OngoingContest_Movement_LookSouth: + WalkOnSpotNormalSouth + EndMovement + +ContestRegistration_ReceptionistPracticeContest: + PlayFanfare SEQ_SE_CONFIRM + LockAll + FacePlayer + SetVar VAR_MAP_LOCAL_3, CONTEST_MODE_PRACTICE + SetVar VAR_0x8004, CONTEST_RANK_NORMAL + Message ContestRegistration_Text_PracticeContest + GoTo ContestRegistration_ReceptionistPracticeContest_JoinPracticeMenu + End + + +#define ReceptionistPractice_JoinPracticeMenuItem_Practice 0 +#define ReceptionistPractice_JoinPracticeMenuItem_Info 1 +#define ReceptionistPractice_JoinPracticeMenuItem_Exit 2 + +ContestRegistration_ReceptionistPracticeContest_JoinPracticeMenu: + Message ContestRegistration_Text_JoinPracticeContest + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_Practice, ReceptionistPractice_JoinPracticeMenuItem_Practice + AddMenuEntryImm ContestRegistration_Text_Info2, ReceptionistPractice_JoinPracticeMenuItem_Info + AddMenuEntryImm ContestRegistration_Text_Exit2, ReceptionistPractice_JoinPracticeMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_JoinPracticeMenuItem_Practice, ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu + GoToIfEq VAR_0x8008, ReceptionistPractice_JoinPracticeMenuItem_Info, ContestRegistration_ReceptionistPracticeContest_InfoMenuEntry + GoToIfEq VAR_0x8008, ReceptionistPractice_JoinPracticeMenuItem_Exit, ContestRegistration_ReceptionistPracticeContest_Exit + GoTo ContestRegistration_ReceptionistPracticeContest_Exit + End + + +#define ReceptionistPractice_PracticeCategoryMenuItem_Visual 0 +#define ReceptionistPractice_PracticeCategoryMenuItem_Dance 1 +#define ReceptionistPractice_PracticeCategoryMenuItem_Acting 2 +#define ReceptionistPractice_PracticeCategoryMenuItem_Cancel 3 + +ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_VisualPractice, ReceptionistPractice_PracticeCategoryMenuItem_Visual + AddMenuEntryImm ContestRegistration_Text_DancePractice, ReceptionistPractice_PracticeCategoryMenuItem_Dance + AddMenuEntryImm ContestRegistration_Text_ActingPractice, ReceptionistPractice_PracticeCategoryMenuItem_Acting + AddMenuEntryImm ContestRegistration_Text_CancelPractice, ReceptionistPractice_PracticeCategoryMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_PracticeCategoryMenuItem_Visual, ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_VisualSelected + GoToIfEq VAR_0x8008, ReceptionistPractice_PracticeCategoryMenuItem_Dance, ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_DanceSelected + GoToIfEq VAR_0x8008, ReceptionistPractice_PracticeCategoryMenuItem_Acting, ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_ActingSelected + GoTo ContestRegistration_ReceptionistPracticeContest_Exit2 + End + +ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_VisualSelected: + SetVar VAR_MAP_LOCAL_4, FALSE + SetVar VAR_0x8007, CONTEST_COMPETITION_PRACTICE_VISUAL + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_DanceSelected: + SetVar VAR_MAP_LOCAL_4, TRUE + SetVar VAR_0x8005, CONTEST_TYPE_COOL + SetVar VAR_0x8007, CONTEST_COMPETITION_PRACTICE_DANCE + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_ActingSelected: + SetVar VAR_MAP_LOCAL_4, FALSE + SetVar VAR_0x8007, CONTEST_COMPETITION_PRACTICE_ACTING + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_ReceptionistPracticeContest_Exit2: + Message ContestRegistration_Text_WeLookForwardToYourNextVisit3 + WaitABXPadPress + GoTo ContestRegistration_Receptionists_End + End + +ContestRegistration_Unused: + Message ContestRegistration_Text_Unused + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm 169, 0 + AddMenuEntryImm 170, 1 + AddMenuEntryImm 171, 2 + AddMenuEntryImm 172, 3 + AddMenuEntryImm 173, 4 + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, 0, ContestRegistration_Unused2 + GoToIfEq VAR_0x8008, 1, ContestRegistration_Unused3 + GoToIfEq VAR_0x8008, 2, ContestRegistration_Unused4 + GoToIfEq VAR_0x8008, 3, ContestRegistration_Unused5 + GoTo ContestRegistration_Unused6 + End + +ContestRegistration_Unused2: + SetVar VAR_0x8004, 0 + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_Unused3: + SetVar VAR_0x8004, 1 + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_Unused4: + SetVar VAR_0x8004, 2 + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_Unused5: + SetVar VAR_0x8004, 3 + GoTo ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected + End + +ContestRegistration_Unused6: + Message ContestRegistration_Text_Unused6 + WaitABXPadPress + GoTo ContestRegistration_Receptionists_End + End + +ContestRegistration_ReceptionistPracticeContest_PracticeCategoryMenu_CategorySelected: + GoToIfEq VAR_MAP_LOCAL_4, TRUE, ContestRegistration_ReceptionistPracticeContest_RegisterMon + GoTo ContestRegistration_ReceptionistPracticeContest_ContestTypeMenu + +#define ReceptionistPractice_ContestTypeMenuItem_Cool 0 +#define ReceptionistPractice_ContestTypeMenuItem_Beauty 1 +#define ReceptionistPractice_ContestTypeMenuItem_Cute 2 +#define ReceptionistPractice_ContestTypeMenuItem_Smart 3 +#define ReceptionistPractice_ContestTypeMenuItem_Tough 4 +#define ReceptionistPractice_ContestTypeMenuItem_Exit 5 + +ContestRegistration_ReceptionistPracticeContest_ContestTypeMenu: + Message ContestRegistration_Text_WhichContestWouldYouLikeToChallenge + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_Cool, ReceptionistPractice_ContestTypeMenuItem_Cool + AddMenuEntryImm ContestRegistration_Text_Beauty, ReceptionistPractice_ContestTypeMenuItem_Beauty + AddMenuEntryImm ContestRegistration_Text_Cute, ReceptionistPractice_ContestTypeMenuItem_Cute + AddMenuEntryImm ContestRegistration_Text_Smart, ReceptionistPractice_ContestTypeMenuItem_Smart + AddMenuEntryImm ContestRegistration_Text_Tough, ReceptionistPractice_ContestTypeMenuItem_Tough + AddMenuEntryImm ContestRegistration_Text_Exit3, ReceptionistPractice_ContestTypeMenuItem_Exit + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_ContestTypeMenuItem_Cool, ContestRegistration_ReceptionistPracticeContest_SelectContestTypeCool + GoToIfEq VAR_0x8008, ReceptionistPractice_ContestTypeMenuItem_Beauty, ContestRegistration_ReceptionistPracticeContest_SelectContestTypeBeauty + GoToIfEq VAR_0x8008, ReceptionistPractice_ContestTypeMenuItem_Cute, ContestRegistration_ReceptionistPracticeContest_SelectContestTypeCute + GoToIfEq VAR_0x8008, ReceptionistPractice_ContestTypeMenuItem_Smart, ContestRegistration_ReceptionistPracticeContest_SelectContestTypeSmart + GoToIfEq VAR_0x8008, ReceptionistPractice_ContestTypeMenuItem_Tough, ContestRegistration_ReceptionistPracticeContest_SelectContestTypeTough + GoTo ContestRegistration_ReceptionistPracticeContest_Exit3 + End + +ContestRegistration_ReceptionistPracticeContest_SelectContestTypeCool: + SetVar VAR_0x8005, CONTEST_TYPE_COOL + GoTo ContestRegistration_ReceptionistPracticeContest_RegisterMon + End + +ContestRegistration_ReceptionistPracticeContest_SelectContestTypeBeauty: + SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY + GoTo ContestRegistration_ReceptionistPracticeContest_RegisterMon + End + +ContestRegistration_ReceptionistPracticeContest_SelectContestTypeCute: + SetVar VAR_0x8005, CONTEST_TYPE_CUTE + GoTo ContestRegistration_ReceptionistPracticeContest_RegisterMon + End + +ContestRegistration_ReceptionistPracticeContest_SelectContestTypeSmart: + SetVar VAR_0x8005, CONTEST_TYPE_SMART + GoTo ContestRegistration_ReceptionistPracticeContest_RegisterMon + End + +ContestRegistration_ReceptionistPracticeContest_SelectContestTypeTough: + SetVar VAR_0x8005, CONTEST_TYPE_TOUGH + GoTo ContestRegistration_ReceptionistPracticeContest_RegisterMon + End + +ContestRegistration_ReceptionistPracticeContest_Exit3: + Message ContestRegistration_Text_WeLookForwardToYourNextVisit4 + WaitABXPadPress + GoTo ContestRegistration_Receptionists_End + End + +#define MenuItemEnter 0 + +ContestRegistration_ReceptionistPracticeContest_RegisterMon: + Message ContestRegistration_Text_EnterWhichPokemon2 + Message ContestRegistration_Text_PleaseChoosePokemon2 + CloseMessage + FadeScreenOut + WaitFadeScreen + SetVar VAR_RESULT, 0 +ContestRegistration_ReceptionistPracticeContest_TryRegisterMon: + OpenPartyMenuForContest VAR_RESULT, VAR_0x8004, VAR_0x8005, 0 + TryEnterContestMon VAR_MAP_LOCAL_2, VAR_RESULT + GoToIfEq VAR_RESULT, MenuItemEnter, ContestRegistration_ReceptionistPracticeContest_RegisterMonDone + SetMonSummary VAR_MAP_LOCAL_2 + GetMonPartySlot VAR_RESULT + GoTo ContestRegistration_ReceptionistPracticeContest_TryRegisterMon + +ContestRegistration_ReceptionistPracticeContest_RegisterMonDone: + ReturnToField + FadeScreenIn + WaitFadeScreen + GoToIfEq VAR_MAP_LOCAL_2, PARTY_SLOT_NONE, ContestRegistration_ReceptionistPracticeContest_Exit3 + GoTo ContestRegistration_StartContest + End + +#define ReceptionistPractice_InfoMenuItem_Practice 0 +#define ReceptionistPractice_InfoMenuItem_Visual 1 +#define ReceptionistPractice_InfoMenuItem_Dance 2 +#define ReceptionistPractice_InfoMenuItem_Acting 3 +#define ReceptionistPractice_InfoMenuItem_Cancel 4 + +ContestRegistration_ReceptionistPracticeContest_InfoMenuEntry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 +ContestRegistration_ReceptionistPracticeContest_InfoMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_Practice1, ReceptionistPractice_InfoMenuItem_Practice + AddMenuEntryImm ContestRegistration_Text_Visual, ReceptionistPractice_InfoMenuItem_Visual + AddMenuEntryImm ContestRegistration_Text_Dance, ReceptionistPractice_InfoMenuItem_Dance + AddMenuEntryImm ContestRegistration_Text_Acting, ReceptionistPractice_InfoMenuItem_Acting + AddMenuEntryImm ContestRegistration_Text_Cancel, ReceptionistPractice_InfoMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoMenuItem_Practice, ContestRegistration_ReceptionistPracticeContest_InfoPractice + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoMenuItem_Visual, ContestRegistration_ReceptionistPracticeContest_InfoVisualMenu + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoMenuItem_Dance, ContestRegistration_ReceptionistPracticeContest_InfoDanceMenu + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoMenuItem_Acting, ContestRegistration_ReceptionistPracticeContest_InfoActingMenu + GoTo ContestRegistration_ReceptionistPracticeContest_JoinPracticeMenu + End + +#define ReceptionistPractice_InfoVisualMenuItem_OverallFlow 0 +#define ReceptionistPractice_InfoVisualMenuItem_ConditionPoints 1 +#define ReceptionistPractice_InfoVisualMenuItem_DressUpPoints 2 +#define ReceptionistPractice_InfoVisualMenuItem_Cancel 3 + +ContestRegistration_ReceptionistPracticeContest_InfoVisualMenuReentry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 +ContestRegistration_ReceptionistPracticeContest_InfoVisualMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_OverallFlow, ReceptionistPractice_InfoVisualMenuItem_OverallFlow + AddMenuEntryImm ContestRegistration_Text_ConditionPoints, ReceptionistPractice_InfoVisualMenuItem_ConditionPoints + AddMenuEntryImm ContestRegistration_Text_DressUpPoints, ReceptionistPractice_InfoVisualMenuItem_DressUpPoints + AddMenuEntryImm ContestRegistration_Text_Cancel1, ReceptionistPractice_InfoVisualMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoVisualMenuItem_OverallFlow, ContestRegistration_ReceptionistPracticeContest_InfoVisualOverallFlow + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoVisualMenuItem_ConditionPoints, ContestRegistration_ReceptionistPracticeContest_InfoVisualCondition + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoVisualMenuItem_DressUpPoints, ContestRegistration_ReceptionistPracticeContest_InfoVisualDressUp + GoTo ContestRegistration_ReceptionistPracticeContest_InfoVisualReturnToInfoMenu + End + +ContestRegistration_ReceptionistPracticeContest_InfoVisualOverallFlow: + Message ContestRegistration_Text_ExplainVisualOverallFlow + GoTo ContestRegistration_ReceptionistPracticeContest_InfoVisualMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoVisualCondition: + Message ContestRegistration_Text_ExplainCondition + GoTo ContestRegistration_ReceptionistPracticeContest_InfoVisualMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoVisualDressUp: + Message ContestRegistration_Text_ExplainDressUp + GoTo ContestRegistration_ReceptionistPracticeContest_InfoVisualMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoVisualReturnToInfoMenu: + GoTo ContestRegistration_ReceptionistPracticeContest_InfoMenu + End + +#define ReceptionistPractice_InfoDanceMenuItem_OverallFlow 0 +#define ReceptionistPractice_InfoDanceMenuItem_BackupDancer 1 +#define ReceptionistPractice_InfoDanceMenuItem_MainDancer 2 +#define ReceptionistPractice_InfoDanceMenuItem_Panel 3 +#define ReceptionistPractice_InfoDanceMenuItem_Cancel 4 + +ContestRegistration_ReceptionistPracticeContest_InfoDanceMenuReentry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 +ContestRegistration_ReceptionistPracticeContest_InfoDanceMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_OverallFlow1, ReceptionistPractice_InfoDanceMenuItem_OverallFlow + AddMenuEntryImm ContestRegistration_Text_BackupDancer, ReceptionistPractice_InfoDanceMenuItem_BackupDancer + AddMenuEntryImm ContestRegistration_Text_MainDancer, ReceptionistPractice_InfoDanceMenuItem_MainDancer + AddMenuEntryImm ContestRegistration_Text_Panel, ReceptionistPractice_InfoDanceMenuItem_Panel + AddMenuEntryImm ContestRegistration_Text_Cancel2, ReceptionistPractice_InfoDanceMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoDanceMenuItem_OverallFlow, ContestRegistration_ReceptionistPracticeContest_InfoDanceOverallFlow + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoDanceMenuItem_BackupDancer, ContestRegistration_ReceptionistPracticeContest_InfoDanceBackupDancer + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoDanceMenuItem_MainDancer, ContestRegistration_ReceptionistPracticeContest_InfoDanceMainDancer + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoDanceMenuItem_Panel, ContestRegistration_ReceptionistPracticeContest_InfoDancePanel + GoTo ContestRegistration_ReceptionistPracticeContest_InfoDanceReturnToInfoMenu + End + +ContestRegistration_ReceptionistPracticeContest_InfoDanceOverallFlow: + Message ContestRegistration_Text_ExplainDanceOverallFlow + GoTo ContestRegistration_ReceptionistPracticeContest_InfoDanceMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoDanceBackupDancer: + Message ContestRegistration_Text_ExplainBackupDancer + GoTo ContestRegistration_ReceptionistPracticeContest_InfoDanceMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoDanceMainDancer: + Message ContestRegistration_Text_ExplainMainDancer + GoTo ContestRegistration_ReceptionistPracticeContest_InfoDanceMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoDancePanel: + Message ContestRegistration_Text_ExplainDanceColorPanels + GoTo ContestRegistration_ReceptionistPracticeContest_InfoDanceMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoDanceReturnToInfoMenu: + GoTo ContestRegistration_ReceptionistPracticeContest_InfoMenu + End + + +#define ReceptionistPractice_InfoActingMenuItem_OverallFlow 0 +#define ReceptionistPractice_InfoActingMenuItem_ContestMoves 1 +#define ReceptionistPractice_InfoActingMenuItem_Judges 2 +#define ReceptionistPractice_InfoActingMenuItem_Voltage 3 +#define ReceptionistPractice_InfoActingMenuItem_Cancel 4 + +ContestRegistration_ReceptionistPracticeContest_InfoActingMenuReentry: + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 +ContestRegistration_ReceptionistPracticeContest_InfoActingMenu: + InitLocalTextMenu 1, 1, 0, VAR_RESULT + AddMenuEntryImm ContestRegistration_Text_OverallFlow2, ReceptionistPractice_InfoActingMenuItem_OverallFlow + AddMenuEntryImm ContestRegistration_Text_ContestMoves, ReceptionistPractice_InfoActingMenuItem_ContestMoves + AddMenuEntryImm ContestRegistration_Text_Judges, ReceptionistPractice_InfoActingMenuItem_Judges + AddMenuEntryImm ContestRegistration_Text_Voltage, ReceptionistPractice_InfoActingMenuItem_Voltage + AddMenuEntryImm ContestRegistration_Text_Cancel3, ReceptionistPractice_InfoActingMenuItem_Cancel + ShowMenu + SetVar VAR_0x8008, VAR_RESULT + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoActingMenuItem_OverallFlow, ContestRegistration_ReceptionistPracticeContest_InfoActingOverallFlow + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoActingMenuItem_ContestMoves, ContestRegistration_ReceptionistPracticeContest_InfoActingContestMoves + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoActingMenuItem_Judges, ContestRegistration_ReceptionistPracticeContest_InfoActingJudges + GoToIfEq VAR_0x8008, ReceptionistPractice_InfoActingMenuItem_Voltage, ContestRegistration_ReceptionistPracticeContest_InfoActingVoltage + GoTo ContestRegistration_ReceptionistPracticeContest_InfoActingReturnToInfoMenu + End + +ContestRegistration_ReceptionistPracticeContest_InfoActingOverallFlow: + Message ContestRegistration_Text_ExplainActingOverallFlow + GoTo ContestRegistration_ReceptionistPracticeContest_InfoActingMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoActingContestMoves: + Message ContestRegistration_Text_ExplainActingScoring + GoTo ContestRegistration_ReceptionistPracticeContest_InfoActingMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoActingJudges: + Message ContestRegistration_Text_ExplainActingJudges + GoTo ContestRegistration_ReceptionistPracticeContest_InfoActingMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoActingVoltage: + Message ContestRegistration_Text_ExplainVoltage + GoTo ContestRegistration_ReceptionistPracticeContest_InfoActingMenuReentry + End + +ContestRegistration_ReceptionistPracticeContest_InfoActingReturnToInfoMenu: + GoTo ContestRegistration_ReceptionistPracticeContest_InfoMenu + End + +ContestRegistration_ReceptionistPracticeContest_InfoPractice: + Message ContestRegistration_Text_HereYouMayPracticeEachContestCategory + Message ContestRegistration_Text_WhatWouldYouLikeToKnow2 + GoTo ContestRegistration_ReceptionistPracticeContest_InfoMenu + End + +ContestRegistration_Unused7: + Message ContestRegistration_Text_WeLookForwardToYourNextVisit2 + GoTo ContestRegistration_Receptionists_End + End + +ContestRegistration_ReceptionistPracticeContest_Exit: + Message ContestRegistration_Text_WeLookForwardToYourNextVisit1 + WaitABXPadPress +ContestRegistration_Receptionists_End: + CloseMessage + ReleaseAll + End + +ContestRegistration_LinkContestRecordsDisplay: + PlayFanfare SEQ_SE_CONFIRM + LockAll + ShowLinkContestRecords + ReleaseAll + End + + .balign 4, 0 diff --git a/res/field/scripts/scripts_day_care_common.s b/res/field/scripts/scripts_day_care_common.s index 0d6648e22d..df7d4bd47e 100644 --- a/res/field/scripts/scripts_day_care_common.s +++ b/res/field/scripts/scripts_day_care_common.s @@ -131,8 +131,8 @@ _01B9: OpenPartyMenuForDaycare VAR_RESULT ScrCmd_291 VAR_0x8000, VAR_RESULT GoToIfEq VAR_RESULT, 0, _01DE - ScrCmd_196 VAR_0x8000 - ScrCmd_197 VAR_RESULT + SetMonSummary VAR_0x8000 + GetMonPartySlot VAR_RESULT GoTo _01B9 _01DE: diff --git a/res/text/contest_dance_competition.json b/res/text/contest_dance_competition.json index 7012cef992..16caf70980 100644 --- a/res/text/contest_dance_competition.json +++ b/res/text/contest_dance_competition.json @@ -2,39 +2,39 @@ "key": 59653, "messages": [ { - "id": "pl_msg_00000206_00000", + "id": "DanceCompetition_Text_Jump", "en_US": "JUMP" }, { - "id": "pl_msg_00000206_00001", + "id": "DanceCompetition_Text_Up", "en_US": "UP" }, { - "id": "pl_msg_00000206_00002", + "id": "DanceCompetition_Text_Front", "en_US": "FRONT" }, { - "id": "pl_msg_00000206_00003", + "id": "DanceCompetition_Text_Left", "en_US": "LEFT" }, { - "id": "pl_msg_00000206_00004", + "id": "DanceCompetition_Text_Right", "en_US": "RIGHT" }, { - "id": "pl_msg_00000206_00005", + "id": "DanceCompetition_Text_Excellent", "en_US": "Excellent!" }, { - "id": "pl_msg_00000206_00006", + "id": "DanceCompetition_Text_Good", "en_US": "Good!" }, { - "id": "pl_msg_00000206_00007", + "id": "DanceCompetition_Text_Miss", "en_US": "Miss!" }, { - "id": "pl_msg_00000206_00008", + "id": "DanceCompetition_Text_CompetitionIsReady", "en_US": [ "The Dance Competition is ready to\n", "get under way!\r", @@ -45,15 +45,15 @@ ] }, { - "id": "pl_msg_00000206_00009", + "id": "DanceCompetition_Text_PerformStepsAsMainDancer", "en_US": "{COLOR 2}Perform {STRVAR_1 50, 0, 0} steps as the main dancer!{COLOR 0}" }, { - "id": "pl_msg_00000206_00010", + "id": "DanceCompetition_Text_CopyPokemonBeforeYou", "en_US": "{COLOR 1}Copy the Pokémon before you!{COLOR 0}" }, { - "id": "pl_msg_00000206_00011", + "id": "DanceCompetition_Text_Unused", "garbage": 32 }, { @@ -81,7 +81,7 @@ "garbage": 8 }, { - "id": "pl_msg_00000206_00018", + "id": "DanceCompetition_Text_AnnounceLeadingMon", "en_US": [ "That’s it for the Dance Competition!\r", "Leading in points right now is\n", @@ -91,7 +91,7 @@ ] }, { - "id": "pl_msg_00000206_00019", + "id": "DanceCompetition_Text_ThanksForJoiningPracticeContest", "en_US": [ "Welcome! Thanks for joining our\n", "practice Contest!\r", @@ -102,7 +102,7 @@ ] }, { - "id": "pl_msg_00000206_00020", + "id": "DanceCompetition_Text_EveryoneHereForPracticeContest", "en_US": [ "Looks like everyone’s here, so let’s\n", "get on with our dance practice!\r", diff --git a/res/text/contest_registration.json b/res/text/contest_registration.json index c2870a984b..504ee00eb5 100644 --- a/res/text/contest_registration.json +++ b/res/text/contest_registration.json @@ -14,7 +14,7 @@ "garbage": 4 }, { - "id": "pl_msg_00000217_00003", + "id": "ContestRegistration_Text_Welcome", "en_US": [ "Welcome to the Contest Hall.\r", "I can help you with registering\n", @@ -22,14 +22,14 @@ ] }, { - "id": "pl_msg_00000217_00004", + "id": "ContestRegistration_Text_WouldYouLikeToEnterAContest", "en_US": [ "Would you like to enter a Pokémon\n", "in a Contest?" ] }, { - "id": "pl_msg_00000217_00005", + "id": "ContestRegistration_Text_WhatWouldYouLikeToKnow1", "en_US": "What would you like to know about?" }, { @@ -37,7 +37,7 @@ "garbage": 4 }, { - "id": "pl_msg_00000217_00007", + "id": "ContestRegistration_Text_WelcomeLinkContest", "en_US": [ "Welcome to the Contest Hall!\r", "This is the reception counter for\n", @@ -48,33 +48,33 @@ ] }, { - "id": "pl_msg_00000217_00008", + "id": "ContestRegistration_Text_Enter", "en_US": "ENTER" }, { - "id": "pl_msg_00000217_00009", + "id": "ContestRegistration_Text_Info1", "en_US": "INFO" }, { - "id": "pl_msg_00000217_00010", + "id": "ContestRegistration_Text_Exit1", "en_US": "EXIT" }, { - "id": "pl_msg_00000217_00011", + "id": "ContestRegistration_Text_LookForwardToYourParticipationAnotherTime", "en_US": [ "We look forward to your participation\n", "another time!" ] }, { - "id": "pl_msg_00000217_00012", + "id": "ContestRegistration_Text_WouldYouLikeToEnterLinkContest", "en_US": [ "Would you like to\n", "enter a link Contest?" ] }, { - "id": "pl_msg_00000217_00013", + "id": "ContestRegistration_Text_ExplainLinkContest", "en_US": [ "Two to four players may compete\n", "using wireless communications.\r", @@ -91,7 +91,7 @@ ] }, { - "id": "pl_msg_00000217_00014", + "id": "ContestRegistration_Text_ExplainOfficialContest", "en_US": [ "A Pokémon Super Contest involves\n", "four Trainers.\r", @@ -110,7 +110,7 @@ ] }, { - "id": "pl_msg_00000217_00015", + "id": "ContestRegistration_Text_ExplainVisualContest", "en_US": [ "In the Visual Competition, Pokémon\n", "are rated on their appearance.\r", @@ -121,7 +121,7 @@ ] }, { - "id": "pl_msg_00000217_00016", + "id": "ContestRegistration_Text_ExplainDanceContest", "en_US": [ "In the Dance Competition, the Pokémon\n", "will get to show off their footwork.\r", @@ -132,7 +132,7 @@ ] }, { - "id": "pl_msg_00000217_00017", + "id": "ContestRegistration_Text_ExplainActingContest", "en_US": [ "In the Acting Competition, the\n", "Pokémon will perform their moves in\f", @@ -145,7 +145,7 @@ ] }, { - "id": "pl_msg_00000217_00018", + "id": "ContestRegistration_Text_ExplainContestTypes", "en_US": [ "There are five Contests in all:\n", "Cool, Beauty, Cute, Smart, and Tough.\r", @@ -155,7 +155,7 @@ ] }, { - "id": "pl_msg_00000217_00019", + "id": "ContestRegistration_Text_ExplainContestRanks", "en_US": [ "There are four different ranks to\n", "the Pokémon Super Contests.\r", @@ -176,21 +176,21 @@ ] }, { - "id": "pl_msg_00000217_00020", + "id": "ContestRegistration_Text_EnterWhichPokemon1", "en_US": [ "Which Pokémon would you like to\n", "enter?\r" ] }, { - "id": "pl_msg_00000217_00021", + "id": "ContestRegistration_Text_PleaseChoosePokemon1", "en_US": [ "Please choose\n", "a Pokémon.\r" ] }, { - "id": "pl_msg_00000217_00022", + "id": "ContestRegistration_Text_YourPokemonHasBeenAccepted", "en_US": [ "OK! Your Pokémon has been accepted\n", "for entry!\r", @@ -217,14 +217,14 @@ "en_US": "EXIT" }, { - "id": "pl_msg_00000217_00027", + "id": "ContestRegistration_Text_SelectRank", "en_US": [ "Which rank would you like to\n", "challenge?" ] }, { - "id": "pl_msg_00000217_00028", + "id": "ContestRegistration_Text_SelectContestType", "en_US": [ "Which Contest would you like to\n", "challenge?" @@ -259,23 +259,23 @@ "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00036", + "id": "ContestRegistration_Text_WhatsAContest", "en_US": "WHAT’S A CONTEST?" }, { - "id": "pl_msg_00000217_00037", + "id": "ContestRegistration_Text_VisualCompetition", "en_US": "VISUAL COMPETITION" }, { - "id": "pl_msg_00000217_00038", + "id": "ContestRegistration_Text_DanceCompetition", "en_US": "DANCE COMPETITION" }, { - "id": "pl_msg_00000217_00039", + "id": "ContestRegistration_Text_ActingCompetition", "en_US": "ACTING COMPETITION" }, { - "id": "pl_msg_00000217_00040", + "id": "ContestRegistration_Text_CancelCompetition", "en_US": "CANCEL" }, { @@ -371,7 +371,7 @@ "garbage": 58 }, { - "id": "pl_msg_00000217_00064", + "id": "ContestRegistration_Text_TheContestWillStartRightAway", "en_US": [ "The Contest will start right away.\n", "This way, please!\r" @@ -382,22 +382,22 @@ "garbage": 4 }, { - "id": "pl_msg_00000217_00066", + "id": "ContestRegistration_Text_PlayerChangedIntoTuxedo", "en_US": "{STRVAR_1 3, 0, 0} changed into the tuxedo.\r" }, { - "id": "pl_msg_00000217_00067", + "id": "ContestRegistration_Text_PlayerChangedIntoDress", "en_US": "{STRVAR_1 3, 0, 0} changed into the dress.\r" }, { - "id": "pl_msg_00000217_00068", + "id": "ContestRegistration_Text_RightThisWayPlease1", "en_US": [ "Right this way, please!\n", "Good luck!\r" ] }, { - "id": "pl_msg_00000217_00069", + "id": "ContestRegistration_Text_WeAreAboutToGetUnderWay", "en_US": [ "MC: We are about to get under way with\n", "this {STRVAR_1 35, 0, 0} Pokémon\f", @@ -409,7 +409,7 @@ ] }, { - "id": "pl_msg_00000217_00070", + "id": "ContestRegistration_Text_IntroduceFirstContestant", "en_US": [ "Let me introduce our contestants!\r", "Entry number 1!\n", @@ -417,28 +417,28 @@ ] }, { - "id": "pl_msg_00000217_00071", + "id": "ContestRegistration_Text_IntroduceSecondContestant", "en_US": [ "Next, it’s entry number 2!\n", "{STRVAR_1 3, 0, 0}!\r" ] }, { - "id": "pl_msg_00000217_00072", + "id": "ContestRegistration_Text_IntroduceThirdContestant", "en_US": [ "Entry number 3!\n", "{STRVAR_1 3, 0, 0}!\r" ] }, { - "id": "pl_msg_00000217_00073", + "id": "ContestRegistration_Text_IntroduceFourthContestant", "en_US": [ "And last but not least, entry\n", "number 4! {STRVAR_1 3, 0, 0}!\r" ] }, { - "id": "pl_msg_00000217_00074", + "id": "ContestRegistration_Text_DressUpYourPokemon", "en_US": [ "Let’s begin by having everyone get in\n", "proper attire for evaluations.\r", @@ -451,11 +451,11 @@ "garbage": 85 }, { - "id": "pl_msg_00000217_00076", + "id": "ContestRegistration_Text_Congratulations2", "en_US": "Dexter: Congratulations!\r" }, { - "id": "pl_msg_00000217_00077", + "id": "ContestRegistration_Text_LetsRecognizeOurWinner", "en_US": [ "Let’s recognize our winner!\n", "{STRVAR_1 3, 0, 0}’s {STRVAR_1 1, 1, 0}!\r", @@ -464,14 +464,14 @@ ] }, { - "id": "pl_msg_00000217_00078", + "id": "ContestRegistration_Text_WeLookForwardToYourNextContestChallenge", "en_US": [ "We look forward to your next\n", "Contest challenge!\r" ] }, { - "id": "pl_msg_00000217_00079", + "id": "ContestRegistration_Text_WeExpectGreatThingsFromWinningTeam", "en_US": [ "We expect great things from the\n", "winning team of {STRVAR_1 3, 0, 0} and\f", @@ -479,7 +479,7 @@ ] }, { - "id": "pl_msg_00000217_00080", + "id": "ContestRegistration_Text_Congratulations1", "en_US": [ "Congratulations!\n", "Here is your prize!\r" @@ -490,7 +490,7 @@ "garbage": 20 }, { - "id": "pl_msg_00000217_00082", + "id": "ContestRegistration_Text_ThankYouForParticipating", "en_US": [ "Thank you for participating.\n", "We look forward to your next visit!" @@ -609,7 +609,7 @@ "garbage": 66 }, { - "id": "pl_msg_00000217_00111", + "id": "ContestRegistration_Text_PracticeContest", "en_US": [ "Hi! This is the registration counter\n", "for practice sessions.\r", @@ -618,58 +618,58 @@ ] }, { - "id": "pl_msg_00000217_00112", + "id": "ContestRegistration_Text_JoinPracticeContest", "en_US": [ "Would you like to join a practice\n", "session?" ] }, { - "id": "pl_msg_00000217_00113", + "id": "ContestRegistration_Text_Practice", "en_US": "PRACTICE" }, { - "id": "pl_msg_00000217_00114", + "id": "ContestRegistration_Text_Info2", "en_US": "INFO" }, { - "id": "pl_msg_00000217_00115", + "id": "ContestRegistration_Text_Exit2", "en_US": "EXIT" }, { - "id": "pl_msg_00000217_00116", + "id": "ContestRegistration_Text_WeLookForwardToYourNextVisit1", "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00117", + "id": "ContestRegistration_Text_WhatWouldYouLikeToKnow2", "en_US": "What would you like to know about?" }, { - "id": "pl_msg_00000217_00118", + "id": "ContestRegistration_Text_Visual", "en_US": "VISUAL" }, { - "id": "pl_msg_00000217_00119", + "id": "ContestRegistration_Text_Dance", "en_US": "DANCE" }, { - "id": "pl_msg_00000217_00120", + "id": "ContestRegistration_Text_Acting", "en_US": "ACTING" }, { - "id": "pl_msg_00000217_00121", + "id": "ContestRegistration_Text_Practice1", "en_US": "PRACTICE" }, { - "id": "pl_msg_00000217_00122", + "id": "ContestRegistration_Text_Cancel", "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00123", + "id": "ContestRegistration_Text_WeLookForwardToYourNextVisit2", "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00124", + "id": "ContestRegistration_Text_HereYouMayPracticeEachContestCategory", "en_US": [ "A Contest involves judging in three\n", "categories: Visual, Dance, and Acting.\r", @@ -683,15 +683,15 @@ ] }, { - "id": "pl_msg_00000217_00125", + "id": "ContestRegistration_Text_OverallFlow", "en_US": "OVERALL FLOW" }, { - "id": "pl_msg_00000217_00126", + "id": "ContestRegistration_Text_ConditionPoints", "en_US": "CONDITION POINTS" }, { - "id": "pl_msg_00000217_00127", + "id": "ContestRegistration_Text_DressUpPoints", "en_US": "DRESS-UP POINTS" }, { @@ -699,11 +699,11 @@ "garbage": 4 }, { - "id": "pl_msg_00000217_00129", + "id": "ContestRegistration_Text_Cancel1", "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00130", + "id": "ContestRegistration_Text_ExplainVisualOverallFlow", "en_US": [ "Judging here is based on the visual\n", "appeal of Pokémon.\r", @@ -717,7 +717,7 @@ ] }, { - "id": "pl_msg_00000217_00131", + "id": "ContestRegistration_Text_ExplainCondition", "en_US": [ "Condition Points are scored on\n", "the Pokémon’s condition in one of\f", @@ -733,7 +733,7 @@ ] }, { - "id": "pl_msg_00000217_00132", + "id": "ContestRegistration_Text_ExplainDressUp", "en_US": [ "Dress-Up Points are awarded for\n", "fashionably dressing up your Pokémon\f", @@ -762,27 +762,27 @@ "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00135", + "id": "ContestRegistration_Text_OverallFlow1", "en_US": "OVERALL FLOW" }, { - "id": "pl_msg_00000217_00136", + "id": "ContestRegistration_Text_BackupDancer", "en_US": "BACKUP DANCER" }, { - "id": "pl_msg_00000217_00137", + "id": "ContestRegistration_Text_MainDancer", "en_US": "MAIN DANCER" }, { - "id": "pl_msg_00000217_00138", + "id": "ContestRegistration_Text_Panel", "en_US": "PANEL" }, { - "id": "pl_msg_00000217_00139", + "id": "ContestRegistration_Text_Cancel2", "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00140", + "id": "ContestRegistration_Text_ExplainDanceOverallFlow", "en_US": [ "In a Dance Competition, the four\n", "contestants take on different parts.\r", @@ -797,7 +797,7 @@ ] }, { - "id": "pl_msg_00000217_00141", + "id": "ContestRegistration_Text_ExplainBackupDancer", "en_US": [ "Your Pokémon will first appear as\n", "a backup dancer.\r", @@ -809,7 +809,7 @@ ] }, { - "id": "pl_msg_00000217_00142", + "id": "ContestRegistration_Text_ExplainMainDancer", "en_US": [ "The main dancer rotates with a\n", "backup dancer so everyone gets\f", @@ -819,7 +819,7 @@ ] }, { - "id": "pl_msg_00000217_00143", + "id": "ContestRegistration_Text_ExplainDanceColorPanels", "en_US": [ "The melody will be shown playing on\n", "the red and blue panels.\r", @@ -839,27 +839,27 @@ "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00145", + "id": "ContestRegistration_Text_OverallFlow2", "en_US": "OVERALL FLOW" }, { - "id": "pl_msg_00000217_00146", + "id": "ContestRegistration_Text_ContestMoves", "en_US": "CONTEST MOVES" }, { - "id": "pl_msg_00000217_00147", + "id": "ContestRegistration_Text_Judges", "en_US": "JUDGES" }, { - "id": "pl_msg_00000217_00148", + "id": "ContestRegistration_Text_Voltage", "en_US": "VOLTAGE" }, { - "id": "pl_msg_00000217_00149", + "id": "ContestRegistration_Text_Cancel3", "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00150", + "id": "ContestRegistration_Text_ExplainActingOverallFlow", "en_US": [ "In the Acting Competition, four\n", "Pokémon will perform their moves for\f", @@ -871,7 +871,7 @@ ] }, { - "id": "pl_msg_00000217_00151", + "id": "ContestRegistration_Text_ExplainActingScoring", "en_US": [ "Every move has one or more {COLOR 1}♡{COLOR 0} marks\n", "that indicate the acting score.\r", @@ -883,7 +883,7 @@ ] }, { - "id": "pl_msg_00000217_00152", + "id": "ContestRegistration_Text_ExplainActingJudges", "en_US": [ "There are three Judges in all.\r", "You get to choose which one you want\n", @@ -897,7 +897,7 @@ ] }, { - "id": "pl_msg_00000217_00153", + "id": "ContestRegistration_Text_ExplainVoltage", "en_US": [ "Voltage shows the excitement level\n", "of the Judges.\r", @@ -919,62 +919,62 @@ "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00155", + "id": "ContestRegistration_Text_VisualPractice", "en_US": "VISUAL PRACTICE" }, { - "id": "pl_msg_00000217_00156", + "id": "ContestRegistration_Text_DancePractice", "en_US": "DANCE PRACTICE" }, { - "id": "pl_msg_00000217_00157", + "id": "ContestRegistration_Text_ActingPractice", "en_US": "ACTING PRACTICE" }, { - "id": "pl_msg_00000217_00158", + "id": "ContestRegistration_Text_CancelPractice", "en_US": "CANCEL" }, { - "id": "pl_msg_00000217_00159", + "id": "ContestRegistration_Text_WeLookForwardToYourNextVisit3", "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00160", + "id": "ContestRegistration_Text_WhichContestWouldYouLikeToChallenge", "en_US": [ "Which Contest would you like to\n", "challenge?" ] }, { - "id": "pl_msg_00000217_00161", + "id": "ContestRegistration_Text_Cool", "en_US": "COOL" }, { - "id": "pl_msg_00000217_00162", + "id": "ContestRegistration_Text_Beauty", "en_US": "BEAUTY" }, { - "id": "pl_msg_00000217_00163", + "id": "ContestRegistration_Text_Cute", "en_US": "CUTE" }, { - "id": "pl_msg_00000217_00164", + "id": "ContestRegistration_Text_Smart", "en_US": "SMART" }, { - "id": "pl_msg_00000217_00165", + "id": "ContestRegistration_Text_Tough", "en_US": "TOUGH" }, { - "id": "pl_msg_00000217_00166", + "id": "ContestRegistration_Text_Exit3", "en_US": "EXIT" }, { - "id": "pl_msg_00000217_00167", + "id": "ContestRegistration_Text_WeLookForwardToYourNextVisit4", "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00168", + "id": "ContestRegistration_Text_Unused", "garbage": 17 }, { @@ -998,22 +998,22 @@ "garbage": 3 }, { - "id": "pl_msg_00000217_00174", + "id": "ContestRegistration_Text_Unused6", "garbage": 19 }, { - "id": "pl_msg_00000217_00175", + "id": "ContestRegistration_Text_EnterWhichPokemon2", "en_US": [ "Which Pokémon would you like to\n", "enter?\r" ] }, { - "id": "pl_msg_00000217_00176", + "id": "ContestRegistration_Text_PleaseChoosePokemon2", "en_US": "Please choose a Pokémon.\r" }, { - "id": "pl_msg_00000217_00177", + "id": "ContestRegistration_Text_YourPokemonRegisteredForPractice", "en_US": [ "OK, your Pokémon has been registered\n", "for a practice session.\r", @@ -1061,7 +1061,7 @@ ] }, { - "id": "pl_msg_00000217_00184", + "id": "ContestRegistration_Text_CompletedVisualPractice", "en_US": [ "Thanks for participating!\n", "Your Pokémon was quite popular!\f", @@ -1070,7 +1070,7 @@ ] }, { - "id": "pl_msg_00000217_00185", + "id": "ContestRegistration_Text_FailedVisualPractice", "en_US": [ "Thank you for participating!\n", "It’s too bad how things turned out...\r", @@ -1115,7 +1115,7 @@ "garbage": 30 }, { - "id": "pl_msg_00000217_00194", + "id": "ContestRegistration_Text_CompletedDancePractice", "en_US": [ "Thanks for participating!\n", "Your Pokémon danced quite well!\f", @@ -1125,7 +1125,7 @@ ] }, { - "id": "pl_msg_00000217_00195", + "id": "ContestRegistration_Text_FailedDancePractice", "en_US": [ "Thank you for participating!\n", "It’s too bad how things turned out...\r", @@ -1169,7 +1169,7 @@ "garbage": 30 }, { - "id": "pl_msg_00000217_00204", + "id": "ContestRegistration_Text_CompletedActingPractice", "en_US": [ "Thanks for participating!\r", "Your Pokémon attracted a good deal\n", @@ -1185,7 +1185,7 @@ ] }, { - "id": "pl_msg_00000217_00205", + "id": "ContestRegistration_Text_FailedActingPractice", "en_US": [ "Thank you for participating!\n", "It’s too bad how things turned out...\r", @@ -1217,18 +1217,18 @@ "en_US": "What would you like to know about?" }, { - "id": "pl_msg_00000217_00210", + "id": "ContestRegistration_Text_CommunicatingStandBy", "en_US": "Communicating. Please stand by..." }, { - "id": "pl_msg_00000217_00211", + "id": "ContestRegistration_Text_RightThisWayPlease2", "en_US": [ "Right this way, please!\n", "Good luck!\r" ] }, { - "id": "pl_msg_00000217_00212", + "id": "ContestRegistration_Text_CommunicatingWillBeLaunched", "en_US": [ "DS Wireless Communications will\n", "be launched." @@ -1243,7 +1243,7 @@ "en_US": "NO" }, { - "id": "pl_msg_00000217_00215", + "id": "ContestRegistration_Text_CancelEntry", "en_US": "Would you like to cancel your entry?" }, { @@ -1259,7 +1259,7 @@ "en_US": "We look forward to your next visit!" }, { - "id": "pl_msg_00000217_00219", + "id": "ContestRegistration_Text_OnePersonMustBeLeader", "en_US": [ "One person in the group needs to\n", "choose “BECOME LEADER.”\r", diff --git a/res/text/contest_results.json b/res/text/contest_results.json index 70945109df..8653f35637 100644 --- a/res/text/contest_results.json +++ b/res/text/contest_results.json @@ -2,7 +2,7 @@ "key": 51967, "messages": [ { - "id": "pl_msg_00000218_00000", + "id": "ContestResults_Text_JudgingCompleted", "en_US": [ "Dexter: That’s it, folks!\n", "All judging has been completed!\r", @@ -12,28 +12,28 @@ ] }, { - "id": "pl_msg_00000218_00001", + "id": "ContestResults_Text_VisualCompetitionResults", "en_US": [ "First, the results of the Visual\n", "Competition!\r" ] }, { - "id": "pl_msg_00000218_00002", + "id": "ContestResults_Text_DanceCompetitionResults", "en_US": [ "Next, let’s have the results of the\n", "Dance Competition!\r" ] }, { - "id": "pl_msg_00000218_00003", + "id": "ContestResults_Text_ActingCompetitionResults", "en_US": [ "And finally, here are the results of\n", "the Acting Competition!\r" ] }, { - "id": "pl_msg_00000218_00004", + "id": "ContestResults_Text_TheWinnerIs", "en_US": [ "Dexter: The winner is...\n", "Entry number {STRVAR_1 50, 0, 0}!\r", @@ -42,7 +42,7 @@ ] }, { - "id": "pl_msg_00000218_00005", + "id": "ContestResults_Text_AnnounceIndividualCategories", "en_US": [ "And now, it’s time to announce the\n", "results of the individual categories!\r" diff --git a/res/text/contest_text.json b/res/text/contest_text.json index 0f815208cd..d449b4958b 100644 --- a/res/text/contest_text.json +++ b/res/text/contest_text.json @@ -2,46 +2,46 @@ "key": 43257, "messages": [ { - "id": "pl_msg_00000204_00000", + "id": "Contest_Text_ChooseJudge", "en_US": [ "Choose the Judge you want\n", "to rate the move." ] }, { - "id": "pl_msg_00000204_00001", + "id": "Contest_Text_WhichMoveIsYourChoice", "en_US": [ "Performance {COLOR 1}no. {STRVAR_1 50, 0, 0}{COLOR 0}!\n", "Which move is your choice?" ] }, { - "id": "pl_msg_00000204_00002", + "id": "Contest_Text_LastPerformanceChooseMove", "en_US": [ "It’s the {COLOR 1}last {COLOR 0}performance!\n", "Choose your move!" ] }, { - "id": "pl_msg_00000204_00003", + "id": "Contest_Text_ToJudgeMonPerformedMove", "en_US": [ "To {STRVAR_1 3, 1, 0}, {STRVAR_1 1, 0, 0}\n", "performed {STRVAR_1 6, 2, 0}!\r" ] }, { - "id": "pl_msg_00000204_00004", + "id": "Contest_Text_SomeoneAlreadyPerformedForJudge", "en_US": [ "Oh, no! Someone already\n", "performed for that Judge!\r" ] }, { - "id": "pl_msg_00000204_00005", + "id": "Contest_Text_Empty1", "garbage": 4 }, { - "id": "pl_msg_00000204_00006", + "id": "Contest_Text_JudgeWasStronglyImpressed", "en_US": [ "{STRVAR_1 3, 0, 0} was strongly\n", "impressed by the acting of\r", @@ -50,7 +50,7 @@ ] }, { - "id": "pl_msg_00000204_00007", + "id": "Contest_Text_JudgeWasImpressed", "en_US": [ "{STRVAR_1 3, 0, 0} was impressed\n", "by the performances of\r", @@ -59,7 +59,7 @@ ] }, { - "id": "pl_msg_00000204_00008", + "id": "Contest_Text_EveryonePerformedForSameJudge", "en_US": [ "Everyone performed for\n", "{STRVAR_1 3, 0, 0}...\r", @@ -68,7 +68,7 @@ ] }, { - "id": "pl_msg_00000204_00009", + "id": "Contest_Text_JudgeWasVeryImpressed", "en_US": [ "{STRVAR_1 3, 0, 0} was very\n", "impressed by {STRVAR_1 1, 1, 0}’s\f", @@ -76,11 +76,11 @@ ] }, { - "id": "pl_msg_00000204_00010", + "id": "Contest_Text_Empty2", "garbage": 4 }, { - "id": "pl_msg_00000204_00011", + "id": "Contest_Text_CoolMovePerformedVoltageUp", "en_US": [ "Upon seeing the Cool move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -88,7 +88,7 @@ ] }, { - "id": "pl_msg_00000204_00012", + "id": "Contest_Text_BeautyMovePerformedVoltageUp", "en_US": [ "Upon seeing the Beauty move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -96,7 +96,7 @@ ] }, { - "id": "pl_msg_00000204_00013", + "id": "Contest_Text_CuteMovePerformedVoltageUp", "en_US": [ "Upon seeing the Cute move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -104,7 +104,7 @@ ] }, { - "id": "pl_msg_00000204_00014", + "id": "Contest_Text_SmartMovePerformedVoltageUp", "en_US": [ "Upon seeing the Smart move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -112,7 +112,7 @@ ] }, { - "id": "pl_msg_00000204_00015", + "id": "Contest_Text_ToughMovePerformedVoltageUp", "en_US": [ "Upon seeing the Tough move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -120,11 +120,11 @@ ] }, { - "id": "pl_msg_00000204_00016", + "id": "Contest_Text_Empty3", "garbage": 4 }, { - "id": "pl_msg_00000204_00017", + "id": "Contest_Text_CoolMovePerformedVoltageDown", "en_US": [ "Upon seeing the Cool move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -132,7 +132,7 @@ ] }, { - "id": "pl_msg_00000204_00018", + "id": "Contest_Text_BeautyMovePerformedVoltageDown", "en_US": [ "Upon seeing the Beauty move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -140,7 +140,7 @@ ] }, { - "id": "pl_msg_00000204_00019", + "id": "Contest_Text_CuteMovePerformedVoltageDown", "en_US": [ "Upon seeing the Cute move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -148,7 +148,7 @@ ] }, { - "id": "pl_msg_00000204_00020", + "id": "Contest_Text_SmartMovePerformedVoltageDown", "en_US": [ "Upon seeing the Smart move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -156,7 +156,7 @@ ] }, { - "id": "pl_msg_00000204_00021", + "id": "Contest_Text_ToughMovePerformedVoltageDown", "en_US": [ "Upon seeing the Tough move\n", "performed, {STRVAR_1 3, 0, 0}’s\f", @@ -164,80 +164,80 @@ ] }, { - "id": "pl_msg_00000204_00022", + "id": "Contest_Text_Empty4", "garbage": 4 }, { - "id": "pl_msg_00000204_00023", + "id": "Contest_Text_Empty5", "garbage": 4 }, { - "id": "pl_msg_00000204_00024", + "id": "Contest_Text_AudienceIsGettingPrettyExcited", "en_US": [ "The audience is getting\n", "pretty excited!\r" ] }, { - "id": "pl_msg_00000204_00025", + "id": "Contest_Text_AudienceIsGoingWild", "en_US": [ "The audience is going wild\n", "with excitement! {COLOR 1}+{STRVAR_1 50, 0, 0}{COLOR 0}!\r" ] }, { - "id": "pl_msg_00000204_00026", + "id": "Contest_Text_Empty6", "garbage": 4 }, { - "id": "pl_msg_00000204_00027", + "id": "Contest_Text_Empty7", "garbage": 4 }, { - "id": "pl_msg_00000204_00028", + "id": "Contest_Text_Empty8", "garbage": 4 }, { - "id": "pl_msg_00000204_00029", + "id": "Contest_Text_Empty9", "garbage": 4 }, { - "id": "pl_msg_00000204_00030", + "id": "Contest_Text_MonDidntStandOut", "en_US": [ "{STRVAR_1 1, 0, 0} didn’t stand\n", "out very much...\r" ] }, { - "id": "pl_msg_00000204_00031", + "id": "Contest_Text_MonAttractedALittleAttention", "en_US": [ "{STRVAR_1 1, 0, 0} attracted a\n", "little attention.\r" ] }, { - "id": "pl_msg_00000204_00032", + "id": "Contest_Text_MonAttractedDecentAttention", "en_US": [ "{STRVAR_1 1, 0, 0} attracted\n", "decent attention.\r" ] }, { - "id": "pl_msg_00000204_00033", + "id": "Contest_Text_MonAttractedALotOfAttention", "en_US": [ "{STRVAR_1 1, 0, 0} attracted a\n", "lot of attention!\r" ] }, { - "id": "pl_msg_00000204_00034", + "id": "Contest_Text_MonCommandedTotalAttention", "en_US": [ "{STRVAR_1 1, 0, 0} commanded\n", "total attention!\r" ] }, { - "id": "pl_msg_00000204_00035", + "id": "Contest_Text_TimeForCuteActingCompetition", "en_US": [ "OK! It’s time for the\n", "Acting Competition!\r", @@ -248,11 +248,11 @@ ] }, { - "id": "pl_msg_00000204_00036", + "id": "Contest_Text_Empty10", "garbage": 4 }, { - "id": "pl_msg_00000204_00037", + "id": "Contest_Text_TimeForSmartActingCompetition", "en_US": [ "OK! It’s time for the\n", "Acting Competition!\r", @@ -263,7 +263,7 @@ ] }, { - "id": "pl_msg_00000204_00038", + "id": "Contest_Text_TimeForToughActingCompetition", "en_US": [ "OK! It’s time for the\n", "Acting Competition!\r", @@ -274,7 +274,7 @@ ] }, { - "id": "pl_msg_00000204_00039", + "id": "Contest_Text_TimeForBeautyActingCompetition", "en_US": [ "OK! It’s time for the\n", "Acting Competition!\r", @@ -285,7 +285,7 @@ ] }, { - "id": "pl_msg_00000204_00040", + "id": "Contest_Text_TimeForCoolActingCompetition", "en_US": [ "OK! It’s time for the\n", "Acting Competition!\r", @@ -404,7 +404,7 @@ "garbage": 4 }, { - "id": "pl_msg_00000204_00068", + "id": "Contest_Text_NextTurnLowestScoringPerformFirst", "en_US": [ "In the next turn, the\n", "lowest-scoring contestants\f", @@ -412,18 +412,18 @@ ] }, { - "id": "pl_msg_00000204_00069", + "id": "Contest_Text_JudgingIsOver", "en_US": [ "That’s it! Performance\n", "judging is now over!\r" ] }, { - "id": "pl_msg_00000204_00070", + "id": "Contest_Text_Empty11", "garbage": 85 }, { - "id": "pl_msg_00000204_00071", + "id": "Contest_Text_BeginPracticeActingCompetition", "en_US": [ "Looks like everyone’s here!\r", "Let’s begin our practice\n", @@ -444,7 +444,7 @@ ] }, { - "id": "pl_msg_00000204_00072", + "id": "Contest_Text_CommunicatingPleaseStandBy", "en_US": [ "Communicating.\n", "Please stand by..." diff --git a/res/text/contest_visual_competition.json b/res/text/contest_visual_competition.json index 9cd07d4513..ab78c6ae2a 100644 --- a/res/text/contest_visual_competition.json +++ b/res/text/contest_visual_competition.json @@ -2,14 +2,14 @@ "key": 23702, "messages": [ { - "id": "pl_msg_00000209_00000", + "id": "VisualCompetition_Text_LetsBeginTheVisualCompetition", "en_US": [ "All right, thanks for your patience!\n", "Let’s begin the Visual Competition!\r" ] }, { - "id": "pl_msg_00000209_00001", + "id": "VisualCompetition_Text_EntryNumberOne", "en_US": [ "Dexter: Entry number 1!\n", "{STRVAR_1 3, 0, 0}!\r", @@ -18,7 +18,7 @@ ] }, { - "id": "pl_msg_00000209_00002", + "id": "VisualCompetition_Text_EntryNumberTwo", "en_US": [ "Dexter: Entry number 2!\n", "{STRVAR_1 3, 0, 0}!\r", @@ -27,7 +27,7 @@ ] }, { - "id": "pl_msg_00000209_00003", + "id": "VisualCompetition_Text_EntryNumberThree", "en_US": [ "Dexter: Entry number 3!\n", "{STRVAR_1 3, 0, 0}!\r", @@ -36,7 +36,7 @@ ] }, { - "id": "pl_msg_00000209_00004", + "id": "VisualCompetition_Text_EntryNumberFour", "en_US": [ "Dexter: Entry number 4!\n", "{STRVAR_1 3, 0, 0}!\r", @@ -45,38 +45,38 @@ ] }, { - "id": "pl_msg_00000209_00005", + "id": "VisualCompetition_Text_DanceCompetitionIsNext", "en_US": [ "The Dance Competition is next!\n", "Is everyone up and ready for this?!\r" ] }, { - "id": "pl_msg_00000209_00006", + "id": "VisualCompetition_Text_Empty1", "garbage": 4 }, { - "id": "pl_msg_00000209_00007", + "id": "VisualCompetition_Text_Empty2", "garbage": 4 }, { - "id": "pl_msg_00000209_00008", + "id": "VisualCompetition_Text_Empty3", "garbage": 4 }, { - "id": "pl_msg_00000209_00009", + "id": "VisualCompetition_Text_Empty4", "garbage": 4 }, { - "id": "pl_msg_00000209_00010", + "id": "VisualCompetition_Text_Empty5", "garbage": 4 }, { - "id": "pl_msg_00000209_00011", + "id": "VisualCompetition_Text_Empty6", "garbage": 4 }, { - "id": "pl_msg_00000209_00012", + "id": "VisualCompetition_Text_Empty7", "garbage": 13 }, { @@ -96,7 +96,7 @@ "garbage": 21 }, { - "id": "pl_msg_00000209_00017", + "id": "VisualCompetition_Text_PracticeSession", "en_US": [ "OK, let’s watch the reactions of the\n", "audience toward the Pokémon involved\f", diff --git a/res/text/menu_entries.json b/res/text/menu_entries.json index 4dd33d506f..5723ea49d6 100644 --- a/res/text/menu_entries.json +++ b/res/text/menu_entries.json @@ -410,19 +410,19 @@ "garbage": 17 }, { - "id": "pl_msg_00000361_00096", + "id": "MenuEntries_Text_ContestRegistration_ContestBasics", "en_US": "CONTEST BASICS" }, { - "id": "pl_msg_00000361_00097", + "id": "MenuEntries_Text_ContestRegistration_TypesOfContests", "en_US": "TYPES OF CONTESTS" }, { - "id": "pl_msg_00000361_00098", + "id": "MenuEntries_Text_ContestRegistration_ContestRanks", "en_US": "CONTEST RANKS" }, { - "id": "pl_msg_00000361_00099", + "id": "MenuEntries_Text_ContestRegistration_Cancel", "en_US": "CANCEL" }, { @@ -446,47 +446,47 @@ "garbage": 3 }, { - "id": "pl_msg_00000361_00105", + "id": "MenuEntries_Text_ContestRegistration_NormalRank", "en_US": "NORMAL RANK" }, { - "id": "pl_msg_00000361_00106", + "id": "MenuEntries_Text_ContestRegistration_GreatRank", "en_US": "GREAT RANK" }, { - "id": "pl_msg_00000361_00107", + "id": "MenuEntries_Text_ContestRegistration_UltraRank", "en_US": "ULTRA RANK" }, { - "id": "pl_msg_00000361_00108", + "id": "MenuEntries_Text_ContestRegistration_MasterRank", "en_US": "MASTER RANK" }, { - "id": "pl_msg_00000361_00109", + "id": "MenuEntries_Text_ContestRegistration_ContestRankExit", "en_US": "EXIT" }, { - "id": "pl_msg_00000361_00110", + "id": "MenuEntries_Text_ContestRegistration_CoolContest", "en_US": "COOL CONTEST" }, { - "id": "pl_msg_00000361_00111", + "id": "MenuEntries_Text_ContestRegistration_BeautyContest", "en_US": "BEAUTY CONTEST" }, { - "id": "pl_msg_00000361_00112", + "id": "MenuEntries_Text_ContestRegistration_CuteContest", "en_US": "CUTE CONTEST" }, { - "id": "pl_msg_00000361_00113", + "id": "MenuEntries_Text_ContestRegistration_SmartContest", "en_US": "SMART CONTEST" }, { - "id": "pl_msg_00000361_00114", + "id": "MenuEntries_Text_ContestRegistration_ToughContest", "en_US": "TOUGH CONTEST" }, { - "id": "pl_msg_00000361_00115", + "id": "MenuEntries_Text_ContestRegistration_ContestTypeExit", "en_US": "EXIT" }, { diff --git a/src/contest.c b/src/contest.c new file mode 100644 index 0000000000..90d215b056 --- /dev/null +++ b/src/contest.c @@ -0,0 +1,1645 @@ +#include "contest.h" + +#include +#include + +#include "constants/contests.h" +#include "constants/heap.h" +#include "generated/accessories.h" +#include "generated/game_records.h" +#include "generated/object_events_gfx.h" +#include "generated/pokemon_contest_ranks.h" +#include "generated/trainer_score_events.h" + +#include "struct_decls/struct_0202440C_decl.h" +#include "struct_defs/contest_camera_flash_task.h" +#include "struct_defs/contest_player_mon_dto.h" +#include "struct_defs/image_clips.h" +#include "struct_defs/struct_02029C88.h" +#include "struct_defs/visual_competition_app_args.h" + +#include "field/field_system.h" +#include "overlay006/ov6_022489E4.h" +#include "overlay006/struct_ov6_02248DD8.h" +#include "overlay017/ov17_0223B140.h" +#include "overlay017/ov17_0223CB1C.h" +#include "overlay017/ov17_0223DAD0.h" +#include "overlay017/ov17_0224F4D4.h" +#include "overlay022/ov22_02255D44.h" +#include "pch/global_pch.h" +#include "savedata/save_table.h" + +#include "assert.h" +#include "brightness_controller.h" +#include "chatot_cry.h" +#include "communication_information.h" +#include "communication_system.h" +#include "field_task.h" +#include "field_transition.h" +#include "game_records.h" +#include "heap.h" +#include "journal.h" +#include "link_contest_records.h" +#include "math_util.h" +#include "party.h" +#include "pokedex.h" +#include "pokemon.h" +#include "ribbon.h" +#include "rtc.h" +#include "savedata.h" +#include "sound_playback.h" +#include "string_gf.h" +#include "string_template.h" +#include "sys_task.h" +#include "sys_task_manager.h" +#include "system_flags.h" +#include "trainer_info.h" +#include "tv_episode_segment.h" +#include "unk_020298BC.h" +#include "unk_020363E8.h" +#include "unk_02094EDC.h" +#include "unk_02095AF0.h" +#include "vars_flags.h" + +FS_EXTERN_OVERLAY(overlay17); +FS_EXTERN_OVERLAY(overlay22); + +typedef struct ContestTaskEnv { + Contest *contest; + int state; +} ContestTaskEnv; + +static Contest *Contest_New(void); +static void Contest_InternalFree(Contest *contest); +static void Contest_SetLCRNGSeed(Contest *contest); +u16 Contest_GetRNGNext(Contest *contest); +BOOL Contest_SetUpLinkContest(Contest *contest); +static BOOL Contest_IsCommTaskDoneInternal(Contest *contest); +static void sub_02093C6C(SysTask *param0, void *param1); +static BOOL FieldTask_RunContest(FieldTask *param0); +static BOOL FieldTask_RunPracticeCompetition(FieldTask *param0); +void Contest_GetVisualCompetitionAppArgs(Contest *contest); +void Contest_VisualCompetitionAppArgsFree(Contest *contest); +static void sub_020944E8(Contest *contest); +static void sub_0209451C(SysTask *param0, void *param1); +static void sub_02094EB4(Contest *contest, int contestantID, UnkStruct_ov6_02248DD8 *param2); +static void SysTask_DoContestCameraFlash(SysTask *sysTask, void *contestParam); +static int CalcMonContestFame(Pokemon *mon, enum PokemonContestType contestType); +static void sub_020939E0(Contest *contest, int isGameCompleted, int isNatDexObtained); + +const ApplicationManagerTemplate ActingCompetitionAppTemplate = { + ActingCompetition_Init, + ActingCompetition_Main, + ActingCompetition_Exit, + FS_OVERLAY_ID(overlay17) +}; + +const ApplicationManagerTemplate DanceCompetitionAppTemplate = { + DanceCompetition_Init, + DanceCompetition_Main, + DanceCompetition_Exit, + FS_OVERLAY_ID(overlay17) +}; + +const ApplicationManagerTemplate VisualCompetitionScoringAppTemplate = { + VisualCompetitonScoring_Init, + VisualCompetitionScoring_Main, + VisualCompetitionScoring_Exit, + FS_OVERLAY_ID(overlay17) +}; + +const ApplicationManagerTemplate ContestFinalScoringAppTemplate = { + ContestFinalScoring_Init, + ContestFinalScoring_Main, + ContestFinalScoring_Exit, + FS_OVERLAY_ID(overlay17) +}; + +const ApplicationManagerTemplate VisualCompetitionAppTemplate = { + VisualCompetition_Init, + VisualCompetition_Main, + VisualCompetition_Exit, + FS_OVERLAY_ID(overlay22) +}; + +#define CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR 0xFF + +ALIGN_4 static const u8 sNormalRankCameraFrameDelays[][3] = { + { 0x14, 0x14, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR }, + { 0xF, 0x19, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR } +}; + +ALIGN_4 static const u8 sGreatRankCameraFrameDelays[][4] = { + { 0xA, 0xA, 0x1E, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR }, + { 0xF, 0xF, 0xF, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR } +}; + +ALIGN_4 static const u8 sUltraRankCameraFrameDelays[][5] = { + { 0xA, 0x8, 0x14, 0x1C, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR }, + { 0xF, 0xF, 0x8, 0x8, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR } +}; + +ALIGN_4 static const u8 sLinkMasterRankCameraFrameDelays[][6] = { + { 0x8, 0x8, 0x8, 0x8, 0x1E, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR }, + { 0xF, 0xF, 0x8, 0x8, 0x14, CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR } +}; + +void FieldTask_InitRunContestTask(FieldTask *fieldTask, Contest *contest) +{ + ContestTaskEnv *taskEnv = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(ContestTaskEnv)); + + MI_CpuClear8(taskEnv, sizeof(ContestTaskEnv)); + taskEnv->contest = contest; + + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_UNK0: + case CONTEST_COMPETITION_UNK1: + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: + FieldTask_InitCall(fieldTask, FieldTask_RunContest, taskEnv); + break; + default: + FieldTask_InitCall(fieldTask, FieldTask_RunPracticeCompetition, taskEnv); + break; + } +} + +enum ContestManagerState { + CONTEST_MANAGER_STATE_START, + CONTEST_MANAGER_STATE_WAIT_FOR_COMM_TASK, + CONTEST_MANAGER_STATE_START_COMM_SYNC_0, + CONTEST_MANAGER_STATE_CONFIRM_COMM_SYNC_0, + CONTEST_MANAGER_STATE_RUN_APP_VISUAL_COMPETITION, + CONTEST_MANAGER_STATE_5, + CONTEST_MANAGER_STATE_WAIT_FOR_COMM_TASK_2, + CONTEST_MANAGER_STATE_RUN_APP_VISUAL_COMPETITION_SCORING, + CONTEST_MANAGER_STATE_RUN_APP_DANCE_COMPETITION, + CONTEST_MANAGER_STATE_RUN_APP_ACTING_COMPETITION, + CONTEST_MANAGER_STATE_RUN_APP_FINAL_SCORING, + CONTEST_MANAGER_STATE_WAIT_ONE_FRAME, + CONTEST_MANAGER_STATE_RETURN_TO_MAP, + CONTEST_MANAGER_STATE_END +}; + +static BOOL FieldTask_RunContest(FieldTask *fieldTask) +{ + FieldSystem *fieldSystem = FieldTask_GetFieldSystem(fieldTask); + ContestTaskEnv *taskEnv = FieldTask_GetEnv(fieldTask); + + switch (taskEnv->state) { + case CONTEST_MANAGER_STATE_START: + FieldTransition_FinishMap(fieldTask); + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_WAIT_FOR_COMM_TASK: + if (taskEnv->contest->isLinkContest == FALSE || Contest_IsCommTaskDoneInternal(taskEnv->contest) == 1) { + taskEnv->state++; + } + break; + case CONTEST_MANAGER_STATE_START_COMM_SYNC_0: + if (taskEnv->contest->isLinkContest == TRUE) { + CommTiming_StartSync(0); + } + + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_CONFIRM_COMM_SYNC_0: + if (taskEnv->contest->isLinkContest == TRUE) { + if (CommTiming_IsSyncState(0) == TRUE) { + taskEnv->state++; + } + } else { + taskEnv->state++; + } + break; + case CONTEST_MANAGER_STATE_RUN_APP_VISUAL_COMPETITION: + Contest_GetVisualCompetitionAppArgs(taskEnv->contest); + FieldTask_RunApplication(fieldTask, &VisualCompetitionAppTemplate, taskEnv->contest->visualCompetitionAppArgs); + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_5: + Contest_VisualCompetitionAppArgsFree(taskEnv->contest); + + if (taskEnv->contest->isLinkContest == TRUE) { + sub_020944E8(taskEnv->contest); + taskEnv->state++; + } else { + taskEnv->state = CONTEST_MANAGER_STATE_WAIT_FOR_COMM_TASK_2; + } + break; + case CONTEST_MANAGER_STATE_WAIT_FOR_COMM_TASK_2: + if (taskEnv->contest->isLinkContest == FALSE || Contest_IsCommTaskDoneInternal(taskEnv->contest) == TRUE) { + taskEnv->state++; + } + break; + case CONTEST_MANAGER_STATE_RUN_APP_VISUAL_COMPETITION_SCORING: + FieldTask_RunApplication(fieldTask, &VisualCompetitionScoringAppTemplate, taskEnv->contest); + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_RUN_APP_DANCE_COMPETITION: + if (taskEnv->contest->unk_00.competitionType == CONTEST_COMPETITION_UNK1 || taskEnv->contest->unk_00.competitionType == CONTEST_COMPETITION_LINK_OR_OFFICIAL) { + FieldTask_RunApplication(fieldTask, &DanceCompetitionAppTemplate, taskEnv->contest); + } + + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_RUN_APP_ACTING_COMPETITION: + if (taskEnv->contest->unk_00.competitionType == CONTEST_COMPETITION_UNK0 || taskEnv->contest->unk_00.competitionType == CONTEST_COMPETITION_LINK_OR_OFFICIAL) { + FieldTask_RunApplication(fieldTask, &ActingCompetitionAppTemplate, taskEnv->contest); + } + + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_RUN_APP_FINAL_SCORING: + FieldTask_RunApplication(fieldTask, &ContestFinalScoringAppTemplate, taskEnv->contest); + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_WAIT_ONE_FRAME: + taskEnv->state++; + break; + case CONTEST_MANAGER_STATE_RETURN_TO_MAP: + FieldTransition_StartMap(fieldTask); + taskEnv->state++; + break; + default: + GF_ASSERT(0); + case CONTEST_MANAGER_STATE_END: + Heap_Free(taskEnv); + return TRUE; + } + + return FALSE; +} + +static BOOL FieldTask_RunPracticeCompetition(FieldTask *fieldTask) +{ + FieldSystem *fieldSystem = FieldTask_GetFieldSystem(fieldTask); + ContestTaskEnv *taskEnv = FieldTask_GetEnv(fieldTask); + + switch (taskEnv->state) { + case 0: + FieldTransition_FinishMap(fieldTask); + taskEnv->state++; + break; + case 1: + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: + Contest_GetVisualCompetitionAppArgs(taskEnv->contest); + FieldTask_RunApplication(fieldTask, &VisualCompetitionAppTemplate, taskEnv->contest->visualCompetitionAppArgs); + break; + } + + taskEnv->state++; + break; + case 2: + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: + Contest_VisualCompetitionAppArgsFree(taskEnv->contest); + break; + } + + taskEnv->state++; + break; + case 3: + taskEnv->state++; + break; + case 4: + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: + FieldTask_RunApplication(fieldTask, &VisualCompetitionScoringAppTemplate, taskEnv->contest); + break; + } + + taskEnv->state++; + break; + case 5: + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: + sub_02095338(taskEnv->contest); + FieldTask_RunApplication(fieldTask, &DanceCompetitionAppTemplate, taskEnv->contest); + break; + } + + taskEnv->state++; + break; + case 6: + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: + FieldTask_RunApplication(fieldTask, &ActingCompetitionAppTemplate, taskEnv->contest); + break; + } + + taskEnv->state++; + break; + case 7: { + s32 v2[4]; + int v3, v4; + + switch (taskEnv->contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: + for (v3 = 0; v3 < 4; v3++) { + v2[v3] = sub_02095928(taskEnv->contest, v3) + + sub_0209598C(taskEnv->contest, v3); + } + break; + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: + for (v3 = 0; v3 < 4; v3++) { + v2[v3] = taskEnv->contest->unk_00.unk_118[v3].unk_04; + } + break; + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: + for (v3 = 0; v3 < 4; v3++) { + v2[v3] = taskEnv->contest->unk_00.unk_118[v3].unk_06; + } + break; + } + + v4 = 0; + + for (v3 = 1; v3 < 4; v3++) { + if (v2[0] < v2[v3]) { + v4++; + } + } + + taskEnv->contest->unk_00.unk_118[0].contestPlacement = v4; + } + taskEnv->state++; + break; + case 8: + FieldTransition_StartMap(fieldTask); + taskEnv->state++; + break; + default: + GF_ASSERT(0); + case 9: + Heap_Free(taskEnv); + return 1; + } + + return 0; +} + +static Contest *Contest_New(void) +{ + Contest *contest = Heap_Alloc(HEAP_ID_20, sizeof(Contest)); + MI_CpuClear8(contest, sizeof(Contest)); + + contest->unk_00.playerContestantID = PLAYER_CONTESTANT_ID; + contest->unk_00.connectionCount = 1; + contest->unk_00.npcCount = CONTEST_NUM_PARTICIPANTS - 1; + + return contest; +} + +static void Contest_InternalFree(Contest *contest) +{ + Heap_Free(contest); +} + +Contest *Contest_Init(const PlayerMonContestDTO *playerMonContestDTO) +{ + Heap_Create(HEAP_ID_FIELD2, HEAP_ID_20, 0x3000 + 0x1000); + + Contest *contest = Contest_New(); + contest->rngSeed = LCRNG_GetSeed(); + + Contest_SetLCRNGSeed(contest); + + contest->unk_00.contestType = playerMonContestDTO->contestType; + contest->unk_00.contestRank = playerMonContestDTO->contestRank; + contest->unk_00.competitionType = playerMonContestDTO->competitionType; + contest->unk_00.unk_112 = sub_02095A74(playerMonContestDTO->contestRank, FALSE); + contest->unk_00.unk_10C = contest->unk_00.playerContestantID; + contest->unk_00.unk_115 = 110; + contest->unk_00.unk_10D = contest->unk_00.unk_115; + contest->unk_00.unk_10E = 1; + contest->imageClips = playerMonContestDTO->imageClips; + contest->options = playerMonContestDTO->options; + contest->saveData = playerMonContestDTO->saveData; + contest->playerMon = playerMonContestDTO->mon; + contest->monPartySlot = playerMonContestDTO->monPartySlot; + contest->trainerInfo = playerMonContestDTO->trainerInfo; + contest->isGameCompleted = playerMonContestDTO->isGameCompleted; + contest->isNatDexObtained = playerMonContestDTO->isNatDexObtained; + + int i; + for (i = 0; i < 4; i++) { + contest->unk_00.unk_E8[i] = sub_02029C88(HEAP_ID_20); + } + + sub_020954F0(contest, HEAP_ID_FIELD2, contest->unk_00.unk_10E, contest->unk_00.contestType, contest->unk_00.contestRank); + contest->party = Party_New(HEAP_ID_20); + + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->unk_00.contestMons[i] = Pokemon_New(HEAP_ID_20); + } + + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->chatotCry[i] = ChatotCry_New(HEAP_ID_20); + } + + ChatotCry_Copy(contest->chatotCry[PLAYER_CONTESTANT_ID], playerMonContestDTO->chatotCry); + + { + Pokemon_Copy(playerMonContestDTO->mon, contest->unk_00.contestMons[PLAYER_CONTESTANT_ID]); + contest->unk_00.trainerNames[PLAYER_CONTESTANT_ID] = String_Init(8, HEAP_ID_20); + String_Copy(contest->unk_00.trainerNames[PLAYER_CONTESTANT_ID], playerMonContestDTO->trainerName); + + contest->unk_00.trainerGenders[PLAYER_CONTESTANT_ID] = TrainerInfo_Gender(playerMonContestDTO->trainerInfo); + contest->unk_00.unk_FC[PLAYER_CONTESTANT_ID] = 0; + contest->unk_00.monContestFame[PLAYER_CONTESTANT_ID] = CalcMonContestFame(contest->unk_00.contestMons[PLAYER_CONTESTANT_ID], contest->unk_00.contestType); + + if (Contest_IsPracticeCompetition(contest) == FALSE) { + if (TrainerInfo_Gender(playerMonContestDTO->trainerInfo) == GENDER_MALE) { + contest->unk_00.contestantObjEventGFX[PLAYER_CONTESTANT_ID] = OBJ_EVENT_GFX_PLAYER_M_CONTEST; + } else { + contest->unk_00.contestantObjEventGFX[PLAYER_CONTESTANT_ID] = OBJ_EVENT_GFX_PLAYER_F_CONTEST; + } + } else { + if (TrainerInfo_Gender(playerMonContestDTO->trainerInfo) == GENDER_MALE) { + contest->unk_00.contestantObjEventGFX[PLAYER_CONTESTANT_ID] = OBJ_EVENT_GFX_PLAYER_M; + } else { + contest->unk_00.contestantObjEventGFX[PLAYER_CONTESTANT_ID] = OBJ_EVENT_GFX_PLAYER_F; + } + } + } + + sub_020939E0(contest, playerMonContestDTO->isGameCompleted, playerMonContestDTO->isNatDexObtained); + + if (Contest_IsPracticeCompetition(contest) == TRUE) { + for (i = 0; i < 4; i++) { + contest->unk_156[i] = 4 - i - 1; + } + } else { + for (i = 0; i < 4; i++) { + contest->unk_156[i] = i; + } + } + + return contest; +} + +static void sub_020939E0(Contest *contest, int isGameCompleted, int isNatDexObtained) +{ + int v0 = 4 - 1; + int i; + + sub_02094F04(contest, HEAP_ID_FIELD2, v0, contest->unk_00.contestType, contest->unk_00.contestRank, contest->unk_00.competitionType, isGameCompleted, isNatDexObtained); + + // starts at 1, because 0 was already initialized for player + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + sub_02095380(&contest->unk_00.unk_10[i], contest->unk_00.contestMons[i], HEAP_ID_20); + } + + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + if (contest->unk_00.trainerNames[i] == NULL) { + contest->unk_00.trainerNames[i] = String_Init(8, HEAP_ID_20); + } + + Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_OT_NAME_STRING, contest->unk_00.trainerNames[i]); + } + + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->unk_00.trainerGenders[i] = contest->unk_00.unk_10[i].unk_20_12; + } + + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->unk_00.unk_FC[i] = contest->unk_00.unk_10[i].unk_20_14; + } + + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->unk_00.monContestFame[i] = contest->unk_00.unk_10[i].unk_2E; + } + + for (i = 1; i < CONTEST_NUM_PARTICIPANTS; i++) { + contest->unk_00.contestantObjEventGFX[i] = contest->unk_00.unk_10[i].unk_08; + } + + sub_020951B0(contest, HEAP_ID_FIELD2); +} + +void Contest_Free(Contest *contest) +{ + Heap_Free(contest->party); + + for (int i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + Heap_Free(contest->unk_00.contestMons[i]); + String_Free(contest->unk_00.trainerNames[i]); + Heap_Free(contest->unk_00.unk_E8[i]); + Heap_Free(contest->chatotCry[i]); + } + + LCRNG_SetSeed(contest->rngSeed); + Contest_InternalFree(contest); + Heap_Destroy(HEAP_ID_20); +} + +static int CalcMonContestFame(Pokemon *mon, enum PokemonContestType contestType) +{ + int ribbon; + int fame = 1; + + for (int i = 0; i <= CONTEST_NUM_RANKS; i++) { + switch (contestType) { + case CONTEST_TYPE_COOL: + ribbon = Pokemon_GetValue(mon, MON_DATA_SUPER_COOL_RIBBON + i, NULL); + break; + case CONTEST_TYPE_BEAUTY: + ribbon = Pokemon_GetValue(mon, MON_DATA_SUPER_BEAUTY_RIBBON + i, NULL); + break; + case CONTEST_TYPE_CUTE: + ribbon = Pokemon_GetValue(mon, MON_DATA_SUPER_CUTE_RIBBON + i, NULL); + break; + case CONTEST_TYPE_SMART: + ribbon = Pokemon_GetValue(mon, MON_DATA_SUPER_SMART_RIBBON + i, NULL); + break; + case CONTEST_TYPE_TOUGH: + ribbon = Pokemon_GetValue(mon, MON_DATA_SUPER_TOUGH_RIBBON + i, NULL); + break; + default: + GF_ASSERT(FALSE); + break; + } + + if (ribbon == 0) { + break; + } + + fame++; + } + + return fame; +} + +void Contest_GetVisualCompetitionAppArgs(Contest *contest) +{ + VisualCompetitionAppArgs *appArgs; + + sub_0202A25C(contest->unk_00.unk_E8[contest->unk_00.playerContestantID]); + + appArgs = Heap_Alloc(HEAP_ID_20, sizeof(VisualCompetitionAppArgs)); + MI_CpuClear8(appArgs, sizeof(VisualCompetitionAppArgs)); + + appArgs->mon = contest->unk_00.contestMons[contest->unk_00.playerContestantID]; + appArgs->unk_04 = contest->unk_00.unk_E8[contest->unk_00.playerContestantID]; + appArgs->unk_08 = contest->unk_00.unk_112; + + if (contest->isLinkContest == TRUE) { + appArgs->contestRank = CONTEST_RANK_LINK; + } else { + appArgs->contestRank = contest->unk_00.contestRank; + } + + appArgs->competitionType = contest->unk_00.competitionType; + appArgs->contestType = contest->unk_00.contestType; + appArgs->fashionCase = ImageClips_GetFashionCase(contest->imageClips); + appArgs->unk_1C = &contest->unk_1984; + appArgs->options = contest->options; + appArgs->trainerInfo = contest->trainerInfo; + + contest->visualCompetitionAppArgs = appArgs; +} + +void Contest_VisualCompetitionAppArgsFree(Contest *contest) +{ + Heap_Free(contest->visualCompetitionAppArgs); + contest->visualCompetitionAppArgs = NULL; +} + +static void sub_02093C6C(SysTask *sysTask, void *param1) +{ + Contest *contest = param1; + + switch (contest->linkState) { + case 0: + CommTiming_StartSync(5); + contest->unk_568 = 0; + contest->linkState++; + break; + case 1: + if (CommTiming_IsSyncState(5) == 1) { + contest->linkState++; + } + break; + case 2: + if (ov6_02248A64(contest) == 1) { + contest->linkState++; + } + break; + case 3: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 4: + CommTiming_StartSync(6); + contest->unk_568 = 0; + contest->linkState++; + break; + case 5: + if (CommTiming_IsSyncState(6) == 1) { + contest->linkState++; + } + break; + case 6: + if (ov6_02248AF0(contest, contest->unk_00.playerContestantID, contest->unk_00.contestMons[PLAYER_CONTESTANT_ID]) == 1) { + contest->linkState++; + } + break; + case 7: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 8: + CommTiming_StartSync(7); + contest->unk_568 = 0; + contest->linkState++; + break; + case 9: + if (CommTiming_IsSyncState(7) == 1) { + contest->linkState++; + } + break; + case 10: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + if (ov6_02248B70(contest, contest->unk_00.contestMons) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 11: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 12: + CommTiming_StartSync(8); + contest->unk_568 = 0; + contest->linkState++; + break; + case 13: + if (CommTiming_IsSyncState(8) == 1) { + contest->linkState++; + } + break; + case 14: + if (ov6_02248BE8(contest, contest->unk_00.playerContestantID, &contest->unk_00.unk_10[0]) == 1) { + contest->linkState++; + } + break; + case 15: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 16: + CommTiming_StartSync(9); + contest->unk_568 = 0; + contest->linkState++; + break; + case 17: + if (CommTiming_IsSyncState(9) == 1) { + contest->linkState++; + } + break; + case 18: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + if (ov6_02248BE8(contest, contest->unk_15C, &contest->unk_00.unk_10[contest->unk_15C]) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 19: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->unk_15C++; + + if (contest->unk_15C < 4) { + contest->linkState--; + } else { + contest->unk_15C = 0; + contest->linkState++; + } + } + break; + case 20: + CommTiming_StartSync(10); + contest->unk_568 = 0; + contest->linkState++; + break; + case 21: + if (CommTiming_IsSyncState(10) == 1) { + contest->linkState++; + } + break; + case 22: + if (ov6_02248CE8(contest, contest->unk_00.playerContestantID, contest->unk_00.trainerNames[PLAYER_CONTESTANT_ID]) == 1) { + contest->linkState++; + } + break; + case 23: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + { + int netID; + const TrainerInfo *v2; + + for (netID = 0; netID < contest->unk_00.connectionCount; netID++) { + v2 = CommInfo_TrainerInfo(netID); + String_Clear(contest->unk_00.trainerNames[netID]); + TrainerInfo_NameString(v2, contest->unk_00.trainerNames[netID]); + } + } + + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 24: + CommTiming_StartSync(11); + contest->unk_568 = 0; + contest->linkState++; + break; + case 25: + if (CommTiming_IsSyncState(11) == 1) { + contest->linkState++; + } + break; + case 26: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + if (ov6_02248CE8(contest, contest->unk_15C, contest->unk_00.trainerNames[contest->unk_15C]) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 27: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->unk_15C++; + + if (contest->unk_15C < 4) { + contest->linkState--; + } else { + contest->unk_15C = 0; + contest->linkState++; + } + } + break; + case 28: + MI_CpuCopy8(contest->chatotCry[PLAYER_CONTESTANT_ID], contest->unk_569, ChatotCry_SaveSize()); + CommTiming_StartSync(12); + + contest->unk_568 = 0; + contest->linkState++; + break; + case 29: + if (CommTiming_IsSyncState(12) == 1) { + contest->linkState++; + } + break; + case 30: + if (ov6_02248D64(contest, contest->unk_00.playerContestantID, NULL) == 1) { + contest->linkState++; + } + break; + case 31: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 32: + CommTiming_StartSync(13); + contest->unk_568 = 0; + contest->linkState++; + break; + case 33: + if (CommTiming_IsSyncState(13) == 1) { + contest->linkState++; + } + break; + case 34: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + if (ov6_02248D64(contest, contest->unk_15C, contest->chatotCry[contest->unk_15C]) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 35: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->unk_15C++; + + if (contest->unk_15C < 4) { + contest->linkState--; + } else { + contest->unk_15C = 0; + contest->linkState++; + } + } + break; + case 36: + CommTiming_StartSync(14); + contest->unk_568 = 0; + contest->linkState++; + break; + case 37: + if (CommTiming_IsSyncState(14) == 1) { + contest->linkState++; + } + break; + case 38: { + UnkStruct_ov6_02248DD8 v3; + + sub_02094EB4(contest, 0, &v3); + + if (ov6_02248DD8(contest, contest->unk_00.playerContestantID, &v3) == 1) { + contest->linkState++; + } + } break; + case 39: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 40: + CommTiming_StartSync(15); + contest->unk_568 = 0; + contest->linkState++; + break; + case 41: + if (CommTiming_IsSyncState(15) == 1) { + contest->linkState++; + } + break; + case 42: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + UnkStruct_ov6_02248DD8 v4; + + sub_02094EB4(contest, contest->unk_15C, &v4); + + if (ov6_02248DD8(contest, contest->unk_15C, &v4) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 43: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->unk_15C++; + + if (contest->unk_15C < 4) { + contest->linkState--; + } else { + contest->unk_15C = 0; + contest->linkState++; + } + } + break; + case 44: + CommTiming_StartSync(16); + contest->unk_568 = 0; + contest->linkState++; + break; + case 45: + if (CommTiming_IsSyncState(16) == 1) { + contest->linkState++; + } + break; + case 46: + if (ov6_02248C68(contest, contest->unk_00.playerContestantID, contest->unk_00.unk_C0) == 1) { + contest->linkState++; + } + break; + case 47: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + default: { + int contestantID; + const TrainerInfo *trainerInfo; + + for (contestantID = 0; contestantID < contest->unk_00.connectionCount; contestantID++) { + trainerInfo = CommInfo_TrainerInfo(contestantID); + contest->unk_00.trainerGenders[contestantID] = TrainerInfo_Gender(trainerInfo); + } + + for (; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + contest->unk_00.trainerGenders[contestantID] = contest->unk_00.unk_10[contestantID].unk_20_12; + } + } + + contest->unk_1984.unk_14 = contest->unk_00.unk_10C; + contest->unk_1984.unk_15 = contest->unk_00.unk_114; + contest->unk_1984.unk_16 = 1; + contest->unk_1984.unk_17 = contest->unk_00.connectionCount; + + contest->commTask = NULL; + contest->linkState = 0; + + SysTask_Done(sysTask); + return; + } +} + +BOOL Contest_SetUpLinkContest(Contest *contest) +{ + if (CommSys_IsInitialized() == FALSE) { + return FALSE; + } + + contest->isLinkContest = TRUE; + + int connectionCount = CommSys_ConnectedCount(); + int netID = CommSys_CurNetId(); + + { + int i; + TrainerInfo *connectedTrainerInfo; + + for (i = 0; i < connectionCount; i++) { + connectedTrainerInfo = CommInfo_TrainerInfo(i); + GF_ASSERT(connectedTrainerInfo != NULL); + + if (TrainerInfo_IsMainStoryCleared(connectedTrainerInfo) == FALSE) { + break; + } + } + + if (i != connectionCount) { + contest->isGameCompleted = FALSE; + } else { + contest->isGameCompleted = TRUE; + } + + for (i = 0; i < connectionCount; i++) { + connectedTrainerInfo = CommInfo_TrainerInfo(i); + GF_ASSERT(connectedTrainerInfo != NULL); + + if (TrainerInfo_HasNationalDex(connectedTrainerInfo) == FALSE) { + break; + } + } + + if (i != connectionCount) { + contest->isNatDexObtained = FALSE; + } else { + contest->isNatDexObtained = TRUE; + } + + sub_020939E0(contest, contest->isGameCompleted, contest->isNatDexObtained); + + for (i = 0; i < connectionCount; i++) { + connectedTrainerInfo = CommInfo_TrainerInfo(i); + + if (TrainerInfo_GameCode(connectedTrainerInfo) == 0) { + contest->unk_15B++; + } + } + } + + contest->unk_00.unk_114 = netID; + contest->unk_00.npcCount = CONTEST_NUM_PARTICIPANTS - connectionCount; + contest->unk_00.connectionCount = connectionCount; + contest->unk_00.playerContestantID = netID; + contest->unk_00.unk_115 = 110; + contest->unk_00.unk_112 = sub_02095A74(contest->unk_00.contestRank, TRUE); + + sub_02095AF0(contest); + + contest->commTask = SysTask_Start(sub_02093C6C, contest, 10); + + return TRUE; +} + +BOOL Contest_IsCommTaskDone(Contest *contest) +{ + return Contest_IsCommTaskDoneInternal(contest); +} + +BOOL Contest_IsCommTaskDoneInternal(Contest *contest) +{ + if (contest->commTask == NULL) { + return TRUE; + } + + return FALSE; +} + +static void sub_020944E8(Contest *contest) +{ + GF_ASSERT(contest->commTask == NULL); + + contest->linkState = 0; + contest->commTask = SysTask_Start(sub_0209451C, contest, 10); +} + +static void sub_0209451C(SysTask *sysTask, void *param1) +{ + Contest *contest = param1; + + switch (contest->linkState) { + case 0: + CommTiming_StartSync(17); + contest->unk_568 = 0; + contest->linkState++; + break; + case 1: + if (CommTiming_IsSyncState(17) == 1) { + contest->linkState++; + } + break; + case 2: + if (sub_02095B5C(contest, contest->unk_00.playerContestantID, contest->unk_00.unk_E8[contest->unk_00.playerContestantID]) == 1) { + contest->linkState++; + } + break; + case 3: + if (contest->unk_568 >= contest->unk_00.connectionCount) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + case 4: + CommTiming_StartSync(18); + contest->unk_568 = 0; + contest->linkState++; + break; + case 5: + if (CommTiming_IsSyncState(18) == 1) { + contest->linkState++; + } + break; + case 6: + if (contest->unk_00.playerContestantID == contest->unk_00.unk_10C) { + if (sub_02095BEC(contest, contest->unk_00.unk_E8) == 1) { + contest->linkState++; + } + } else { + contest->linkState++; + } + break; + case 7: + if (contest->unk_568 > 0) { + contest->unk_568 = 0; + contest->linkState++; + } + break; + default: + contest->commTask = NULL; + contest->linkState = 0; + SysTask_Done(sysTask); + return; + } +} + +void Contest_BufferJudgeName(Contest *contest, int judgeID, StringTemplate *strTemplate, u32 idx) +{ + StringTemplate_SetContestJudgeName(strTemplate, idx, contest->unk_00.unk_C0[judgeID].judgeNameMessageID); +} + +void Contest_BufferContestantTrainerName(Contest *contest, int contestantEntryNum, StringTemplate *strTemplate, u32 idx) +{ + int contestantID = Contest_ContestantEntryNumToContestantID(contestantEntryNum); + StringTemplate_SetString(strTemplate, idx, contest->unk_00.trainerNames[contestantID], contest->unk_00.trainerGenders[contestantID], 1, GAME_LANGUAGE); +} + +void Contest_BufferMonNickname(Contest *contest, int contestantEntryNum, StringTemplate *strTemplate, u32 idx) +{ + BoxPokemon *boxMon; + int contestantID = Contest_ContestantEntryNumToContestantID(contestantEntryNum); + boxMon = Pokemon_GetBoxPokemon(contest->unk_00.contestMons[contestantID]); + + StringTemplate_SetNickname(strTemplate, idx, boxMon); +} + +void Contest_BufferContestRank(Contest *contest, StringTemplate *strTemplate, u32 idx) +{ + u32 contestRankMessageID = Contest_GetContestRankTitleMessageID(contest->unk_00.contestRank, contest->unk_00.competitionType, contest->isLinkContest); + StringTemplate_SetContestRankName(strTemplate, idx, contestRankMessageID); +} + +void Contest_BufferContestType(Contest *contest, StringTemplate *strTemplate, u32 idx) +{ + u32 contestTypeMessageID = Contest_GetFullContestTypeMessageID(contest->unk_00.contestType, contest->unk_00.competitionType); + StringTemplate_SetContestTypeName(strTemplate, idx, contestTypeMessageID); +} + +void Contest_BufferWinningContestantTrainerName(Contest *contest, StringTemplate *strTemplate, u32 param2) +{ + int i; + + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + if (contest->unk_00.unk_118[i].contestPlacement == 0) { + break; + } + } + + int contestantID = i; + int contestantEntryNum = Contest_ContestantIDToContestantEntryNum(contestantID); + + Contest_BufferContestantTrainerName(contest, contestantEntryNum, strTemplate, param2); +} + +void Contest_BufferWinningContestantMonName(Contest *contest, StringTemplate *strTemplate, u32 idx) +{ + int contestantID, contestantEntryNum; + int i; + + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + if (contest->unk_00.unk_118[i].contestPlacement == 0) { + break; + } + } + + contestantID = i; + contestantEntryNum = Contest_ContestantIDToContestantEntryNum(contestantID); + + Contest_BufferMonNickname(contest, contestantEntryNum, strTemplate, idx); +} + +BOOL Contest_True(Contest *contest) +{ + return TRUE; +} + +void Contest_StartCommSync(Contest *contest, u8 syncNo) +{ + if (contest->isLinkContest == FALSE) { + return; + } + + CommTiming_StartSync(syncNo); +} + +BOOL Contest_IsSyncState(Contest *contest, u8 syncState) +{ + if (contest->isLinkContest == FALSE) { + return TRUE; + } + + if (CommTiming_IsSyncState(syncState) == TRUE) { + return TRUE; + } + + return FALSE; +} + +int Contest_GetPlayerContestPlacement(Contest *contest) +{ + return contest->unk_00.unk_118[contest->unk_00.playerContestantID].contestPlacement; +} + +int Contest_GetWinningContestantEntryNum(Contest *contest) +{ + int contestantID; + + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + if (contest->unk_00.unk_118[contestantID].contestPlacement == 0) { + return Contest_ContestantIDToContestantEntryNum(contestantID); + } + } + + return 0; +} + +int Contest_GetPlayerContestantEntryNum(Contest *contest) +{ + return Contest_ContestantIDToContestantEntryNum(contest->unk_00.playerContestantID); +} + +int Contest_GetContestantObjEventGFX(Contest *contest, int contestantEntryNum) +{ + int contestantID = Contest_ContestantEntryNumToContestantID(contestantEntryNum); + int contestantObjEventGFX = contest->unk_00.contestantObjEventGFX[contestantID]; + + return contestantObjEventGFX; +} + +int Contest_GetContestantMonContestFame(Contest *contest, int contestantEntryNum) +{ + int ContestantID = Contest_ContestantEntryNumToContestantID(contestantEntryNum); + return contest->unk_00.monContestFame[ContestantID]; +} + +int Contest_GetContestMode(Contest *contest) +{ + if (contest->isLinkContest == TRUE) { + return CONTEST_MODE_LINK; + } + + if (Contest_IsPracticeCompetition(contest) == TRUE) { + return CONTEST_MODE_PRACTICE; + } + + return CONTEST_MODE_OFFICIAL; +} + +void Contest_GetContestInfo(Contest *contest, u16 *contestRank, u16 *contestType, u16 *competitionType, u16 *monPartySlot) +{ + *contestRank = contest->unk_00.contestRank; + *contestType = contest->unk_00.contestType; + *competitionType = contest->unk_00.competitionType; + *monPartySlot = contest->monPartySlot; +} + +void Contest_LockAutoScrollForLinkContests(Contest *contest) +{ + SetLockTextWithAutoScroll(contest->isLinkContest); +} + +void Contest_LockTextSpeed(Contest *contest) +{ + LockTextSpeed(); +} + +BOOL Contest_CheckPlayerMonHasRibbon(Contest *contest) +{ + u32 monDataRibbon = CalcMonDataRibbon(contest->unk_00.contestRank, contest->unk_00.contestType); + + if (Pokemon_GetValue(contest->playerMon, monDataRibbon, NULL) == FALSE) { + return FALSE; + } + + return TRUE; +} + +void Contest_SetRibbonName(Contest *contest, StringTemplate *string, u32 idx, int unused) +{ + u32 ribbonID, ribbon; + + switch (contest->unk_00.contestType) { + case CONTEST_TYPE_COOL: + ribbonID = RIBBON_COOL + contest->unk_00.contestRank; + break; + case CONTEST_TYPE_BEAUTY: + ribbonID = RIBBON_BEAUTY + contest->unk_00.contestRank; + break; + case CONTEST_TYPE_CUTE: + ribbonID = RIBBON_CUTE + contest->unk_00.contestRank; + break; + case CONTEST_TYPE_SMART: + ribbonID = RIBBON_SMART + contest->unk_00.contestRank; + break; + case CONTEST_TYPE_TOUGH: + ribbonID = RIBBON_TOUGH + contest->unk_00.contestRank; + break; + default: + GF_ASSERT(FALSE); + return; + } + + ribbon = Ribbon_GetData(ribbonID, RIBBON_DATA_NAME_ID); + StringTemplate_SetRibbonName(string, idx, ribbon); +} + +u32 Contest_CalcFirstTimeVictoryAccessoryReward(Contest *contest) +{ + u32 accessoryID = ACCESSORY_COUNT; + + if (contest->unk_00.unk_118[contest->unk_00.playerContestantID].contestPlacement > 0) { + return 0xffff; + } + + switch (contest->unk_00.contestType) { + case CONTEST_TYPE_COOL: + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + accessoryID = ACCESSORY_RED_BARRETTE; + break; + case CONTEST_RANK_GREAT: + accessoryID = ACCESSORY_RED_BALLOONS; + break; + case CONTEST_RANK_ULTRA: + accessoryID = ACCESSORY_TOP_HAT; + break; + case CONTEST_RANK_MASTER: + accessoryID = ACCESSORY_GOLD_PEDESTAL; + break; + } + break; + case CONTEST_TYPE_BEAUTY: + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + accessoryID = ACCESSORY_BLUE_BARRETTE; + break; + case CONTEST_RANK_GREAT: + accessoryID = ACCESSORY_BLUE_BALLOONS; + break; + case CONTEST_RANK_ULTRA: + accessoryID = ACCESSORY_SILK_VEIL; + break; + case CONTEST_RANK_MASTER: + accessoryID = ACCESSORY_GLASS_STAGE; + break; + } + break; + case CONTEST_TYPE_CUTE: + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + accessoryID = ACCESSORY_PINK_BARRETTE; + break; + case CONTEST_RANK_GREAT: + accessoryID = ACCESSORY_PINK_BALLOON; + break; + case CONTEST_RANK_ULTRA: + accessoryID = ACCESSORY_LACE_HEADDRESS; + break; + case CONTEST_RANK_MASTER: + accessoryID = ACCESSORY_FLOWER_STAGE; + break; + } + break; + case CONTEST_TYPE_SMART: + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + accessoryID = ACCESSORY_GREEN_BARRETTE; + break; + case CONTEST_RANK_GREAT: + accessoryID = ACCESSORY_GREEN_BALLOONS; + break; + case CONTEST_RANK_ULTRA: + accessoryID = ACCESSORY_PROFESSOR_HAT; + break; + case CONTEST_RANK_MASTER: + accessoryID = ACCESSORY_CUBE_STAGE; + break; + } + break; + case CONTEST_TYPE_TOUGH: + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + accessoryID = ACCESSORY_YELLOW_BARRETTE; + break; + case CONTEST_RANK_GREAT: + accessoryID = ACCESSORY_YELLOW_BALLOONS; + break; + case CONTEST_RANK_ULTRA: + accessoryID = ACCESSORY_HEROIC_HEADBAND; + break; + case CONTEST_RANK_MASTER: + accessoryID = ACCESSORY_AWARD_PODIUM; + break; + } + break; + } + + GF_ASSERT(accessoryID != ACCESSORY_COUNT); + + ImageClips *imageClips = SaveData_GetImageClips(contest->saveData); + FashionCase *fashionCase = ImageClips_GetFashionCase(imageClips); + + if (!FashionCase_CanFitAccessoryCount(fashionCase, accessoryID, 1)) { + return 0xffff; + } + + return accessoryID; +} + +void Contest_StartCameraFlashTask(Contest *contest, int contestantEntryNum) +{ + ContestCameraFlashTask *cameraFlashTask; + + GF_ASSERT(contest->cameraFlashTask == NULL); + + cameraFlashTask = Heap_AllocAtEnd(HEAP_ID_FIELD1, sizeof(ContestCameraFlashTask)); + MI_CpuClear8(cameraFlashTask, sizeof(ContestCameraFlashTask)); + cameraFlashTask->contestantID = Contest_ContestantEntryNumToContestantID(contestantEntryNum); + + int varianceIndex = contest->unk_00.unk_FC[cameraFlashTask->contestantID] & 1; + + if (contest->isLinkContest == TRUE) { + cameraFlashTask->cameraFlashFrameDelays = sLinkMasterRankCameraFrameDelays[varianceIndex]; + } else { + switch (contest->unk_00.contestRank) { + case CONTEST_RANK_NORMAL: + cameraFlashTask->cameraFlashFrameDelays = sNormalRankCameraFrameDelays[varianceIndex]; + break; + case CONTEST_RANK_GREAT: + cameraFlashTask->cameraFlashFrameDelays = sGreatRankCameraFrameDelays[varianceIndex]; + break; + case CONTEST_RANK_ULTRA: + cameraFlashTask->cameraFlashFrameDelays = sUltraRankCameraFrameDelays[varianceIndex]; + break; + case CONTEST_RANK_MASTER: + default: + cameraFlashTask->cameraFlashFrameDelays = sLinkMasterRankCameraFrameDelays[varianceIndex]; + break; + } + } + + cameraFlashTask->sysTask = SysTask_Start(SysTask_DoContestCameraFlash, contest, 100); + contest->cameraFlashTask = cameraFlashTask; +} + +BOOL Contest_CameraFlashTaskDone(Contest *contest) +{ + return contest->cameraFlashTask == NULL; +} + +static void SysTask_DoContestCameraFlash(SysTask *sysTask, void *contestParam) +{ + Contest *contest = contestParam; + ContestCameraFlashTask *cameraFlashTask = contest->cameraFlashTask; + + if (BrightnessController_IsTransitionComplete(BRIGHTNESS_MAIN_SCREEN) == FALSE) { + return; + } + + switch (cameraFlashTask->state) { + case 0: + cameraFlashTask->frameCounter++; + + if (cameraFlashTask->frameCounter > cameraFlashTask->cameraFlashFrameDelays[cameraFlashTask->flashCounter]) { + BrightnessController_StartTransition(6, 0, 4, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, BRIGHTNESS_MAIN_SCREEN); + Sound_PlayEffect(SEQ_SE_DP_CON_014); // camera shutter sound + cameraFlashTask->flashCounter++; + cameraFlashTask->frameCounter = 0; + + if (cameraFlashTask->cameraFlashFrameDelays[cameraFlashTask->flashCounter] == CAMERA_FLASH_FRAME_DELAY_ARRAY_TERMINATOR) { + cameraFlashTask->state++; + } + } + break; + default: + Heap_Free(contest->cameraFlashTask); + contest->cameraFlashTask = NULL; + SysTask_Done(sysTask); + return; + } +} + +void sub_02094BB4(Contest *contest, int *destWinningContestantEntryNum, BOOL *destIsLinkContest, int *param3, BOOL *destIsPracticeCompetition, int *param5) +{ + int winningContestantID; + int contestantID; + + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + if (contest->unk_00.unk_118[contestantID].contestPlacement == 0) { + break; + } + } + + winningContestantID = contestantID; + + *destWinningContestantEntryNum = Contest_ContestantIDToContestantEntryNum(winningContestantID); + *destIsLinkContest = contest->isLinkContest; + + if (winningContestantID >= contest->unk_00.connectionCount) { + *param3 = 1; + } else { + *param3 = 0; + } + + *destIsPracticeCompetition = FALSE; + *param5 = 0; + + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_PRACTICE_ACTING: + *destIsPracticeCompetition = TRUE; + break; + case CONTEST_COMPETITION_VISUAL: + case CONTEST_COMPETITION_DANCE: + case CONTEST_COMPETITION_ACTING: + *param5 = 1; + break; + } +} + +void Contest_EndContest(Contest *contest, SaveData *saveData, u32 mapID, JournalEntry *journalEntry) +{ + BOOL ribbonWon = FALSE; + + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: + return; + } + + if (contest->isLinkContest == FALSE) { + VarsFlags *varsFlags = SaveData_GetVarsFlags(contest->saveData); + + if (contest->unk_00.competitionType == CONTEST_COMPETITION_LINK_OR_OFFICIAL && contest->unk_00.contestRank >= CONTEST_RANK_MASTER && Contest_GetPlayerContestPlacement(contest) == 0 + && SystemFlag_CheckContestMaster(varsFlags, contest->unk_00.contestType) == FALSE) { + SystemFlag_SetContestMaster(varsFlags, contest->unk_00.contestType); + } + + if (Contest_GetPlayerContestPlacement(contest) == 0) { + u8 v3 = 1; + int monDataRibbon = CalcMonDataRibbon(contest->unk_00.contestRank, contest->unk_00.contestType); + + if (Pokemon_GetValue(contest->playerMon, monDataRibbon, NULL) == 0) { + ribbonWon = TRUE; + } + + Pokemon_SetValue(contest->playerMon, monDataRibbon, &v3); + sub_0206DDB8(contest->saveData, contest->playerMon, monDataRibbon); + } + + TVBroadcast *broadcast = SaveData_GetTVBroadcast(contest->saveData); + TVBroadcast_SetContestHallShowInfo(broadcast, contest->playerMon, contest->unk_00.contestType, contest->unk_00.contestRank, contest->unk_00.unk_118[contest->unk_00.playerContestantID].contestPlacement + 1); + + GameRecords *gameRecords = SaveData_GetGameRecords(contest->saveData); + GameRecords_IncrementRecordValue(gameRecords, RECORD_SUPER_CONTEST_PARTICIPATIONS); + + if (Contest_GetPlayerContestPlacement(contest) == 0) { + GameRecords_IncrementRecordValue(gameRecords, RECORD_OFFICIAL_CONTEST_WINS); + GameRecords_IncrementTrainerScore(gameRecords, TRAINER_SCORE_EVENT_WIN_OFFICIAL_CONTEST); + } + + if (ribbonWon == TRUE) { + GameRecords_IncrementRecordValue(gameRecords, RECORD_RIBBONS_WON); + } + + Pokedex *pokedex = SaveData_GetPokedex(contest->saveData); + + for (int i = contest->unk_00.connectionCount; i < CONTEST_NUM_PARTICIPANTS; i++) { + Pokedex_Encounter(pokedex, contest->unk_00.contestMons[i]); + } + } else { + LinkContestRecords_IncrementSavaData(contest->saveData, contest->unk_00.contestType, contest->unk_00.unk_118[contest->unk_00.playerContestantID].contestPlacement); + + GameRecords *records = SaveData_GetGameRecords(contest->saveData); + GameRecords_IncrementRecordValue(records, RECORD_LINK_CONTEST_PARTICIPATIONS); + + if (Contest_GetPlayerContestPlacement(contest) == 0) { + GameRecords_IncrementRecordValue(records, RECORD_LINK_CONTEST_WINS); + GameRecords_IncrementTrainerScore(records, TRAINER_SCORE_EVENT_WIN_LINK_CONTEST); + } + + void *journalEntryOnlineEvent = JournalEntry_CreateEventPlacedInContest(contest->unk_00.unk_118[contest->unk_00.playerContestantID].contestPlacement + 1, HEAP_ID_FIELD2); + JournalEntry *unused = SaveData_GetJournal(contest->saveData); + + JournalEntry_SaveData(journalEntry, journalEntryOnlineEvent, JOURNAL_ONLINE_EVENT); + } + + if (Contest_GetPlayerContestPlacement(contest) == 0) { + ImageClips *imageClips = SaveData_GetImageClips(contest->saveData); + UnkStruct_02029C88 *v12 = sub_02029CD0(imageClips, contest->unk_00.contestType); + + sub_0202A25C(v12); + sub_0202A390(v12, contest->unk_00.unk_E8[contest->unk_00.playerContestantID]); + sub_0202A240(v12); + } + + if (Contest_GetPlayerContestPlacement(contest) == 0) { + Pokemon_UpdateFriendship(contest->playerMon, FRIENDSHIP_EVENT_CONTEST_WIN, mapID); + } +} + +static void Contest_SetLCRNGSeed(Contest *contest) +{ + LCRNG_SetSeed((GetSecondsSinceMidnight() * (LCRNG_GetSeed() + 10)) & 0xffff); +} + +u16 Contest_GetRNGNext(Contest *contest) +{ + return LCRNG_Next(); +} + +u16 Contest_GetSeededRNGNext(u32 seed, u32 *destRNGVal) +{ + u32 rngVal = ARNG_Next(seed); + *destRNGVal = rngVal; + + return rngVal / LCRNG_DIVISOR; +} + +static void sub_02094EB4(Contest *contest, int contestantID, UnkStruct_ov6_02248DD8 *param2) +{ + param2->trainerGender = contest->unk_00.trainerGenders[contestantID]; + param2->unk_01 = contest->unk_00.unk_FC[contestantID]; + param2->monContestFame = contest->unk_00.monContestFame[contestantID]; + param2->contestantObjEventGFX = contest->unk_00.contestantObjEventGFX[contestantID]; +} diff --git a/src/field_comm_manager.c b/src/field_comm_manager.c index c18e46cd9b..c43a76057f 100644 --- a/src/field_comm_manager.c +++ b/src/field_comm_manager.c @@ -399,7 +399,7 @@ static void sub_02059B74(void) for (i = 0; i < CommSys_ConnectedCount(); i++) { if (i != CommSys_CurNetId()) { - if (sub_02036564(i) == 94) { + if (CommTool_GetSyncNo(i) == 94) { if (sFieldCommMan->fieldSystem->task == NULL) { for (j = 0; j < 4; j++) { if (sFieldCommMan->trainerCard[j]) { diff --git a/src/game_records.c b/src/game_records.c index a56a290891..4c7d9c098e 100644 --- a/src/game_records.c +++ b/src/game_records.c @@ -179,7 +179,7 @@ static u8 sUsesHighLimit[MAX_RECORDS] = { [RECORD_UNK_089] = FALSE, [RECORD_SUPER_CONTEST_PARTICIPATIONS] = FALSE, [RECORD_LINK_CONTEST_PARTICIPATIONS] = FALSE, - [RECORD_SUPER_CONTEST_WINS] = FALSE, + [RECORD_OFFICIAL_CONTEST_WINS] = FALSE, [RECORD_LINK_CONTEST_WINS] = FALSE, [RECORD_RIBBONS_WON] = TRUE, [RECORD_USED_INEFFECTIVE_MOVE] = FALSE, @@ -271,7 +271,7 @@ static const u16 sTrainerScoreIncrements[MAX_TRAINER_SCORE_EVENTS] = { [TRAINER_SCORE_EVENT_CAPTURED_NATIONAL_MON] = 3, [TRAINER_SCORE_EVENT_WON_TRAINER_BATTLE] = 3, [TRAINER_SCORE_EVENT_UNK_12] = 3, - [TRAINER_SCORE_EVENT_WIN_SUPER_CONTEST] = 7, + [TRAINER_SCORE_EVENT_WIN_OFFICIAL_CONTEST] = 7, [TRAINER_SCORE_EVENT_UNK_14] = 7, [TRAINER_SCORE_EVENT_UNK_15] = 7, [TRAINER_SCORE_EVENT_UNK_16] = 10, diff --git a/src/meson.build b/src/meson.build index 3c3e111f0f..ed9f10ce64 100644 --- a/src/meson.build +++ b/src/meson.build @@ -172,7 +172,7 @@ pokeplatinum_c = files( 'script_manager.c', 'scrcmd.c', 'scrcmd_shop.c', - 'unk_02046C7C.c', + 'scrcmd_contests.c', 'scrcmd_strings.c', 'scrcmd_jubilife_lottery.c', 'scrcmd_sound.c', @@ -308,7 +308,7 @@ pokeplatinum_c = files( 'applications/pokemon_summary_screen/subscreen.c', 'ribbon.c', 'unk_02092494.c', - 'unk_020933F8.c', + 'contest.c', 'unk_02094EDC.c', 'unk_02095AF0.c', 'unk_02095CD4.c', diff --git a/src/overlay005/ov5_021DFB54.c b/src/overlay005/ov5_021DFB54.c index f236cd3149..831019b898 100644 --- a/src/overlay005/ov5_021DFB54.c +++ b/src/overlay005/ov5_021DFB54.c @@ -124,9 +124,9 @@ typedef struct StuckInDeepMudTaskEnv { typedef struct { FieldSystem *fieldSystem; PlayerAvatar *playerAvatar; - MapObject *unk_08; + MapObject *playerObject; int unk_0C; - int unk_10; + int playerGender; SysTask *unk_14; } UnkStruct_ov5_021E0DE0; @@ -1527,8 +1527,8 @@ static void ov5_021E0DE0(FieldSystem *fieldSystem) v0->fieldSystem = fieldSystem; v0->playerAvatar = fieldSystem->playerAvatar; - v0->unk_08 = Player_MapObject(v0->playerAvatar); - v0->unk_10 = PlayerAvatar_Gender(v0->playerAvatar); + v0->playerObject = Player_MapObject(v0->playerAvatar); + v0->playerGender = PlayerAvatar_Gender(v0->playerAvatar); FieldTask_InitCall(fieldSystem->task, ov5_021E0E10, v0); } @@ -1539,17 +1539,17 @@ static BOOL ov5_021E0E10(FieldTask *param0) switch (v0->unk_0C) { case 0: - v0->unk_14 = MapObject_StartAnimation(v0->unk_08, Unk_ov5_021F9B9C); + v0->unk_14 = MapObject_StartAnimation(v0->playerObject, Unk_ov5_021F9B9C); v0->unk_0C++; break; case 1: if (MapObject_HasAnimationEnded(v0->unk_14) == 1) { - int v1 = Player_MoveStateFromGender(0x12, v0->unk_10); + int v1 = Player_MoveStateFromGender(0x12, v0->playerGender); PlayerAvatar_Redraw(v0->playerAvatar, v1); MapObject_FinishAnimation(v0->unk_14); - v0->unk_14 = MapObject_StartAnimation(v0->unk_08, Unk_ov5_021F9C00); + v0->unk_14 = MapObject_StartAnimation(v0->playerObject, Unk_ov5_021F9C00); v0->unk_0C++; } break; diff --git a/src/overlay006/ov6_022489E4.c b/src/overlay006/ov6_022489E4.c index 65318350ab..27117595c7 100644 --- a/src/overlay006/ov6_022489E4.c +++ b/src/overlay006/ov6_022489E4.c @@ -4,13 +4,13 @@ #include #include "struct_defs/struct_020954F0.h" -#include "struct_defs/struct_02095C48.h" #include "overlay006/struct_ov6_02248BE8.h" #include "overlay006/struct_ov6_02248DD8.h" #include "chatot_cry.h" #include "communication_system.h" +#include "contest.h" #include "heap.h" #include "pokemon.h" #include "string_gf.h" @@ -22,36 +22,36 @@ typedef struct { u8 unk_03[1]; } UnkStruct_ov6_02248A94; -static int ov6_02248A94(UnkStruct_ov6_02248A94 *param0[4], int param1, u8 *param2); +static int ov6_02248A94(UnkStruct_ov6_02248A94 *param0[4], int connectionCount, u8 *param2); void ov6_022489E4(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; MI_CpuCopy8(param2, v0->unk_168[param0], param1); v0->unk_568++; - if (v0->unk_568 >= v0->unk_00.unk_117) { + if (v0->unk_568 >= v0->unk_00.connectionCount) { UnkStruct_ov6_02248A94 *v1[4]; int v2; u8 v3; - for (v2 = 0; v2 < v0->unk_00.unk_117; v2++) { + for (v2 = 0; v2 < v0->unk_00.connectionCount; v2++) { v1[v2] = (void *)v0->unk_168[v2]; } - v0->unk_00.unk_10C = ov6_02248A94(v1, v0->unk_00.unk_117, &v3); + v0->unk_00.unk_10C = ov6_02248A94(v1, v0->unk_00.connectionCount, &v3); v0->unk_00.unk_10D = v3; v0->unk_00.unk_112 = v1[v0->unk_00.unk_10C]->unk_02; } } -BOOL ov6_02248A64(UnkStruct_02095C48 *param0) +BOOL ov6_02248A64(Contest *param0) { UnkStruct_ov6_02248A94 v0; v0.unk_00 = param0->unk_00.unk_115; - v0.unk_01 = param0->unk_00.unk_113; + v0.unk_01 = param0->unk_00.playerContestantID; v0.unk_02 = param0->unk_00.unk_112; if (CommSys_SendData(26, &v0, sizeof(UnkStruct_ov6_02248A94)) == 1) { @@ -61,11 +61,11 @@ BOOL ov6_02248A64(UnkStruct_02095C48 *param0) return 0; } -static int ov6_02248A94(UnkStruct_ov6_02248A94 *param0[4], int param1, u8 *param2) +static int ov6_02248A94(UnkStruct_ov6_02248A94 *param0[4], int connectionCount, u8 *param2) { int v0, v1 = 0; - for (v0 = 0; v0 < param1; v0++) { + for (v0 = 0; v0 < connectionCount; v0++) { if (param0[v1]->unk_00 < param0[v0]->unk_00) { v1 = v0; } @@ -77,7 +77,7 @@ static int ov6_02248A94(UnkStruct_ov6_02248A94 *param0[4], int param1, u8 *param void ov6_02248AC8(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1; int v2; u8 *v3; @@ -86,12 +86,12 @@ void ov6_02248AC8(int param0, int param1, void *param2, void *param3) v3 = param2; v2 = v3[v1]; - MI_CpuCopy8(param2, v0->unk_00.unk_00[v2], v1); + MI_CpuCopy8(param2, v0->unk_00.contestMons[v2], v1); v0->unk_568++; } -BOOL ov6_02248AF0(UnkStruct_02095C48 *param0, int param1, const Pokemon *param2) +BOOL ov6_02248AF0(Contest *param0, int param1, const Pokemon *param2) { u8 *v0; int v1; @@ -114,7 +114,7 @@ BOOL ov6_02248AF0(UnkStruct_02095C48 *param0, int param1, const Pokemon *param2) void ov6_02248B30(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1, v2; u8 *v3; int v4; @@ -124,13 +124,13 @@ void ov6_02248B30(int param0, int param1, void *param2, void *param3) v3 = param2; for (v4 = 0; v4 < 4; v4++) { - MI_CpuCopy8(&v3[v1 * v4], v0->unk_00.unk_00[v4], v1); + MI_CpuCopy8(&v3[v1 * v4], v0->unk_00.contestMons[v4], v1); } v0->unk_568++; } -BOOL ov6_02248B70(UnkStruct_02095C48 *param0, Pokemon **param1) +BOOL ov6_02248B70(Contest *param0, Pokemon **param1) { u8 *v0; int v1, v2; @@ -156,7 +156,7 @@ BOOL ov6_02248B70(UnkStruct_02095C48 *param0, Pokemon **param1) void ov6_02248BC0(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1; int v2; u8 *v3; @@ -170,7 +170,7 @@ void ov6_02248BC0(int param0, int param1, void *param2, void *param3) v0->unk_568++; } -BOOL ov6_02248BE8(UnkStruct_02095C48 *param0, int param1, const UnkStruct_ov6_02248BE8 *param2) +BOOL ov6_02248BE8(Contest *param0, int param1, const UnkStruct_ov6_02248BE8 *param2) { u8 *v0; int v1; @@ -193,7 +193,7 @@ BOOL ov6_02248BE8(UnkStruct_02095C48 *param0, int param1, const UnkStruct_ov6_02 void ov6_02248C28(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1; u8 *v2; int v3; @@ -209,7 +209,7 @@ void ov6_02248C28(int param0, int param1, void *param2, void *param3) v0->unk_568++; } -BOOL ov6_02248C68(UnkStruct_02095C48 *param0, int param1, const UnkStruct_020954F0 *param2) +BOOL ov6_02248C68(Contest *param0, int param1, const UnkStruct_020954F0 *param2) { u8 *v0; int v1; @@ -238,34 +238,34 @@ BOOL ov6_02248C68(UnkStruct_02095C48 *param0, int param1, const UnkStruct_020954 void ov6_02248CBC(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; - int v1, v2, v3; + Contest *v0 = param3; + int contestantID, v2, v3; u8 *v4; u16 *v5; v3 = 4; v4 = param2; - v1 = v4[0]; + contestantID = v4[0]; v2 = v4[1]; v5 = (u16 *)(&v4[v3]); - String_Clear(v0->unk_00.unk_D8[v1]); - String_CopyChars(v0->unk_00.unk_D8[v1], v5); + String_Clear(v0->unk_00.trainerNames[contestantID]); + String_CopyChars(v0->unk_00.trainerNames[contestantID], v5); v0->unk_568++; } -BOOL ov6_02248CE8(UnkStruct_02095C48 *param0, int param1, const String *param2) +BOOL ov6_02248CE8(Contest *contest, int param1, const String *trainerNames) { int v0, v1; u8 *v2; BOOL v3; - u16 v4[8]; // Possibly TRAINER_NAME_LEN + 1 + u16 v4[TRAINER_NAME_LEN + 1]; v0 = 8 * sizeof(u16); v1 = 4; - String_ToChars(param2, v4, 8); // Possibly TRAINER_NAME_LEN + 1 + String_ToChars(trainerNames, v4, TRAINER_NAME_LEN + 1); v2 = Heap_Alloc(HEAP_ID_20, v0 + v1); MI_CpuCopy8(v4, &v2[v1], v0); @@ -286,7 +286,7 @@ BOOL ov6_02248CE8(UnkStruct_02095C48 *param0, int param1, const String *param2) void ov6_02248D38(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1; int v2; u8 *v3; @@ -295,12 +295,12 @@ void ov6_02248D38(int param0, int param1, void *param2, void *param3) v3 = param2; v2 = v3[v1]; - MI_CpuCopy8(param2, v0->unk_14C[v2], v1); + MI_CpuCopy8(param2, v0->chatotCry[v2], v1); v0->unk_568++; } -BOOL ov6_02248D64(UnkStruct_02095C48 *param0, int param1, void *param2) +BOOL ov6_02248D64(Contest *param0, int param1, void *param2) { u8 *v0; int v1; @@ -326,25 +326,25 @@ BOOL ov6_02248D64(UnkStruct_02095C48 *param0, int param1, void *param2) void ov6_02248DA0(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *contest = param3; int v1; - int v2; + int contestantID; u8 *v3; UnkStruct_ov6_02248DD8 *v4; v1 = sizeof(UnkStruct_ov6_02248DD8); v4 = param2; v3 = param2; - v2 = v3[v1]; + contestantID = v3[v1]; - v0->unk_00.unk_F8[v2] = v4->unk_00; - v0->unk_00.unk_FC[v2] = v4->unk_01; - v0->unk_00.unk_100[v2] = v4->unk_02; - v0->unk_00.unk_104[v2] = v4->unk_04; - v0->unk_568++; + contest->unk_00.trainerGenders[contestantID] = v4->trainerGender; + contest->unk_00.unk_FC[contestantID] = v4->unk_01; + contest->unk_00.monContestFame[contestantID] = v4->monContestFame; + contest->unk_00.contestantObjEventGFX[contestantID] = v4->contestantObjEventGFX; + contest->unk_568++; } -BOOL ov6_02248DD8(UnkStruct_02095C48 *param0, int param1, const UnkStruct_ov6_02248DD8 *param2) +BOOL ov6_02248DD8(Contest *param0, int param1, const UnkStruct_ov6_02248DD8 *param2) { u8 *v0; int v1; diff --git a/src/overlay017/ov17_0223B140.c b/src/overlay017/ov17_0223B140.c index b959747463..17e0d96a6e 100644 --- a/src/overlay017/ov17_0223B140.c +++ b/src/overlay017/ov17_0223B140.c @@ -21,6 +21,7 @@ #include "overlay017/struct_ov17_02246F24.h" #include "bg_window.h" +#include "contest.h" #include "font.h" #include "game_overlay.h" #include "graphics.h" @@ -47,7 +48,6 @@ #include "unk_02012744.h" #include "unk_020366A0.h" #include "unk_020393C8.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" #include "vram_transfer.h" @@ -134,7 +134,7 @@ static const SpriteResourceCapacities Unk_ov17_02252DB0 = { 0x8 }; -int ov17_0223B140(ApplicationManager *appMan, int *param1) +int ActingCompetition_Init(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02246F24 *v0; @@ -201,10 +201,10 @@ int ov17_0223B140(ApplicationManager *appMan, int *param1) v0->unk_0C.unk_20 = BattleAnimSystem_New(HEAP_ID_21); BattleAnimSystem_SetIsContest(v0->unk_0C.unk_20, 1); - v0->unk_0C.unk_38 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_TEXT, HEAP_ID_21); - v0->unk_0C.unk_3C = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_OPPONENT_NAMES, HEAP_ID_21); - v0->unk_0C.unk_40 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_EFFECTS, HEAP_ID_21); - v0->unk_0C.unk_44 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_ACTING_COMPETITION, HEAP_ID_21); + v0->unk_0C.contestTextMessageLoader = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_TEXT, HEAP_ID_21); + v0->unk_0C.contestOpponentNames = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_OPPONENT_NAMES, HEAP_ID_21); + v0->unk_0C.contestEffectMessages = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_EFFECTS, HEAP_ID_21); + v0->unk_0C.contestActingCompetitionMessages = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_ACTING_COMPETITION, HEAP_ID_21); v0->unk_0C.unk_54 = sub_02012744(2 * 4, HEAP_ID_21); v0->unk_0C.unk_48 = StringTemplate_Default(HEAP_ID_21); v0->unk_0C.unk_4C = String_Init(3 * 160, HEAP_ID_21); @@ -228,14 +228,13 @@ int ov17_0223B140(ApplicationManager *appMan, int *param1) } { - u16 v3[4]; - int v4; + u16 moves[4]; - for (v4 = 0; v4 < LEARNED_MOVES_MAX; v4++) { - v3[v4] = Pokemon_GetValue(v0->unk_00->unk_00.unk_00[v0->unk_00->unk_00.unk_113], MON_DATA_MOVE1 + v4, NULL); + for (int i = 0; i < LEARNED_MOVES_MAX; i++) { + moves[i] = Pokemon_GetValue(v0->unk_00->unk_00.contestMons[v0->unk_00->unk_00.playerContestantID], MON_DATA_MOVE1 + i, NULL); } - ov17_02240A80(v0->unk_7E4, v3); + ov17_02240A80(v0->unk_7E4, moves); } ov17_0223F9C4(v0->unk_7E4, 0, 1, NULL); @@ -257,12 +256,12 @@ int ov17_0223B140(ApplicationManager *appMan, int *param1) return 1; } -int ov17_0223B444(ApplicationManager *appMan, int *param1) +int ActingCompetition_Main(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02246F24 *v0 = ApplicationManager_Data(appMan); int v1; - sub_02094E98(v0->unk_00); + Contest_GetRNGNext(v0->unk_00); switch (*param1) { case 0: @@ -271,7 +270,7 @@ int ov17_0223B444(ApplicationManager *appMan, int *param1) } break; case 1: - if (sub_02094EDC(v0->unk_00) == 1) { + if (sub_02094EDC(v0->unk_00) == TRUE) { v1 = Unk_ov17_02252E10[v0->unk_7EA](v0, &v0->unk_160C); if ((v1 == 1) || (v1 == 2)) { @@ -293,7 +292,7 @@ int ov17_0223B444(ApplicationManager *appMan, int *param1) ov17_0224F35C(&v0->unk_BF8); ov17_0224F3D8(&v0->unk_BF8, v0); - if ((v0->unk_1614 == 1) && (ov17_0224F3D0(&v0->unk_BF8) == 0) && (sub_02094EDC(v0->unk_00) == 0)) { + if ((v0->unk_1614 == 1) && (ov17_0224F3D0(&v0->unk_BF8) == 0) && (sub_02094EDC(v0->unk_00) == FALSE)) { *param1 = 2; MI_CpuClear8(&v0->unk_160C, sizeof(UnkStruct_ov17_0223BCE8)); StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_UNK_32, FADE_TYPE_UNK_32, COLOR_BLACK, 6, 1, HEAP_ID_21); @@ -311,7 +310,7 @@ int ov17_0223B444(ApplicationManager *appMan, int *param1) return 0; } -int ov17_0223B580(ApplicationManager *appMan, int *param1) +int ActingCompetition_Exit(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02246F24 *v0 = ApplicationManager_Data(appMan); int v1; @@ -355,10 +354,10 @@ int ov17_0223B580(ApplicationManager *appMan, int *param1) String_Free(v0->unk_0C.unk_4C); StringTemplate_Free(v0->unk_0C.unk_48); - MessageLoader_Free(v0->unk_0C.unk_38); - MessageLoader_Free(v0->unk_0C.unk_3C); - MessageLoader_Free(v0->unk_0C.unk_40); - MessageLoader_Free(v0->unk_0C.unk_44); + MessageLoader_Free(v0->unk_0C.contestTextMessageLoader); + MessageLoader_Free(v0->unk_0C.contestOpponentNames); + MessageLoader_Free(v0->unk_0C.contestEffectMessages); + MessageLoader_Free(v0->unk_0C.contestActingCompetitionMessages); Heap_Free(v0->unk_0C.unk_24); SysTask_Done(v0->unk_04); @@ -593,18 +592,18 @@ static void ov17_0223BA10(UnkStruct_ov17_02246F24 *param0, NARC *param1) ov17_0224F0F0(param0->unk_0C.unk_18, param0->unk_0C.unk_1C, 33012, 33012); { - int v0, v1, v2; + int v0, moveContestType, v2; for (v0 = 0; v0 < LEARNED_MOVES_MAX; v0++) { - v2 = Pokemon_GetValue(param0->unk_00->unk_00.unk_00[param0->unk_00->unk_00.unk_113], MON_DATA_MOVE1 + v0, NULL); + v2 = Pokemon_GetValue(param0->unk_00->unk_00.contestMons[param0->unk_00->unk_00.playerContestantID], MON_DATA_MOVE1 + v0, NULL); if (v2 != 0) { - v1 = MoveTable_LoadParam(v2, MOVEATTRIBUTE_CONTEST_TYPE); + moveContestType = MoveTable_LoadParam(v2, MOVEATTRIBUTE_CONTEST_TYPE); } else { - v1 = 0; + moveContestType = 0; } - ov17_0224F0BC(param0->unk_0C.unk_18, param0->unk_0C.unk_1C, NNS_G2D_VRAM_TYPE_2DSUB, v1, 33014 + v0); + ov17_0224F0BC(param0->unk_0C.unk_18, param0->unk_0C.unk_1C, NNS_G2D_VRAM_TYPE_2DSUB, moveContestType, 33014 + v0); } } } @@ -667,10 +666,10 @@ static void ov17_0223BBA8(UnkStruct_ov17_02246F24 *param0, NARC *param1) v3 = PaletteData_GetFadedBuffer(param0->unk_0C.unk_50, 0); MI_CpuCopy16(&v2[Unk_ov17_022536B4[0] * 16], v0, 0x20); - MI_CpuCopy16(&v2[Unk_ov17_022536B4[param0->unk_00->unk_00.unk_113] * 16], v1, 0x20); - MI_CpuCopy16(v0, &v2[Unk_ov17_022536B4[param0->unk_00->unk_00.unk_113] * 16], 0x20); + MI_CpuCopy16(&v2[Unk_ov17_022536B4[param0->unk_00->unk_00.playerContestantID] * 16], v1, 0x20); + MI_CpuCopy16(v0, &v2[Unk_ov17_022536B4[param0->unk_00->unk_00.playerContestantID] * 16], 0x20); MI_CpuCopy16(v1, &v2[Unk_ov17_022536B4[0] * 16], 0x20); - MI_CpuCopy16(v0, &v3[Unk_ov17_022536B4[param0->unk_00->unk_00.unk_113] * 16], 0x20); + MI_CpuCopy16(v0, &v3[Unk_ov17_022536B4[param0->unk_00->unk_00.playerContestantID] * 16], 0x20); MI_CpuCopy16(v1, &v3[Unk_ov17_022536B4[0] * 16], 0x20); Heap_Free(v0); @@ -710,7 +709,7 @@ static int ov17_0223BCE8(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -721,13 +720,13 @@ static int ov17_0223BCE8(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE static int ov17_0223BD58(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE8 *param1) { - if (sub_0209590C(param0->unk_00) == 0) { + if (Contest_IsPracticeCompetition(param0->unk_00) == FALSE) { return 1; } switch (param1->unk_00) { case 0: - param0->unk_304.unk_C6.unk_0C = 0; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; param0->unk_304.unk_C6.unk_0E = 0; param0->unk_304.unk_C6.unk_0F = 0; @@ -736,7 +735,7 @@ static int ov17_0223BD58(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -750,10 +749,10 @@ static int ov17_0223BDCC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE switch (param1->unk_00) { case 0: - if (sub_0209590C(param0->unk_00) == 1) { - param0->unk_304.unk_C6.unk_0C = 45; + if (Contest_IsPracticeCompetition(param0->unk_00) == TRUE) { + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_BEGIN_PRACTICE; } else { - param0->unk_304.unk_C6.unk_0C = ov17_02243944(param0->unk_00->unk_00.contestType); + param0->unk_304.unk_C6.actingMessagesID = Contest_GetActingCompetitionMessageIntroAnnouncement(param0->unk_00->unk_00.contestType); } param0->unk_304.unk_C6.unk_0E = 0; @@ -764,7 +763,7 @@ static int ov17_0223BDCC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -793,19 +792,18 @@ static int ov17_0223BE58(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 1: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; case 2: { UnkStruct_ov17_0223BE58 v0; - int v1; ov17_02246ECC(param0, &v0); - for (v1 = param0->unk_00->unk_00.unk_117; v1 < 4; v1++) { - param0->unk_220.unk_06[v1] = v0.unk_00[v1]; - param0->unk_220.unk_0E[v1] = v0.unk_08[v1]; + for (int contestantID = param0->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + param0->unk_220.moveIDs[contestantID] = v0.moveIDs[contestantID]; + param0->unk_220.unk_0E[contestantID] = v0.unk_08[contestantID]; } } param1->unk_00++; @@ -820,25 +818,25 @@ static int ov17_0223BE58(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE static int ov17_0223BF1C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE8 *param1) { - int v0, v1, v2; + int v1, v2; - v0 = param0->unk_220.unk_01[param0->unk_220.unk_05]; + int contestantID = param0->unk_220.unk_01[param0->unk_220.unk_05]; - param0->unk_304.unk_00 = v0; + param0->unk_304.contestantID = contestantID; param0->unk_304.unk_01 = param0->unk_220.unk_05; - param0->unk_304.unk_02 = param0->unk_220.unk_0E[v0]; + param0->unk_304.unk_02 = param0->unk_220.unk_0E[contestantID]; param0->unk_304.unk_03 = 0; for (v1 = 0; v1 < param0->unk_220.unk_05; v1++) { v2 = param0->unk_220.unk_01[v1]; - if (param0->unk_220.unk_0E[v2] == param0->unk_220.unk_0E[v0]) { + if (param0->unk_220.unk_0E[v2] == param0->unk_220.unk_0E[contestantID]) { param0->unk_304.unk_03 = 1; } } - ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_00, v0); - ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_06, v0); + ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_00, contestantID); + ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_06, contestantID); return 1; } @@ -852,7 +850,7 @@ static int ov17_0223BFB0(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -865,15 +863,15 @@ static int ov17_0223C004(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE { switch (param1->unk_00) { case 0: - param0->unk_304.unk_C6.unk_0C = 0; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; if (ov17_0224F30C(¶m0->unk_BF8, param0, 6, ¶m0->unk_304) == 1) { param1->unk_00++; } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { - param0->unk_304.unk_C6.unk_0C = 0; + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; return 1; } break; @@ -886,15 +884,15 @@ static int ov17_0223C068(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE { switch (param1->unk_00) { case 0: - param0->unk_304.unk_C6.unk_0C = 4; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_TO_JUDGE_MON_PERFORMED_MOVE; if (param0->unk_304.unk_03 == 1) { - param0->unk_304.unk_C6.unk_0D = 5; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_SOMEONE_ALREADY_PERFORMED_FOR_JUDGE; } else { - param0->unk_304.unk_C6.unk_0D = 0; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; } - ov17_022460DC(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00); + ov17_022460DC(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID); param1->unk_00++; case 1: if (ov17_0224F30C(¶m0->unk_BF8, param0, 7, ¶m0->unk_304) == 1) { @@ -902,9 +900,9 @@ static int ov17_0223C068(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { - param0->unk_304.unk_C6.unk_0C = 0; - param0->unk_304.unk_C6.unk_0D = 0; + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; return 1; } break; @@ -917,11 +915,11 @@ static int ov17_0223C100(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE { switch (param1->unk_00) { case 0: - ov17_02245FB4(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00); + ov17_02245FB4(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID); param1->unk_00++; break; case 1: - ov17_02246138(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00); + ov17_02246138(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID); param1->unk_00++; case 2: if (ov17_0224F30C(¶m0->unk_BF8, param0, 10, ¶m0->unk_304) == 1) { @@ -929,12 +927,12 @@ static int ov17_0223C100(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 3: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; case 4: - ov17_02246160(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, param0->unk_304.unk_01); + ov17_02246160(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, param0->unk_304.unk_01); param1->unk_00++; case 5: if (ov17_0224F30C(¶m0->unk_BF8, param0, 11, ¶m0->unk_304) == 1) { @@ -942,12 +940,12 @@ static int ov17_0223C100(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 6: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; case 7: - ov17_02246228(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, param0->unk_304.unk_01); + ov17_02246228(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, param0->unk_304.unk_01); param1->unk_00++; case 8: if (ov17_0224F30C(¶m0->unk_BF8, param0, 12, ¶m0->unk_304) == 1) { @@ -955,12 +953,12 @@ static int ov17_0223C100(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 9: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; case 10: - ov17_022463C4(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, ¶m0->unk_304.unk_C6); + ov17_022463C4(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, ¶m0->unk_304.unk_C6); param1->unk_00++; case 11: if (ov17_0224F30C(¶m0->unk_BF8, param0, 13, ¶m0->unk_304) == 1) { @@ -968,12 +966,12 @@ static int ov17_0223C100(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 12: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; default: - ov17_02246018(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00); + ov17_02246018(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID); return 1; } @@ -991,7 +989,7 @@ static int ov17_0223C2DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -1021,11 +1019,11 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE param1->unk_00++; break; case 1: - param0->unk_304.unk_00 = param0->unk_220.unk_01[param1->unk_04]; + param0->unk_304.contestantID = param0->unk_220.unk_01[param1->unk_04]; param0->unk_304.unk_01 = param1->unk_04; param1->unk_00++; case 2: - v0 = ov17_022462A4(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, param0->unk_304.unk_01); + v0 = ov17_022462A4(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, param0->unk_304.unk_01); if (v0 == 1) { param1->unk_00++; @@ -1039,7 +1037,7 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 4: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1109,18 +1107,19 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE param0->unk_304.unk_D6_val1.unk_01[v5] = v4[v3[param1->unk_04]][v5]; } + // how many mons selected each judge switch (v2[param1->unk_04]) { case 1: - param0->unk_304.unk_C6.unk_0C = 10; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_JUDGE_VERY_IMPRESSED; break; case 2: - param0->unk_304.unk_C6.unk_0C = 7; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_JUDGE_STRONGLY_IMPRESSED; break; case 3: - param0->unk_304.unk_C6.unk_0C = 8; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_JUDGE_WAS_IMPRESSED; break; case 4: - param0->unk_304.unk_C6.unk_0C = 9; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_EVERYONE_PERFORMED_FOR_SAME_JUDGE; break; default: param1->unk_00 = 12; @@ -1128,10 +1127,10 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } } - param0->unk_304.unk_C6.unk_0D = 0; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; - ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_00, param0->unk_304.unk_00); - ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_06, param0->unk_304.unk_00); + ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_00, param0->unk_304.contestantID); + ov17_02243120(param0, ¶m0->unk_304.unk_C6.unk_06, param0->unk_304.contestantID); param1->unk_00++; case 8: @@ -1143,9 +1142,9 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 10: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { - param0->unk_304.unk_C6.unk_0C = 0; - param0->unk_304.unk_C6.unk_0D = 0; + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; param1->unk_00++; } break; @@ -1163,11 +1162,11 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE param1->unk_00++; break; case 13: - param0->unk_304.unk_00 = param0->unk_220.unk_01[param1->unk_04]; + param0->unk_304.contestantID = param0->unk_220.unk_01[param1->unk_04]; param0->unk_304.unk_01 = param1->unk_04; param1->unk_00++; case 14: - v0 = ov17_02246304(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, param0->unk_304.unk_01); + v0 = ov17_02246304(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, param0->unk_304.unk_01); if (v0 == 0) { param1->unk_00 = 17; @@ -1181,9 +1180,9 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 16: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { - param0->unk_304.unk_C6.unk_0C = 0; - param0->unk_304.unk_C6.unk_0D = 0; + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; param1->unk_00++; } break; @@ -1204,11 +1203,11 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE ov17_022460C8(¶m0->unk_304.unk_10); param1->unk_00++; case 20: - param0->unk_304.unk_00 = param0->unk_220.unk_01[param1->unk_04]; + param0->unk_304.contestantID = param0->unk_220.unk_01[param1->unk_04]; param0->unk_304.unk_01 = param1->unk_04; param1->unk_00++; case 21: - v0 = ov17_02246364(param0, ¶m0->unk_304.unk_10, param0->unk_304.unk_00, param0->unk_304.unk_01); + v0 = ov17_02246364(param0, ¶m0->unk_304.unk_10, param0->unk_304.contestantID, param0->unk_304.unk_01); if (v0 == 1) { param1->unk_00++; @@ -1222,7 +1221,7 @@ static int ov17_0223C350(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 23: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1255,7 +1254,7 @@ static int ov17_0223C81C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 2: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1277,7 +1276,7 @@ static int ov17_0223C888(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 1: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1286,16 +1285,16 @@ static int ov17_0223C888(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE v1 = 0; - for (v0 = 0; v0 < 4; v0++) { + for (v0 = 0; v0 < CONTEST_NUM_PARTICIPANTS; v0++) { if (param0->unk_304.unk_10.unk_00[v0].unk_28_4 != 0) { v1++; } } if ((param0->unk_220.unk_00 < 4 - 1) && (v1 < 4)) { - param0->unk_304.unk_C6.unk_0C = 42; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NEXT_TURN_LOWEST_SCORING_PERFORM_FIRST; } else { - param0->unk_304.unk_C6.unk_0C = 0; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; } } param0->unk_304.unk_C6.unk_0E = 0; @@ -1306,7 +1305,7 @@ static int ov17_0223C888(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 3: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1314,8 +1313,8 @@ static int ov17_0223C888(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE ov17_02246044(param0, ¶m0->unk_304.unk_10); ov17_02243B0C(¶m0->unk_220); - for (v0 = 0; v0 < 4; v0++) { - param0->unk_220.unk_26[v0] = param0->unk_220.unk_06[v0]; + for (v0 = 0; v0 < CONTEST_NUM_PARTICIPANTS; v0++) { + param0->unk_220.unk_26[v0] = param0->unk_220.moveIDs[v0]; } param0->unk_220.unk_00++; @@ -1327,7 +1326,7 @@ static int ov17_0223C888(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; case 6: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1359,15 +1358,15 @@ static int ov17_0223CA30(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE param1->unk_00++; case 1: - param0->unk_304.unk_C6.unk_0C = 43; - param0->unk_304.unk_C6.unk_0D = 0; + param0->unk_304.unk_C6.actingMessagesID = ACTING_COMPETITION_MESSAGE_JUDGING_IS_OVER; + param0->unk_304.unk_C6.actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; if (ov17_0224F30C(¶m0->unk_BF8, param0, 3, ¶m0->unk_304) == 1) { param1->unk_00++; } break; case 2: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1377,7 +1376,7 @@ static int ov17_0223CA30(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BCE } break; default: - if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.unk_117 - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_BF8, param0->unk_00->unk_00.connectionCount - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 3; } break; diff --git a/src/overlay017/ov17_0223CB1C.c b/src/overlay017/ov17_0223CB1C.c index b491f15535..69ebf58569 100644 --- a/src/overlay017/ov17_0223CB1C.c +++ b/src/overlay017/ov17_0223CB1C.c @@ -13,6 +13,7 @@ #include "overlay022/ov22_0225AF8C.h" #include "bg_window.h" +#include "contest.h" #include "font.h" #include "game_options.h" #include "game_overlay.h" @@ -39,7 +40,6 @@ #include "touch_pad.h" #include "unk_020366A0.h" #include "unk_020393C8.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" #include "vram_transfer.h" @@ -115,7 +115,7 @@ static const SpriteResourceCapacities Unk_ov17_02252EC8 = { 0x8 }; -int ov17_0223CB1C(ApplicationManager *appMan, int *param1) +int VisualCompetitonScoring_Init(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02247A48 *v0; @@ -177,7 +177,7 @@ int ov17_0223CB1C(ApplicationManager *appMan, int *param1) v0->unk_0C.unk_04 = PokemonSpriteManager_New(HEAP_ID_22); ov17_0223D350(); - v0->unk_0C.unk_38 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_VISUAL_COMPETITION, HEAP_ID_22); + v0->unk_0C.visualCompetitionMessages = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_VISUAL_COMPETITION, HEAP_ID_22); v0->unk_0C.unk_3C = StringTemplate_Default(HEAP_ID_22); v0->unk_0C.unk_40 = String_Init(2 * 160, HEAP_ID_22); @@ -220,12 +220,12 @@ int ov17_0223CB1C(ApplicationManager *appMan, int *param1) return 1; } -int ov17_0223CDDC(ApplicationManager *appMan, int *param1) +int VisualCompetitionScoring_Main(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02247A48 *v0 = ApplicationManager_Data(appMan); int v1; - sub_02094E98(v0->unk_00); + Contest_GetRNGNext(v0->unk_00); switch (*param1) { case 0: @@ -239,7 +239,7 @@ int ov17_0223CDDC(ApplicationManager *appMan, int *param1) } break; case 1: - if (sub_02094EDC(v0->unk_00) == 1) { + if (sub_02094EDC(v0->unk_00) == TRUE) { v1 = Unk_ov17_02252F44[v0->unk_4F4](v0, &v0->unk_F0C); if ((v1 == 1) || (v1 == 2)) { @@ -261,7 +261,7 @@ int ov17_0223CDDC(ApplicationManager *appMan, int *param1) ov17_0224F35C(&v0->unk_4F8); ov17_0224F3D8(&v0->unk_4F8, v0); - if ((v0->unk_F14 == 1) && (ov17_0224F3D0(&v0->unk_4F8) == 0) && (sub_02094EDC(v0->unk_00) == 0)) { + if ((v0->unk_F14 == 1) && (ov17_0224F3D0(&v0->unk_4F8) == 0) && (sub_02094EDC(v0->unk_00) == FALSE)) { *param1 = 2; MI_CpuClear8(&v0->unk_F0C, sizeof(UnkStruct_ov17_0223D60C)); StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_CIRCLE_OUT, FADE_TYPE_UNK_36, COLOR_BLACK, 6, 1, HEAP_ID_22); @@ -279,7 +279,7 @@ int ov17_0223CDDC(ApplicationManager *appMan, int *param1) return 0; } -int ov17_0223CF8C(ApplicationManager *appMan, int *param1) +int VisualCompetitionScoring_Exit(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_02247A48 *v0 = ApplicationManager_Data(appMan); int v1; @@ -324,7 +324,7 @@ int ov17_0223CF8C(ApplicationManager *appMan, int *param1) PaletteData_Free(v0->unk_0C.unk_44); StringTemplate_Free(v0->unk_0C.unk_3C); String_Free(v0->unk_0C.unk_40); - MessageLoader_Free(v0->unk_0C.unk_38); + MessageLoader_Free(v0->unk_0C.visualCompetitionMessages); Heap_Free(v0->unk_0C.unk_24); SysTask_Done(v0->unk_04); @@ -649,7 +649,7 @@ static int ov17_0223D640(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 { switch (param1->unk_00) { case 0: - if (sub_0209590C(param0->unk_00) == 1) { + if (Contest_IsPracticeCompetition(param0->unk_00) == TRUE) { param0->unk_E0.unk_07 = 2; } else { param0->unk_E0.unk_07 = 1; @@ -663,7 +663,7 @@ static int ov17_0223D640(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -683,7 +683,7 @@ static int ov17_0223D6B8(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -706,7 +706,7 @@ static int ov17_0223D71C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -724,7 +724,7 @@ static int ov17_0223D78C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -742,7 +742,7 @@ static int ov17_0223D7DC(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -772,7 +772,7 @@ static int ov17_0223D82C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 param0->unk_E0.unk_08 = 0; param0->unk_E0.unk_09 = 0; - param0->unk_E0.unk_03.unk_00 = param0->unk_E0.unk_00; + param0->unk_E0.unk_03.contestantID = param0->unk_E0.unk_00; param1->unk_00++; case 1: if (ov17_0224F30C(¶m0->unk_4F8, param0, 13, ¶m0->unk_E0) == 1) { @@ -780,7 +780,7 @@ static int ov17_0223D82C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -802,7 +802,7 @@ static int ov17_0223D8DC(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; case 2: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -843,13 +843,13 @@ static int ov17_0223D99C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; case 1: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; case 2: - switch (param0->unk_00->unk_00.unk_111) { - case 2: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: param0->unk_E0.unk_07 = 7; break; default: @@ -866,7 +866,7 @@ static int ov17_0223D99C(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -884,7 +884,7 @@ static int ov17_0223DA78(UnkStruct_ov17_02247A48 *param0, UnkStruct_ov17_0223D60 } break; default: - if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.unk_117 - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_4F8, param0->unk_00->unk_00.connectionCount - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 3; } break; diff --git a/src/overlay017/ov17_0223DAD0.c b/src/overlay017/ov17_0223DAD0.c index b39ef6a7cd..4b3cd093c1 100644 --- a/src/overlay017/ov17_0223DAD0.c +++ b/src/overlay017/ov17_0223DAD0.c @@ -20,6 +20,7 @@ #include "bg_window.h" #include "camera.h" +#include "contest.h" #include "font.h" #include "game_options.h" #include "game_overlay.h" @@ -48,7 +49,6 @@ #include "unk_02012744.h" #include "unk_020366A0.h" #include "unk_020393C8.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" #include "vram_transfer.h" @@ -158,7 +158,7 @@ static const UnkStruct_ov17_02253084 Unk_ov17_02253084[] = { static const struct { u32 unk_00; u32 unk_04; -} Unk_ov17_0225312C[4][5] = { +} Unk_ov17_0225312C[CONTEST_MAX_RANKS][CONTEST_TYPE_MAX] = { { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }, { 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0 }, { 0x2, 0x1, 0x3, 0x1, 0x4, 0x0, 0x5, 0x0, 0x6, 0x0 }, @@ -214,7 +214,7 @@ static const SpriteResourceCapacities Unk_ov17_02252FF0 = { 0x8 }; -int ov17_0223DAD0(ApplicationManager *appMan, int *param1) +int DanceCompetition_Init(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224DF54 *v0; @@ -279,9 +279,9 @@ int ov17_0223DAD0(ApplicationManager *appMan, int *param1) v0->unk_14.unk_44 = PokemonSpriteManager_New(HEAP_ID_23); ov17_0223E450(); - v0->unk_14.unk_84 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_DANCE_COMPETITION, HEAP_ID_23); + v0->unk_14.danceMessageLoader = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_DANCE_COMPETITION, HEAP_ID_23); v0->unk_14.unk_88 = StringTemplate_Default(HEAP_ID_23); - v0->unk_14.unk_8C = String_Init(2 * 160, HEAP_ID_23); + v0->unk_14.danceMessage = String_Init(2 * 160, HEAP_ID_23); v0->unk_14.unk_94 = sub_02012744(3 * 3, HEAP_ID_23); { @@ -328,12 +328,12 @@ int ov17_0223DAD0(ApplicationManager *appMan, int *param1) return 1; } -int ov17_0223DDD4(ApplicationManager *appMan, int *param1) +int DanceCompetition_Main(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224DF54 *v0 = ApplicationManager_Data(appMan); int v1; - sub_02094E98(v0->unk_00); + Contest_GetRNGNext(v0->unk_00); switch (*param1) { case 0: @@ -342,7 +342,7 @@ int ov17_0223DDD4(ApplicationManager *appMan, int *param1) } break; case 1: - if (sub_02094EDC(v0->unk_00) == 1) { + if (sub_02094EDC(v0->unk_00) == TRUE) { v1 = Unk_ov17_02253050[v0->unk_1096](v0, &v0->unk_1B1C); if ((v1 == 1) || (v1 == 2)) { @@ -364,7 +364,7 @@ int ov17_0223DDD4(ApplicationManager *appMan, int *param1) ov17_0224F35C(&v0->unk_109C); ov17_0224F3D8(&v0->unk_109C, v0); - if ((v0->unk_1B24 == 1) && (ov17_0224F3D0(&v0->unk_109C) == 0) && (sub_02094EDC(v0->unk_00) == 0)) { + if ((v0->unk_1B24 == 1) && (ov17_0224F3D0(&v0->unk_109C) == 0) && (sub_02094EDC(v0->unk_00) == FALSE)) { *param1 = 2; MI_CpuClear8(&v0->unk_1B1C, sizeof(UnkStruct_ov17_0223E838)); StartScreenFade(FADE_SUB_THEN_MAIN, FADE_TYPE_UNK_30, FADE_TYPE_UNK_30, COLOR_BLACK, 6, 1, HEAP_ID_23); @@ -382,7 +382,7 @@ int ov17_0223DDD4(ApplicationManager *appMan, int *param1) return 0; } -int ov17_0223DF0C(ApplicationManager *appMan, int *param1) +int DanceCompetition_Exit(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224DF54 *v0 = ApplicationManager_Data(appMan); int v1; @@ -429,9 +429,9 @@ int ov17_0223DF0C(ApplicationManager *appMan, int *param1) PaletteData_FreeBuffer(v0->unk_14.unk_90, 2); PaletteData_FreeBuffer(v0->unk_14.unk_90, 3); PaletteData_Free(v0->unk_14.unk_90); - String_Free(v0->unk_14.unk_8C); + String_Free(v0->unk_14.danceMessage); StringTemplate_Free(v0->unk_14.unk_88); - MessageLoader_Free(v0->unk_14.unk_84); + MessageLoader_Free(v0->unk_14.danceMessageLoader); Heap_Free(v0->unk_14.unk_60); SysTask_Done(v0->unk_04); @@ -697,19 +697,19 @@ static void ov17_0223E450(void) static void ov17_0223E458(UnkStruct_ov17_0224DF54 *param0) { - int v0; + int i; GF_ASSERT(param0->unk_00 != NULL); - for (v0 = 0; v0 < 4; v0++) { - param0->unk_A3C.unk_00[v0] = 4 - 1 - v0; - param0->unk_A3C.unk_05[v0] = 4 - 1 - v0; + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + param0->unk_A3C.unk_00[i] = 4 - 1 - i; + param0->unk_A3C.unk_05[i] = 4 - 1 - i; } ov17_0224CFB8(param0); - for (v0 = 0; v0 < 4; v0++) { - param0->unk_14.unk_A14[v0] = ov17_0224CFA8(Pokemon_GetValue(param0->unk_00->unk_00.unk_00[v0], MON_DATA_SPECIES, NULL)); + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + param0->unk_14.unk_A14[i] = ov17_0224CFA8(Pokemon_GetValue(param0->unk_00->unk_00.contestMons[i], MON_DATA_SPECIES, NULL)); } } @@ -887,7 +887,7 @@ static int ov17_0223E838(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -902,10 +902,10 @@ static int ov17_0223E8AC(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 case 0: param0->unk_A6C.unk_37 = 0; param0->unk_A6C.unk_38 = 0; - param0->unk_A6C.unk_30.unk_00 = param0->unk_00->unk_00.unk_113; + param0->unk_A6C.unk_30.contestantID = param0->unk_00->unk_00.playerContestantID; param0->unk_A6C.unk_30.unk_04 = ov17_0224C57C(param0->unk_00->unk_00.contestRank); - if (sub_0209590C(param0->unk_00) == 1) { + if (Contest_IsPracticeCompetition(param0->unk_00) == TRUE) { param0->unk_A6C.unk_36 = 2; } else { param0->unk_A6C.unk_36 = 1; @@ -916,7 +916,7 @@ static int ov17_0223E8AC(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 1: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -936,7 +936,7 @@ static int ov17_0223E954(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -982,7 +982,7 @@ static int ov17_0223E9A4(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 2: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -992,7 +992,7 @@ static int ov17_0223E9A4(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 4: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1005,18 +1005,18 @@ static int ov17_0223E9A4(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 static int ov17_0223EBB0(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E838 *param1) { - int v0; + int contestantID; switch (param1->unk_00) { case 0: param0->unk_A6C.unk_00 = param0->unk_A3C.unk_00[param0->unk_A3C.unk_04]; - for (v0 = 0; v0 < 4; v0++) { - param0->unk_A6C.unk_02[v0] = param0->unk_A3C.unk_05[v0]; + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + param0->unk_A6C.unk_02[contestantID] = param0->unk_A3C.unk_05[contestantID]; } - for (v0 = param0->unk_00->unk_00.unk_117; v0 < 4; v0++) { - param0->unk_A6C.unk_14[v0] = sub_02094E98(param0->unk_00); + for (contestantID = param0->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + param0->unk_A6C.unk_14[contestantID] = Contest_GetRNGNext(param0->unk_00); } param1->unk_00++; @@ -1037,7 +1037,7 @@ static int ov17_0223EC20(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -1055,7 +1055,7 @@ static int ov17_0223EC74(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -1073,7 +1073,7 @@ static int ov17_0223ECC8(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -1090,7 +1090,7 @@ static int ov17_0223ED1C(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 return 1; } - param0->unk_A6C.unk_30.unk_00 = param0->unk_A3C.unk_05[1]; + param0->unk_A6C.unk_30.contestantID = param0->unk_A3C.unk_05[1]; param0->unk_A6C.unk_30.unk_04 = ov17_0224C57C(param0->unk_00->unk_00.contestRank); param0->unk_A6C.unk_36 = 0; @@ -1099,7 +1099,7 @@ static int ov17_0223ED1C(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 1; } break; @@ -1135,7 +1135,7 @@ static int ov17_0223ED9C(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 2: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1161,7 +1161,7 @@ static int ov17_0223EE54(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 1: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1217,12 +1217,12 @@ static int ov17_0223EEB8(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 param0->unk_A6C.unk_37 = 0; param0->unk_A6C.unk_38 = 0; v1 = param0->unk_00->unk_156[0]; - param0->unk_A6C.unk_30.unk_00 = v1; + param0->unk_A6C.unk_30.contestantID = v1; - switch (param0->unk_00->unk_00.unk_111) { - case 0: - case 1: - case 2: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_UNK0: + case CONTEST_COMPETITION_UNK1: + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: param0->unk_A6C.unk_36 = 6; break; default: @@ -1237,7 +1237,7 @@ static int ov17_0223EEB8(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; case 2: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1266,7 +1266,7 @@ static int ov17_0223F03C(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0223E83 } break; default: - if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.unk_117 - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_109C, param0->unk_00->unk_00.connectionCount - param0->unk_00->unk_15B - 1, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 3; } break; diff --git a/src/overlay017/ov17_0223F118.c b/src/overlay017/ov17_0223F118.c index adbc4c4efb..84eea86a0d 100644 --- a/src/overlay017/ov17_0223F118.c +++ b/src/overlay017/ov17_0223F118.c @@ -5,11 +5,11 @@ #include #include "generated/items.h" +#include "generated/pokemon_contest_types.h" #include "struct_decls/font_oam.h" #include "struct_decls/struct_02012744_decl.h" #include "struct_defs/struct_020127E8.h" -#include "struct_defs/struct_02095C48.h" #include "overlay017/ov17_02252A70.h" #include "overlay017/struct_ov17_0223F2E4.h" @@ -19,6 +19,7 @@ #include "bg_window.h" #include "brightness_controller.h" #include "char_transfer.h" +#include "contest.h" #include "font.h" #include "g3d_pipeline.h" #include "game_overlay.h" @@ -102,7 +103,7 @@ void ov17_0223F1E0(G3DPipelineBuffers *param0) G3DPipelineBuffers_Free(param0); } -void ov17_0223F1E8(enum HeapID heapID, BgConfig *param1, SpriteManager *param2, UnkStruct_02012744 *param3, UnkStruct_ov17_0223F2E4 *param4, const String *param5, enum Font param6, TextColor param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14) +void ov17_0223F1E8(enum HeapID heapID, BgConfig *param1, SpriteManager *param2, UnkStruct_02012744 *param3, UnkStruct_ov17_0223F2E4 *param4, const String *message, enum Font param6, TextColor param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14) { UnkStruct_020127E8 v0; Window v1; @@ -113,7 +114,7 @@ void ov17_0223F1E8(enum HeapID heapID, BgConfig *param1, SpriteManager *param2, int v7 = 0; { - v5 = Font_CalcStringWidth(param6, param5, v7); + v5 = Font_CalcStringWidth(param6, message, v7); v6 = v5 / 8; if (FX_ModS32(v5, 8) != 0) { @@ -124,7 +125,7 @@ void ov17_0223F1E8(enum HeapID heapID, BgConfig *param1, SpriteManager *param2, { Window_Init(&v1); Window_AddToTopLeftCorner(param1, &v1, v6, 16 / 8, 0, 0); - Text_AddPrinterWithParamsColorAndSpacing(&v1, param6, param5, 0, 0, TEXT_SPEED_NO_TRANSFER, param7, v7, 0, NULL); + Text_AddPrinterWithParamsColorAndSpacing(&v1, param6, message, 0, 0, TEXT_SPEED_NO_TRANSFER, param7, v7, 0, NULL); } v3 = sub_02012898(&v1, NNS_G2D_VRAM_TYPE_2DMAIN, heapID); @@ -179,16 +180,16 @@ void ov17_0223F2F8(UnkStruct_ov17_0223F2E4 *param0, int param1, int param2, int FontOAM_SetXY(param0->unk_00, param1, param2); } -String *ov17_0223F310(u32 param0, enum HeapID heapID) +String *Contest_GetJudgeName(u32 judgeNameMessageID, enum HeapID heapID) { - MessageLoader *v0 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_JUDGE_NAMES, heapID); - String *v1 = MessageLoader_GetNewString(v0, param0); + MessageLoader *judgeNames = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_JUDGE_NAMES, heapID); + String *judgeName = MessageLoader_GetNewString(judgeNames, judgeNameMessageID); - MessageLoader_Free(v0); - return v1; + MessageLoader_Free(judgeNames); + return judgeName; } -void ov17_0223F334(UnkStruct_02095C48 *param0, int param1) +void ov17_0223F334(Contest *param0, int param1) { u8 *v0; int v1; @@ -202,89 +203,89 @@ void ov17_0223F334(UnkStruct_02095C48 *param0, int param1) Heap_Free(v0); } -void ov17_0223F374(UnkStruct_02095C48 *param0) +void ov17_0223F374(Contest *contest) { - int v0, v1, v2, v3, v4; - u32 v5; - s32 v6, v7; + int i, primaryContestStat, secondayContestStat1, secondayContestStat2, sheen; + u32 item; + s32 itemModifier, contestStatScore; - for (v0 = 0; v0 < 4; v0++) { - v5 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_HELD_ITEM, NULL); - v6 = 100; + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + item = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_HELD_ITEM, NULL); + itemModifier = 100; - switch (param0->unk_00.contestType) { - case 0: - v1 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_COOL, NULL); - v2 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_TOUGH, NULL); - v3 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_BEAUTY, NULL); + switch (contest->unk_00.contestType) { + case CONTEST_TYPE_COOL: + primaryContestStat = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_COOL, NULL); + secondayContestStat1 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_TOUGH, NULL); + secondayContestStat2 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_BEAUTY, NULL); - switch (v5) { + switch (item) { case ITEM_RED_SCARF: - v6 = 110; + itemModifier = 110; break; case ITEM_BLUE_SCARF: case ITEM_YELLOW_SCARF: - v6 = 105; + itemModifier = 105; break; } break; - case 1: - v1 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_BEAUTY, NULL); - v2 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_COOL, NULL); - v3 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_CUTE, NULL); + case CONTEST_TYPE_BEAUTY: + primaryContestStat = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_BEAUTY, NULL); + secondayContestStat1 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_COOL, NULL); + secondayContestStat2 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_CUTE, NULL); - switch (v5) { + switch (item) { case ITEM_BLUE_SCARF: - v6 = 110; + itemModifier = 110; break; case ITEM_RED_SCARF: case ITEM_PINK_SCARF: - v6 = 105; + itemModifier = 105; break; } break; - case 2: - v1 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_CUTE, NULL); - v2 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_BEAUTY, NULL); - v3 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_SMART, NULL); + case CONTEST_TYPE_CUTE: + primaryContestStat = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_CUTE, NULL); + secondayContestStat1 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_BEAUTY, NULL); + secondayContestStat2 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_SMART, NULL); - switch (v5) { + switch (item) { case ITEM_PINK_SCARF: - v6 = 110; + itemModifier = 110; break; case ITEM_BLUE_SCARF: case ITEM_GREEN_SCARF: - v6 = 105; + itemModifier = 105; break; } break; - case 3: - v1 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_SMART, NULL); - v2 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_CUTE, NULL); - v3 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_TOUGH, NULL); + case CONTEST_TYPE_SMART: + primaryContestStat = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_SMART, NULL); + secondayContestStat1 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_CUTE, NULL); + secondayContestStat2 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_TOUGH, NULL); - switch (v5) { + switch (item) { case ITEM_GREEN_SCARF: - v6 = 110; + itemModifier = 110; break; case ITEM_PINK_SCARF: case ITEM_YELLOW_SCARF: - v6 = 105; + itemModifier = 105; break; } break; - case 4: - v1 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_TOUGH, NULL); - v2 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_SMART, NULL); - v3 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_COOL, NULL); + case CONTEST_TYPE_TOUGH: + primaryContestStat = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_TOUGH, NULL); + secondayContestStat1 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_SMART, NULL); + secondayContestStat2 = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_COOL, NULL); - switch (v5) { + switch (item) { case ITEM_YELLOW_SCARF: - v6 = 110; + itemModifier = 110; break; case ITEM_GREEN_SCARF: case ITEM_RED_SCARF: - v6 = 105; + itemModifier = 105; break; } @@ -294,11 +295,11 @@ void ov17_0223F374(UnkStruct_02095C48 *param0) return; } - v4 = Pokemon_GetValue(param0->unk_00.unk_00[v0], MON_DATA_SHEEN, NULL); - v7 = v1 + ((v2 + v3 + v4) / 2); - v7 = v7 * v6 / 100; + sheen = Pokemon_GetValue(contest->unk_00.contestMons[i], MON_DATA_SHEEN, NULL); + contestStatScore = primaryContestStat + ((secondayContestStat1 + secondayContestStat2 + sheen) / 2); + contestStatScore = contestStatScore * itemModifier / 100; - param0->unk_00.unk_118[v0].unk_00 = v7; + contest->unk_00.unk_118[i].unk_00 = contestStatScore; } } diff --git a/src/overlay017/ov17_0223F7E4.c b/src/overlay017/ov17_0223F7E4.c index 613f75016f..0e48ac03a4 100644 --- a/src/overlay017/ov17_0223F7E4.c +++ b/src/overlay017/ov17_0223F7E4.c @@ -6,7 +6,6 @@ #include "struct_decls/font_oam.h" #include "struct_decls/struct_02012744_decl.h" #include "struct_defs/struct_020127E8.h" -#include "struct_defs/struct_02095C48.h" #include "overlay017/ov17_0223F118.h" #include "overlay017/ov17_02241270.h" @@ -20,6 +19,7 @@ #include "assert.h" #include "bg_window.h" #include "char_transfer.h" +#include "contest.h" #include "font.h" #include "graphics.h" #include "heap.h" @@ -40,6 +40,8 @@ #include "unk_02012744.h" #include "unk_02094EDC.h" +#include "res/text/bank/contest_text.h" + typedef struct { s8 unk_00; s8 unk_01; @@ -107,12 +109,12 @@ typedef struct { UnkStruct_ov17_02240BF4 unk_50[4]; UnkStruct_ov17_02240BF4 unk_A0[4]; UnkStruct_ov17_02240BF4 unk_F0[3]; - u8 unk_12C[4]; - u8 unk_130[4]; + u8 moveContestEffect[LEARNED_MOVES_MAX]; + u8 moveContestType[LEARNED_MOVES_MAX]; } UnkStruct_ov17_0223FF38; typedef struct UnkStruct_ov17_0223F7E4_t { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; UnkStruct_ov17_0223F88C *unk_04; UnkStruct_ov17_022472F8 *unk_08; void *unk_0C; @@ -160,7 +162,7 @@ typedef struct { }; u16 unk_0C_val2[4]; }; - const TouchScreenRect *unk_14; + const TouchScreenRect *touchScreenRect; const int *unk_18; const u8 *unk_1C; int (*unk_20)(UnkStruct_ov17_0223F7E4 *param0, int param1); @@ -180,7 +182,7 @@ static void ov17_022402A8(UnkStruct_ov17_0223F7E4 *param0); static void ov17_022404B0(UnkStruct_ov17_0223F7E4 *param0); static void ov17_022402E8(UnkStruct_ov17_0223F7E4 *param0, u16 param1[]); static void ov17_02240388(UnkStruct_ov17_0223F7E4 *param0); -static void ov17_02240424(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2); +static void ov17_02240424(UnkStruct_ov17_0223F7E4 *param0, int moveContestType, int moveSlot); static void ov17_022404A8(UnkStruct_ov17_0223F7E4 *param0); static void ov17_022404CC(SysTaskFunc param0, UnkStruct_ov17_0223F7E4 *param1); static void ov17_022404FC(UnkStruct_ov17_0223F7E4 *param0); @@ -188,11 +190,11 @@ static void ov17_0224051C(SysTask *param0, void *param1); static void ov17_02240658(SysTask *param0, void *param1); static void ov17_022411E4(SysTask *param0, void *param1); static void ov17_02241220(SysTask *param0, void *param1); -static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_02240138 *param1, const String *param2, int param3, u32 param4, int param5, int param6, int param7, int param8, int param9, UnkStruct_ov17_02240BF4 *param10); +static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_02240138 *param1, const String *string, enum Font font, u32 param4, int param5, int param6, int x, int y, int param9, UnkStruct_ov17_02240BF4 *param10); static void ov17_02240260(UnkStruct_ov17_0223F7E4 *param0); void ov17_0223F80C(BgConfig *param0); void ov17_0223F864(BgConfig *param0); -void *ov17_0223F88C(UnkStruct_02095C48 *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2); +void *ov17_0223F88C(Contest *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2); void ov17_0223F960(UnkStruct_ov17_0223F7E4 *param0); void ov17_0223F9C4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2, void *param3); int ov17_0223FAF8(UnkStruct_ov17_0223F7E4 *param0); @@ -605,7 +607,7 @@ void ov17_0223F864(BgConfig *param0) } } -void *ov17_0223F88C(UnkStruct_02095C48 *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2) +void *ov17_0223F88C(Contest *param0, UnkStruct_ov17_0223F88C *param1, UnkStruct_ov17_022472F8 *param2) { UnkStruct_ov17_0223F7E4 *v0; NARC *v1; @@ -739,20 +741,20 @@ int ov17_0223FAF8(UnkStruct_ov17_0223F7E4 *param0) v4 = &Unk_ov17_02253558[param0->unk_2C8]; - if (v4->unk_14 == NULL) { - return 0xffffffff; + if (v4->touchScreenRect == NULL) { + return TOUCHSCREEN_INPUT_NONE; } GF_ASSERT(v4->unk_18 != NULL); - v1 = TouchScreen_CheckRectanglePressed(v4->unk_14); + v1 = TouchScreen_CheckRectanglePressed(v4->touchScreenRect); - if (v1 == 0xffffffff) { + if (v1 == TOUCHSCREEN_INPUT_NONE) { v1 = ov17_02240C90(param0); v5++; } - if (v1 == 0xffffffff) { + if (v1 == TOUCHSCREEN_INPUT_NONE) { v0 = 0xffffffff; v3 = 0xff; } else { @@ -793,92 +795,89 @@ BOOL ov17_0223FBC0(UnkStruct_ov17_0223F7E4 *param0) static void ov17_0223FBD4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2) { - String *v0, *v1; - u32 v2 = sub_02095848(param0->unk_04->unk_00->contestRank, param0->unk_04->unk_00->unk_111, param0->unk_00->isLinkContest); - u32 v3 = sub_020958C4(param0->unk_04->unk_00->contestType, param0->unk_04->unk_00->unk_111); - v0 = MessageLoader_GetNewString(param0->unk_04->unk_38, v2); - v1 = MessageLoader_GetNewString(param0->unk_04->unk_38, v3); + String *contestRankString, *contestTypeString; + u32 contestRankMessageID = Contest_GetContestRankTitleMessageID(param0->unk_04->unk_00->contestRank, param0->unk_04->unk_00->competitionType, param0->unk_00->isLinkContest); + u32 contestTypeMessageID = Contest_GetFullContestTypeMessageID(param0->unk_04->unk_00->contestType, param0->unk_04->unk_00->competitionType); + contestRankString = MessageLoader_GetNewString(param0->unk_04->contestTextMessageLoader, contestRankMessageID); + contestTypeString = MessageLoader_GetNewString(param0->unk_04->contestTextMessageLoader, contestTypeMessageID); - ov17_02240138(param0, ¶m0->unk_40[0], v0, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, 128, 8 * 0x10 - 1, 1, NULL); - ov17_02240138(param0, ¶m0->unk_40[1], v1, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, 128, 8 * 0x14 - 1, 1, NULL); + ov17_02240138(param0, ¶m0->unk_40[0], contestRankString, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, 128, 8 * 0x10 - 1, 1, NULL); + ov17_02240138(param0, ¶m0->unk_40[1], contestTypeString, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, 128, 8 * 0x14 - 1, 1, NULL); - String_Free(v0); - String_Free(v1); + String_Free(contestRankString); + String_Free(contestTypeString); PaletteData_LoadBufferFromFile(param0->unk_04->unk_50, 45, 38, 21, 1, 0x20, 2 * 16, 16 * param0->unk_04->unk_00->contestType); } static void ov17_0223FCAC(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2) { - u16 v0[LEARNED_MOVES_MAX], v1[4]; - int v2; + u16 moveList[LEARNED_MOVES_MAX]; + u16 moveContestEffects[LEARNED_MOVES_MAX]; + int i; String *v3; String *v4, *v5; u32 v6, v7; UnkStruct_ov17_0223FF38 *v8 = ¶m0->unk_18C; param0->unk_2C9 = 0xff; - for (v2 = 0; v2 < LEARNED_MOVES_MAX; v2++) { - v0[v2] = Pokemon_GetValue(param0->unk_04->unk_00->unk_00[param0->unk_04->unk_00->unk_113], MON_DATA_MOVE1 + v2, NULL); + for (i = 0; i < LEARNED_MOVES_MAX; i++) { + moveList[i] = Pokemon_GetValue(param0->unk_04->unk_00->contestMons[param0->unk_04->unk_00->playerContestantID], MON_DATA_MOVE1 + i, NULL); - if (v0[v2] != 0) { - v1[v2] = v8->unk_12C[v2]; + if (moveList[i] != MOVE_NONE) { + moveContestEffects[i] = v8->moveContestEffect[i]; } else { - v1[v2] = 0; + moveContestEffects[i] = 0; } - ov17_02240138(param0, ¶m0->unk_40[0 + v2], NULL, FONT_SUBSCREEN, TEXT_COLOR(1, 7, 8), 0, 33008, Unk_ov17_02253278[v2][0], Unk_ov17_02253278[v2][1], 0, &v8->unk_00[v2]); - ov17_02240138(param0, ¶m0->unk_40[4 + v2], NULL, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, Unk_ov17_02253314[v2][0][0], Unk_ov17_02253314[v2][0][1], 0, &v8->unk_50[v2]); - ov17_02240138(param0, ¶m0->unk_40[8 + v2], NULL, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, Unk_ov17_02253314[v2][1][0], Unk_ov17_02253314[v2][1][1], 0, &v8->unk_A0[v2]); + ov17_02240138(param0, ¶m0->unk_40[0 + i], NULL, FONT_SUBSCREEN, TEXT_COLOR(1, 7, 8), 0, 33008, Unk_ov17_02253278[i][0], Unk_ov17_02253278[i][1], 0, &v8->unk_00[i]); + ov17_02240138(param0, ¶m0->unk_40[4 + i], NULL, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, Unk_ov17_02253314[i][0][0], Unk_ov17_02253314[i][0][1], 0, &v8->unk_50[i]); + ov17_02240138(param0, ¶m0->unk_40[8 + i], NULL, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33008, Unk_ov17_02253314[i][1][0], Unk_ov17_02253314[i][1][1], 0, &v8->unk_A0[i]); - if (v0[v2] == 0) { - sub_020129D0(param0->unk_40[0 + v2].unk_00, 0); - sub_020129D0(param0->unk_40[4 + v2].unk_00, 0); - sub_020129D0(param0->unk_40[8 + v2].unk_00, 0); + if (moveList[i] == MOVE_NONE) { + sub_020129D0(param0->unk_40[0 + i].unk_00, 0); + sub_020129D0(param0->unk_40[4 + i].unk_00, 0); + sub_020129D0(param0->unk_40[8 + i].unk_00, 0); } } - { - for (v2 = 0; v2 < 4; v2++) { - if (v0[v2] != 0) { - int v9; + for (i = 0; i < LEARNED_MOVES_MAX; i++) { + if (moveList[i] != MOVE_NONE) { + int moveContestType; - v9 = v8->unk_130[v2]; - ov17_02240424(param0, v9, v2); - } else { - ov17_02240424(param0, -1, v2); - } + moveContestType = v8->moveContestType[i]; + ov17_02240424(param0, moveContestType, i); + } else { + ov17_02240424(param0, -1, i); } } - for (v2 = 0; v2 < 4; v2++) { - if ((v0[v2] != 0) && (ov17_02243A98(param0->unk_08, param0->unk_04->unk_00->unk_113, v0[v2]) == 0)) { - PaletteData_LoadBuffer(param0->unk_04->unk_50, ¶m0->unk_34[1][0x8 * 16], 1, (4 + v2) * 16, 0x20); + for (i = 0; i < LEARNED_MOVES_MAX; i++) { + if (moveList[i] != MOVE_NONE && ov17_02243A98(param0->unk_08, param0->unk_04->unk_00->playerContestantID, moveList[i]) == 0) { + PaletteData_LoadBuffer(param0->unk_04->unk_50, ¶m0->unk_34[1][0x8 * 16], 1, (4 + i) * 16, 0x20); GF_ASSERT(param0->unk_2C9 == 0xff); - param0->unk_2C9 = v2; + param0->unk_2C9 = i; } } - ov17_022402E8(param0, v0); + ov17_022402E8(param0, moveList); - { - int v10; - int v11, v12; + int v10; + int v11, v12; - for (v2 = 0; v2 < 4; v2++) { - if (v0[v2] == 0) { - continue; - } + for (i = 0; i < LEARNED_MOVES_MAX; i++) { + if (moveList[i] == MOVE_NONE) { + continue; + } - v10 = sub_02095734(v1[v2]); - v11 = MATH_IAbs(v10) / 10; + v10 = sub_02095734(moveContestEffects[i]); + v11 = MATH_IAbs(v10) / 10; - GF_ASSERT(v11 <= 6); + GF_ASSERT(v11 <= 6); - for (v12 = 0; v12 < v11; v12++) { - GF_ASSERT(param0->unk_12C[v2][v12] == NULL); - param0->unk_12C[v2][v12] = ov17_0224136C(param0->unk_04->unk_18, param0->unk_04->unk_1C, Unk_ov17_02253334[v2][0] + 8 * v12, Unk_ov17_02253334[v2][1], v10); - } + for (v12 = 0; v12 < v11; v12++) { + GF_ASSERT(param0->unk_12C[i][v12] == NULL); + param0->unk_12C[i][v12] = ov17_0224136C(param0->unk_04->unk_18, param0->unk_04->unk_1C, Unk_ov17_02253334[i][0] + 8 * v12, Unk_ov17_02253334[i][1], v10); } } } @@ -887,7 +886,7 @@ static void ov17_0223FF38(UnkStruct_ov17_0223F7E4 *param0, int param1, int param { int v0; BgConfig *v1; - String *v2; + String *message; UnkStruct_ov17_0223FF38 *v3 = ¶m0->unk_18C; v1 = param0->unk_04->unk_24; @@ -895,24 +894,24 @@ static void ov17_0223FF38(UnkStruct_ov17_0223F7E4 *param0, int param1, int param ov17_02240138(param0, ¶m0->unk_40[0 + v0], NULL, FONT_SUBSCREEN, TEXT_COLOR(1, 9, 0xa), 0, 33008, Unk_ov17_0225325C[v0][0], Unk_ov17_0225325C[v0][1], 1, &v3->unk_F0[v0]); } - v2 = MessageLoader_GetNewString(param0->unk_04->unk_38, 53); + message = MessageLoader_GetNewString(param0->unk_04->contestTextMessageLoader, Contest_Text_Exit); - ov17_02240138(param0, ¶m0->unk_40[0 + v0], v2, FONT_SUBSCREEN, TEXT_COLOR(1, 9, 0xa), 0, 33008, 128, 0x14 * 8 + 4, 1, NULL); - String_Free(v2); + ov17_02240138(param0, ¶m0->unk_40[0 + v0], message, FONT_SUBSCREEN, TEXT_COLOR(1, 9, 0xa), 0, 33008, 128, 0x14 * 8 + 4, 1, NULL); + String_Free(message); param0->unk_128 = ov17_022412C0(param0->unk_04->unk_18, param0->unk_04->unk_1C, param0->unk_04->unk_00->unk_10E); } -static int ov17_0223FFF4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2) +static int ov17_0223FFF4(UnkStruct_ov17_0223F7E4 *param0, int moveSlot, int param2) { u32 v0; - int v1; + int moveID; const s16 *v2; const UnkStruct_ov17_02253388 *v3; - v0 = param1; + v0 = moveSlot; - switch (param1) { + switch (moveSlot) { case 0xffffffff: default: return 0xffffffff; @@ -920,9 +919,9 @@ static int ov17_0223FFF4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2 case 1: case 2: case 3: - v1 = Pokemon_GetValue(param0->unk_04->unk_00->unk_00[param0->unk_04->unk_00->unk_113], MON_DATA_MOVE1 + param1, NULL); + moveID = Pokemon_GetValue(param0->unk_04->unk_00->contestMons[param0->unk_04->unk_00->playerContestantID], MON_DATA_MOVE1 + moveSlot, NULL); - if ((v1 == 0) || (param0->unk_2C9 == (param1 - 0))) { + if (moveID == MOVE_NONE || param0->unk_2C9 == moveSlot) { return 0xffffffff; } @@ -937,9 +936,9 @@ static int ov17_0223FFF4(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2 param0->unk_2CC.unk_04_val1.unk_0C = v2; param0->unk_2CC.unk_04_val1.unk_10 = v3; param0->unk_2CC.unk_04_val1.unk_18 = 2; - param0->unk_2CC.unk_04_val1.unk_14 = param1; + param0->unk_2CC.unk_04_val1.unk_14 = moveSlot; - return param1; + return moveSlot; } static int ov17_02240094(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2) @@ -983,10 +982,10 @@ static int ov17_02240094(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2 return param1; } -static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_02240138 *param1, const String *param2, int param3, u32 param4, int param5, int param6, int param7, int param8, int param9, UnkStruct_ov17_02240BF4 *param10) +static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_02240138 *param1, const String *string, enum Font font, u32 textColor, int param5, int param6, int x, int y, int param9, UnkStruct_ov17_02240BF4 *param10) { UnkStruct_020127E8 v0; - Window v1; + Window window; CharTransferAllocation v2; int v3; FontOAM *v4; @@ -1000,37 +999,37 @@ static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_022401 v6 = param0->unk_04->unk_1C; if (param10 == NULL) { - ov17_02240C60(param2, param3, &v7, &v8); + ov17_02240C60(string, font, &v7, &v8); } else { v7 = param10->unk_12; v8 = param10->unk_10; } if (param10 == NULL) { - Window_Init(&v1); - Window_AddToTopLeftCorner(v5, &v1, v8, 16 / 8, 0, 0); - Text_AddPrinterWithParamsColorAndSpacing(&v1, param3, param2, 0, 0, TEXT_SPEED_NO_TRANSFER, param4, 0, 0, NULL); + Window_Init(&window); + Window_AddToTopLeftCorner(v5, &window, v8, 16 / 8, 0, 0); + Text_AddPrinterWithParamsColorAndSpacing(&window, font, string, 0, 0, TEXT_SPEED_NO_TRANSFER, textColor, 0, 0, NULL); } else { - v1 = param10->unk_00; + window = param10->unk_00; } - v3 = sub_02012898(&v1, NNS_G2D_VRAM_TYPE_2DSUB, HEAP_ID_21); + v3 = sub_02012898(&window, NNS_G2D_VRAM_TYPE_2DSUB, HEAP_ID_21); CharTransfer_AllocRange(v3, 1, NNS_G2D_VRAM_TYPE_2DSUB, &v2); if (param9 == 1) { - param7 -= v7 / 2; + x -= v7 / 2; } - param8 += (((192 + 80) << FX32_SHIFT) >> FX32_SHIFT) - 8; + y += (((192 + 80) << FX32_SHIFT) >> FX32_SHIFT) - 8; v0.unk_00 = param0->unk_3C; - v0.unk_04 = &v1; + v0.unk_04 = &window; v0.unk_08 = SpriteManager_GetSpriteList(v6); v0.unk_0C = SpriteManager_FindPlttResourceProxy(v6, param6); v0.unk_10 = NULL; v0.unk_14 = v2.offset; - v0.unk_18 = param7; - v0.unk_1C = param8; + v0.unk_18 = x; + v0.unk_1C = y; v0.unk_20 = 0; v0.unk_24 = 100; v0.unk_28 = NNS_G2D_VRAM_TYPE_2DSUB; @@ -1039,10 +1038,10 @@ static void ov17_02240138(UnkStruct_ov17_0223F7E4 *param0, UnkStruct_ov17_022401 v4 = sub_020127E8(&v0); sub_02012AC0(v4, param5); - FontOAM_SetXY(v4, param7, param8); + FontOAM_SetXY(v4, x, y); if (param10 == NULL) { - Window_Remove(&v1); + Window_Remove(&window); } param1->unk_00 = v4; @@ -1087,7 +1086,7 @@ static void ov17_022402A8(UnkStruct_ov17_0223F7E4 *param0) static void ov17_022402E8(UnkStruct_ov17_0223F7E4 *param0, u16 param1[]) { - int v0; + int i; SpriteSystem *v1; SpriteManager *v2; SpriteTemplate v3; @@ -1097,18 +1096,18 @@ static void ov17_022402E8(UnkStruct_ov17_0223F7E4 *param0, u16 param1[]) v2 = param0->unk_04->unk_1C; v3 = Unk_ov17_02253354; - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->unk_118[v0] == NULL); + for (i = 0; i < LEARNED_MOVES_MAX; i++) { + GF_ASSERT(param0->unk_118[i] == NULL); - if (param1[v0] != 0) { - v4 = param0->unk_18C.unk_130[v0]; + if (param1[i] != 0) { + v4 = param0->unk_18C.moveContestType[i]; - v3.resources[0] = 33014 + v0; - v3.x = Unk_ov17_02253298[v0][0]; - v3.y = Unk_ov17_02253298[v0][1]; + v3.resources[0] = 33014 + i; + v3.x = Unk_ov17_02253298[i][0]; + v3.y = Unk_ov17_02253298[i][1]; - param0->unk_118[v0] = ov17_0224F154(v1, v2, v4, &v3); - ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_118[v0], v3.x, v3.y, (192 + 80) << FX32_SHIFT); + param0->unk_118[i] = ov17_0224F154(v1, v2, v4, &v3); + ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_118[i], v3.x, v3.y, (192 + 80) << FX32_SHIFT); } } } @@ -1152,7 +1151,7 @@ static void ov17_022403B0(UnkStruct_ov17_0223F7E4 *param0, const s16 *param1, co Bg_ScheduleTilemapTransfer(v2, 4); } -static void ov17_02240424(UnkStruct_ov17_0223F7E4 *param0, int param1, int param2) +static void ov17_02240424(UnkStruct_ov17_0223F7E4 *param0, int moveContestType, int moveSlot) { const u16 *const v0[] = { &Unk_ov17_022534B8[16 * 3], @@ -1162,11 +1161,11 @@ static void ov17_02240424(UnkStruct_ov17_0223F7E4 *param0, int param1, int param &Unk_ov17_022534B8[16 * 0], }; - if (param1 != -1) { - PaletteData_LoadBuffer(param0->unk_04->unk_50, v0[param1], 1, (4 + param2) * 16, 0x20); + if (moveContestType != -1) { + PaletteData_LoadBuffer(param0->unk_04->unk_50, v0[moveContestType], 1, (4 + moveSlot) * 16, 0x20); } else { - ov17_022403B0(param0, &Unk_ov17_02253248[param2], &Unk_ov17_02253408[param2], 2, 0); - PaletteData_LoadBuffer(param0->unk_04->unk_50, ¶m0->unk_34[1][0x8 * 16], 1, (4 + param2) * 16, 0x20); + ov17_022403B0(param0, &Unk_ov17_02253248[moveSlot], &Unk_ov17_02253408[moveSlot], 2, 0); + PaletteData_LoadBuffer(param0->unk_04->unk_50, ¶m0->unk_34[1][0x8 * 16], 1, (4 + moveSlot) * 16, 0x20); } } @@ -1265,13 +1264,13 @@ static void ov17_02240658(SysTask *param0, void *param1) int v2, v3; int v4, v5, v6; int v7, v8; - u16 v9[LEARNED_MOVES_MAX]; + u16 learnedMoves[LEARNED_MOVES_MAX]; int v10, v11; v1 = v0->unk_04->unk_24; for (v10 = 0; v10 < LEARNED_MOVES_MAX; v10++) { - v9[v10] = Pokemon_GetValue(v0->unk_04->unk_00->unk_00[v0->unk_04->unk_00->unk_113], MON_DATA_MOVE1 + v10, NULL); + learnedMoves[v10] = Pokemon_GetValue(v0->unk_04->unk_00->contestMons[v0->unk_04->unk_00->playerContestantID], MON_DATA_MOVE1 + v10, NULL); } switch (v0->unk_2CC.unk_04_val1.unk_14) { @@ -1280,7 +1279,7 @@ static void ov17_02240658(SysTask *param0, void *param1) v5 = 4; v6 = 8; v7 = 0; - v8 = v9[0]; + v8 = learnedMoves[0]; v11 = 0; break; case 1: @@ -1288,7 +1287,7 @@ static void ov17_02240658(SysTask *param0, void *param1) v5 = 5; v6 = 9; v7 = 1; - v8 = v9[1]; + v8 = learnedMoves[1]; v11 = 1; break; case 2: @@ -1296,7 +1295,7 @@ static void ov17_02240658(SysTask *param0, void *param1) v5 = 6; v6 = 10; v7 = 2; - v8 = v9[2]; + v8 = learnedMoves[2]; v11 = 2; break; case 3: @@ -1304,7 +1303,7 @@ static void ov17_02240658(SysTask *param0, void *param1) v5 = 7; v6 = 11; v7 = 3; - v8 = v9[3]; + v8 = learnedMoves[3]; v11 = 3; break; default: @@ -1480,45 +1479,45 @@ static void ov17_022409F4(UnkStruct_ov17_0223F7E4 *param0) } } -void ov17_02240A80(UnkStruct_ov17_0223F7E4 *param0, u16 param1[]) +void ov17_02240A80(UnkStruct_ov17_0223F7E4 *param0, u16 moves[]) { UnkStruct_ov17_0223FF38 *v0; int v1; String *v2; - String *v3, *v4, *v5; - u32 v6, v7; + String *lineOneEffectMessage, *lineTwoEffectMessage, *judgeName; + u32 lineOneEffectMessageID, lineTwoEffectMessageID; v0 = ¶m0->unk_18C; - for (v1 = 0; v1 < 4; v1++) { - if (param1[v1] != 0) { - v0->unk_12C[v1] = MoveTable_LoadParam(param1[v1], MOVEATTRIBUTE_CONTEST_EFFECT); - v0->unk_130[v1] = MoveTable_LoadParam(param1[v1], MOVEATTRIBUTE_CONTEST_TYPE); + for (v1 = 0; v1 < LEARNED_MOVES_MAX; v1++) { + if (moves[v1] != 0) { + v0->moveContestEffect[v1] = MoveTable_LoadParam(moves[v1], MOVEATTRIBUTE_CONTEST_EFFECT); + v0->moveContestType[v1] = MoveTable_LoadParam(moves[v1], MOVEATTRIBUTE_CONTEST_TYPE); } else { - v0->unk_12C[v1] = 0; - v0->unk_130[v1] = 0; + v0->moveContestEffect[v1] = 0; + v0->moveContestType[v1] = 0; } - v2 = MessageUtil_MoveName(param1[v1], HEAP_ID_21); + v2 = MessageUtil_MoveName(moves[v1], HEAP_ID_21); ov17_02240BF4(param0, v2, FONT_SUBSCREEN, &v0->unk_00[v1], TEXT_COLOR(1, 7, 8)); String_Free(v2); - LoadTwoLineContestEffectMessages(v0->unk_12C[v1], &v6, &v7); + Contest_LoadTwoLineContestEffectMessages(v0->moveContestEffect[v1], &lineOneEffectMessageID, &lineTwoEffectMessageID); - v3 = MessageLoader_GetNewString(param0->unk_04->unk_40, v6); - v4 = MessageLoader_GetNewString(param0->unk_04->unk_40, v7); + lineOneEffectMessage = MessageLoader_GetNewString(param0->unk_04->contestEffectMessages, lineOneEffectMessageID); + lineTwoEffectMessage = MessageLoader_GetNewString(param0->unk_04->contestEffectMessages, lineTwoEffectMessageID); - ov17_02240BF4(param0, v3, FONT_SYSTEM, &v0->unk_50[v1], TEXT_COLOR(1, 2, 0)); - ov17_02240BF4(param0, v4, FONT_SYSTEM, &v0->unk_A0[v1], TEXT_COLOR(1, 2, 0)); + ov17_02240BF4(param0, lineOneEffectMessage, FONT_SYSTEM, &v0->unk_50[v1], TEXT_COLOR(1, 2, 0)); + ov17_02240BF4(param0, lineTwoEffectMessage, FONT_SYSTEM, &v0->unk_A0[v1], TEXT_COLOR(1, 2, 0)); - String_Free(v3); - String_Free(v4); + String_Free(lineOneEffectMessage); + String_Free(lineTwoEffectMessage); } for (v1 = 0; v1 < (1 + 2); v1++) { - v5 = ov17_0223F310(param0->unk_04->unk_00->unk_C0[v1].unk_00, HEAP_ID_21); - ov17_02240BF4(param0, v5, FONT_SUBSCREEN, &v0->unk_F0[v1], TEXT_COLOR(1, 9, 0xa)); - String_Free(v5); + judgeName = Contest_GetJudgeName(param0->unk_04->unk_00->unk_C0[v1].judgeNameMessageID, HEAP_ID_21); + ov17_02240BF4(param0, judgeName, FONT_SUBSCREEN, &v0->unk_F0[v1], TEXT_COLOR(1, 9, 0xa)); + String_Free(judgeName); } { @@ -1602,7 +1601,7 @@ static int ov17_02240D04(UnkStruct_ov17_0223F7E4 *param0, int param1) v2 = &Unk_ov17_02253558[param0->unk_2C8]; for (v4 = 0; v4 < LEARNED_MOVES_MAX; v4++) { - v7[v4] = Pokemon_GetValue(param0->unk_04->unk_00->unk_00[param0->unk_04->unk_00->unk_113], MON_DATA_MOVE1 + v4, NULL); + v7[v4] = Pokemon_GetValue(param0->unk_04->unk_00->contestMons[param0->unk_04->unk_00->playerContestantID], MON_DATA_MOVE1 + v4, NULL); } if (param1 == 1) { @@ -1618,7 +1617,7 @@ static int ov17_02240D04(UnkStruct_ov17_0223F7E4 *param0, int param1) v3 = Unk_ov17_0225323C[v0->unk_01][v0->unk_02]; } - ov17_02252C78(param0->unk_2FC, v2->unk_14[v3].rect.left + 8, v2->unk_14[v3].rect.right - 8, v2->unk_14[v3].rect.top + 8, v2->unk_14[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); + ov17_02252C78(param0->unk_2FC, v2->touchScreenRect[v3].rect.left + 8, v2->touchScreenRect[v3].rect.right - 8, v2->touchScreenRect[v3].rect.top + 8, v2->touchScreenRect[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); return 0xffffffff; } @@ -1632,7 +1631,7 @@ static int ov17_02240D04(UnkStruct_ov17_0223F7E4 *param0, int param1) case PAD_KEY_LEFT: case PAD_KEY_RIGHT: v3 = Unk_ov17_0225323C[v0->unk_01][v0->unk_02]; - ov17_02252C78(param0->unk_2FC, v2->unk_14[v3].rect.left + 8, v2->unk_14[v3].rect.right - 8, v2->unk_14[v3].rect.top + 8, v2->unk_14[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); + ov17_02252C78(param0->unk_2FC, v2->touchScreenRect[v3].rect.left + 8, v2->touchScreenRect[v3].rect.right - 8, v2->touchScreenRect[v3].rect.top + 8, v2->touchScreenRect[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); break; case PAD_BUTTON_A: return Unk_ov17_0225323C[v0->unk_01][v0->unk_02]; @@ -1676,7 +1675,7 @@ static int ov17_02240EA4(UnkStruct_ov17_0223F7E4 *param0, int param1) v0->unk_02 = v6->unk_02; v0->unk_01 = v6->unk_03; v3 = Unk_ov17_02253240[v0->unk_01][v0->unk_02]; - ov17_02252C78(param0->unk_2FC, v2->unk_14[v3].rect.left + 8, v2->unk_14[v3].rect.right - 8, v2->unk_14[v3].rect.top + 8, v2->unk_14[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); + ov17_02252C78(param0->unk_2FC, v2->touchScreenRect[v3].rect.left + 8, v2->touchScreenRect[v3].rect.right - 8, v2->touchScreenRect[v3].rect.top + 8, v2->touchScreenRect[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); return 0xffffffff; } @@ -1689,7 +1688,7 @@ static int ov17_02240EA4(UnkStruct_ov17_0223F7E4 *param0, int param1) case PAD_KEY_LEFT: case PAD_KEY_RIGHT: v3 = Unk_ov17_02253240[v0->unk_01][v0->unk_02]; - ov17_02252C78(param0->unk_2FC, v2->unk_14[v3].rect.left + 8, v2->unk_14[v3].rect.right - 8, v2->unk_14[v3].rect.top + 8, v2->unk_14[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); + ov17_02252C78(param0->unk_2FC, v2->touchScreenRect[v3].rect.left + 8, v2->touchScreenRect[v3].rect.right - 8, v2->touchScreenRect[v3].rect.top + 8, v2->touchScreenRect[v3].rect.bottom - 8, (192 + 80) << FX32_SHIFT); break; case PAD_BUTTON_A: return Unk_ov17_02253240[v0->unk_01][v0->unk_02]; diff --git a/src/overlay017/ov17_022413D8.c b/src/overlay017/ov17_022413D8.c index f7fd26d737..7fff1670bc 100644 --- a/src/overlay017/ov17_022413D8.c +++ b/src/overlay017/ov17_022413D8.c @@ -4,7 +4,6 @@ #include #include "struct_defs/struct_020954F0.h" -#include "struct_defs/struct_02095C48.h" #include "battle_anim/is_form_symmetrical.h" #include "overlay017/const_ov17_022536B4.h" @@ -18,10 +17,10 @@ #include "overlay017/struct_ov17_022449B8.h" #include "overlay017/struct_ov17_02246F24.h" #include "overlay017/struct_ov17_022472F8.h" -#include "overlay017/struct_ov17_022538F0.h" #include "assert.h" #include "bg_window.h" +#include "contest.h" #include "game_options.h" #include "graphics.h" #include "heap.h" @@ -45,6 +44,8 @@ #include "unk_0208C098.h" #include "unk_02094EDC.h" +#include "res/text/bank/contest_text.h" + typedef struct { UnkStruct_ov17_02246F24 *unk_00; u8 *unk_04; @@ -157,7 +158,7 @@ typedef struct { } UnkStruct_ov17_022436D0; void include_unk_ov17_02253784(); -void ov17_02242EE4(UnkStruct_ov17_02246F24 *param0, int param1); +void ov17_02242EE4(UnkStruct_ov17_02246F24 *param0, int contestantID); void ov17_02242FA4(UnkStruct_ov17_02246F24 *param0); void ov17_02242FC0(UnkStruct_ov17_02246F24 *param0); void ov17_02242FE8(UnkStruct_ov17_02246F24 *param0); @@ -312,55 +313,60 @@ static const struct { { 0x80, 0x14 }, { 0xA0, 0x14 } }; +typedef struct ActingCompetitionMessage { + u16 messageID; + u8 unk_02; + u8 useInstantText; +} ActingCompetitionMessage; -static const UnkStruct_ov17_022538F0 Unk_ov17_022538F0[] = { - { 0x0, 0x0, 0x0 }, - { 0x0, 0x5, 0x1 }, - { 0x1, 0x5, 0x1 }, - { 0x2, 0x5, 0x1 }, - { 0x3, 0x1B, 0x0 }, - { 0x4, 0x0, 0x0 }, - { 0x5, 0x6, 0x0 }, - { 0x6, 0x1C, 0x0 }, - { 0x7, 0x1C, 0x0 }, - { 0x8, 0x1C, 0x0 }, - { 0x9, 0x1C, 0x0 }, - { 0xA, 0x6, 0x0 }, - { 0xB, 0x6, 0x0 }, - { 0xC, 0x6, 0x0 }, - { 0xD, 0x6, 0x0 }, - { 0xE, 0x6, 0x0 }, - { 0xF, 0x6, 0x0 }, - { 0x10, 0x6, 0x0 }, - { 0x11, 0x6, 0x0 }, - { 0x12, 0x6, 0x0 }, - { 0x13, 0x6, 0x0 }, - { 0x14, 0x6, 0x0 }, - { 0x15, 0x6, 0x0 }, - { 0x16, 0x0, 0x0 }, - { 0x17, 0x0, 0x0 }, - { 0x18, 0x0, 0x0 }, - { 0x19, 0x5, 0x0 }, - { 0x1A, 0x0, 0x0 }, - { 0x1B, 0x0, 0x0 }, - { 0x1C, 0x0, 0x0 }, - { 0x1D, 0x0, 0x0 }, - { 0x1E, 0x2, 0x0 }, - { 0x1F, 0x2, 0x0 }, - { 0x20, 0x2, 0x0 }, - { 0x21, 0x2, 0x0 }, - { 0x22, 0x2, 0x0 }, - { 0x23, 0x0, 0x0 }, - { 0x24, 0x0, 0x0 }, - { 0x25, 0x0, 0x0 }, - { 0x26, 0x0, 0x0 }, - { 0x27, 0x0, 0x0 }, - { 0x28, 0x0, 0x0 }, - { 0x44, 0x0, 0x0 }, - { 0x45, 0x0, 0x0 }, - { 0x46, 0x0, 0x0 }, - { 0x47, 0x0, 0x0 }, - { 0x48, 0x0, 0x1 } +static const ActingCompetitionMessage sActingCompetitionMessages[ACTING_COMPETITION_MESSAGE_MAX] = { + [ACTING_COMPETITION_MESSAGE_NONE] = { 0x0, 0x0, 0x0 }, + [ACTING_COMPETITION_MESSAGE_CHOOSE_JUDGE] = { Contest_Text_ChooseJudge, 0x5, TRUE }, + [ACTING_COMPETITION_MESSAGE_WHICH_MOVE_IS_YOUR_CHOICE] = { Contest_Text_WhichMoveIsYourChoice, 0x5, TRUE }, + [ACTING_COMPETITION_MESSAGE_LAST_PERFORMANCE_CHOOSE_MOVE] = { Contest_Text_LastPerformanceChooseMove, 0x5, TRUE }, + [ACTING_COMPETITION_MESSAGE_TO_JUDGE_MON_PERFORMED_MOVE] = { Contest_Text_ToJudgeMonPerformedMove, 0x1B, FALSE }, + [ACTING_COMPETITION_MESSAGE_SOMEONE_ALREADY_PERFORMED_FOR_JUDGE] = { Contest_Text_SomeoneAlreadyPerformedForJudge, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY1] = { Contest_Text_Empty1, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_JUDGE_STRONGLY_IMPRESSED] = { Contest_Text_JudgeWasStronglyImpressed, 0x1C, FALSE }, + [ACTING_COMPETITION_MESSAGE_JUDGE_WAS_IMPRESSED] = { Contest_Text_JudgeWasImpressed, 0x1C, FALSE }, + [ACTING_COMPETITION_MESSAGE_EVERYONE_PERFORMED_FOR_SAME_JUDGE] = { Contest_Text_EveryonePerformedForSameJudge, 0x1C, FALSE }, + [ACTING_COMPETITION_MESSAGE_JUDGE_VERY_IMPRESSED] = { Contest_Text_JudgeWasVeryImpressed, 0x1C, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY2] = { Contest_Text_Empty2, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_UP] = { Contest_Text_CoolMovePerformedVoltageUp, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_UP] = { Contest_Text_BeautyMovePerformedVoltageUp, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_UP] = { Contest_Text_CuteMovePerformedVoltageUp, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_UP] = { Contest_Text_SmartMovePerformedVoltageUp, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_UP] = { Contest_Text_ToughMovePerformedVoltageUp, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY3] = { Contest_Text_Empty3, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_DOWN] = { Contest_Text_CoolMovePerformedVoltageDown, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_DOWN] = { Contest_Text_BeautyMovePerformedVoltageDown, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_DOWN] = { Contest_Text_CuteMovePerformedVoltageDown, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_DOWN] = { Contest_Text_SmartMovePerformedVoltageDown, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_DOWN] = { Contest_Text_ToughMovePerformedVoltageDown, 0x6, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY4] = { Contest_Text_Empty4, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY5] = { Contest_Text_Empty5, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_PRETTY_EXCITED] = { Contest_Text_AudienceIsGettingPrettyExcited, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_GOING_WILD] = { Contest_Text_AudienceIsGoingWild, 0x5, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY6] = { Contest_Text_Empty6, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY7] = { Contest_Text_Empty7, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY8] = { Contest_Text_Empty8, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY9] = { Contest_Text_Empty9, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_MON_DIDNT_STAND_OUT] = { Contest_Text_MonDidntStandOut, 0x2, FALSE }, + [ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_LITTLE_ATTENTION] = { Contest_Text_MonAttractedALittleAttention, 0x2, FALSE }, + [ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_DECENT_ATTENTION] = { Contest_Text_MonAttractedDecentAttention, 0x2, FALSE }, + [ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_A_LOT_OF_ATTENTION] = { Contest_Text_MonAttractedALotOfAttention, 0x2, FALSE }, + [ACTING_COMPETITION_MESSAGE_MON_COMMANDED_TOTAL_ATTENTION] = { Contest_Text_MonCommandedTotalAttention, 0x2, FALSE }, + [ACTING_COMPETITION_MESSAGE_TIME_FOR_CUTE_ACTING_COMPETITION] = { Contest_Text_TimeForCuteActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY10] = { Contest_Text_Empty10, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_TIME_FOR_SMART_ACTING_COMPETITION] = { Contest_Text_TimeForSmartActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_TIME_FOR_TOUGH_ACTING_COMPETITION] = { Contest_Text_TimeForToughActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_TIME_FOR_BEAUTY_ACTING_COMPETITION] = { Contest_Text_TimeForBeautyActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_TIME_FOR_COOL_ACTING_COMPETITION] = { Contest_Text_TimeForCoolActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_NEXT_TURN_LOWEST_SCORING_PERFORM_FIRST] = { Contest_Text_NextTurnLowestScoringPerformFirst, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_JUDGING_IS_OVER] = { Contest_Text_JudgingIsOver, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_EMPTY11] = { Contest_Text_Empty11, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_BEGIN_PRACTICE] = { Contest_Text_BeginPracticeActingCompetition, 0x0, FALSE }, + [ACTING_COMPETITION_MESSAGE_COMMUNICATING_PLEASE_STAND_BY] = { Contest_Text_CommunicatingPleaseStandBy, 0x0, TRUE } }; __attribute__((aligned(4))) static const int Unk_ov17_022536FC[] = { @@ -466,52 +472,42 @@ static void ov17_022414C0(SysTask *param0, void *param1) } } -void ov17_02241524(UnkStruct_ov17_0223F88C *param0, int param1) +void ov17_02241524(UnkStruct_ov17_0223F88C *param0, int contestantID) { - PokemonSprite_Delete(param0->unk_08[param1]); + PokemonSprite_Delete(param0->unk_08[contestantID]); - GF_ASSERT(param0->pokemonSpriteDataArray[param1].tiles != NULL); - MI_CpuClear8(param0->pokemonSpriteDataArray[param1].tiles, (32 * 10 * 10)); + GF_ASSERT(param0->pokemonSpriteDataArray[contestantID].tiles != NULL); + MI_CpuClear8(param0->pokemonSpriteDataArray[contestantID].tiles, (32 * 10 * 10)); - param0->unk_08[param1] = sub_02095484(param0->unk_04, param1, param0->unk_00->unk_00[param1], 0, ¶m0->pokemonSpriteDataArray[param1], HEAP_ID_21, (256 - 40) - 32 * param1, (104 + 8) - 32 * param1, -0x200); + param0->unk_08[contestantID] = sub_02095484(param0->unk_04, contestantID, param0->unk_00->contestMons[contestantID], 0, ¶m0->pokemonSpriteDataArray[contestantID], HEAP_ID_21, (256 - 40) - 32 * contestantID, (104 + 8) - 32 * contestantID, -0x200); - PokemonSprite_SetAttribute(param0->unk_08[param1], MON_SPRITE_HIDE, 1); - PokemonSprite_SetAttribute(param0->unk_08[param1], MON_SPRITE_HIDE_2, 1); + PokemonSprite_SetAttribute(param0->unk_08[contestantID], MON_SPRITE_HIDE, 1); + PokemonSprite_SetAttribute(param0->unk_08[contestantID], MON_SPRITE_HIDE_2, 1); - { - u32 v0, v1; + u32 species = Pokemon_GetValue(param0->unk_00->contestMons[contestantID], MON_DATA_SPECIES, NULL); + u32 form = Pokemon_GetValue(param0->unk_00->contestMons[contestantID], MON_DATA_FORM, NULL); - v0 = Pokemon_GetValue(param0->unk_00->unk_00[param1], MON_DATA_SPECIES, NULL); - v1 = Pokemon_GetValue(param0->unk_00->unk_00[param1], MON_DATA_FORM, NULL); - - if (IsFormSymmetrical(v0, v1) == 1) { - PokemonSprite_SetAttribute(param0->unk_08[param1], MON_SPRITE_FLIP_H, 1); - } + if (IsFormSymmetrical(species, form) == TRUE) { + PokemonSprite_SetAttribute(param0->unk_08[contestantID], MON_SPRITE_FLIP_H, 1); } } void ov17_022415E4(UnkStruct_ov17_0223F88C *param0) { - int v0; + for (int i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + GF_ASSERT(param0->pokemonSpriteDataArray[i].tiles == NULL); - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->pokemonSpriteDataArray[v0].tiles == NULL); + param0->pokemonSpriteDataArray[i].tiles = Heap_Alloc(HEAP_ID_21, (32 * 10 * 10)); + param0->unk_08[i] = sub_02095484(param0->unk_04, i, param0->unk_00->contestMons[i], 0, ¶m0->pokemonSpriteDataArray[i], HEAP_ID_21, (256 - 40) - 32 * i, (104 + 8) - 32 * i, -0x200); - param0->pokemonSpriteDataArray[v0].tiles = Heap_Alloc(HEAP_ID_21, (32 * 10 * 10)); - param0->unk_08[v0] = sub_02095484(param0->unk_04, v0, param0->unk_00->unk_00[v0], 0, ¶m0->pokemonSpriteDataArray[v0], HEAP_ID_21, (256 - 40) - 32 * v0, (104 + 8) - 32 * v0, -0x200); + PokemonSprite_SetAttribute(param0->unk_08[i], MON_SPRITE_HIDE, 1); + PokemonSprite_SetAttribute(param0->unk_08[i], MON_SPRITE_HIDE_2, 1); - PokemonSprite_SetAttribute(param0->unk_08[v0], MON_SPRITE_HIDE, 1); - PokemonSprite_SetAttribute(param0->unk_08[v0], MON_SPRITE_HIDE_2, 1); + u32 species = Pokemon_GetValue(param0->unk_00->contestMons[i], MON_DATA_SPECIES, NULL); + u32 form = Pokemon_GetValue(param0->unk_00->contestMons[i], MON_DATA_FORM, NULL); - { - u32 v1, v2; - - v1 = Pokemon_GetValue(param0->unk_00->unk_00[v0], MON_DATA_SPECIES, NULL); - v2 = Pokemon_GetValue(param0->unk_00->unk_00[v0], MON_DATA_FORM, NULL); - - if (IsFormSymmetrical(v1, v2) == 1) { - PokemonSprite_SetAttribute(param0->unk_08[v0], MON_SPRITE_FLIP_H, 1); - } + if (IsFormSymmetrical(species, form) == TRUE) { + PokemonSprite_SetAttribute(param0->unk_08[i], MON_SPRITE_FLIP_H, 1); } } @@ -526,12 +522,10 @@ void ov17_022415E4(UnkStruct_ov17_0223F88C *param0) void ov17_022416E4(UnkStruct_ov17_0223F88C *param0) { - int v0; - - for (v0 = 0; v0 < 4; v0++) { - PokemonSprite_Delete(param0->unk_08[v0]); - Heap_Free(param0->pokemonSpriteDataArray[v0].tiles); - param0->pokemonSpriteDataArray[v0].tiles = NULL; + for (int contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + PokemonSprite_Delete(param0->unk_08[contestantID]); + Heap_Free(param0->pokemonSpriteDataArray[contestantID].tiles); + param0->pokemonSpriteDataArray[contestantID].tiles = NULL; } Heap_Free(param0->pokemonSpriteData.tiles); @@ -637,7 +631,7 @@ static void ov17_02241908(SpriteManager *param0) SpriteManager_UnloadAnimObjById(param0, 33004); } -void ov17_02241928(UnkStruct_ov17_0223F88C *param0, UnkStruct_02095C48 *param1, NARC *param2) +void ov17_02241928(UnkStruct_ov17_0223F88C *param0, Contest *param1, NARC *param2) { int v0; @@ -1360,120 +1354,120 @@ static void ov17_0224290C(UnkStruct_ov17_02246F24 *param0, int param1, const Unk case 0: break; case 1: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param0->unk_304.unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param0->unk_304.contestantID])); break; case 2: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 3: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); break; case 4: - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->unk_02); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->moveID); break; case 5: StringTemplate_SetNumber(param0->unk_0C.unk_48, 0, param2->unk_04, 1, 0, 1); break; case 6: - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); break; case 7: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); break; case 8: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->unk_02); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->moveID); break; case 9: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); StringTemplate_SetNumber(param0->unk_0C.unk_48, 1, param2->unk_04, 1, 0, 1); break; case 10: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 1, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 1, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); break; case 11: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 12: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->unk_02); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->moveID); break; case 13: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); StringTemplate_SetNumber(param0->unk_0C.unk_48, 1, param2->unk_04, 1, 0, 1); break; case 14: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 15: - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->unk_02); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->moveID); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 16: - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->unk_02); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->moveID); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); break; case 17: - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->unk_02); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->moveID); StringTemplate_SetNumber(param0->unk_0C.unk_48, 1, param2->unk_04, 1, 0, 1); break; case 18: - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->unk_02); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 0, param2->moveID); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 19: StringTemplate_SetNumber(param0->unk_0C.unk_48, 0, param2->unk_04, 1, 0, 1); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 20: StringTemplate_SetNumber(param0->unk_0C.unk_48, 0, param2->unk_04, 1, 0, 1); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); break; case 21: StringTemplate_SetNumber(param0->unk_0C.unk_48, 0, param2->unk_04, 1, 0, 1); - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->unk_02); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->moveID); break; case 22: StringTemplate_SetNumber(param0->unk_0C.unk_48, 0, param2->unk_04, 1, 0, 1); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 23: - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); break; case 24: - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_01])); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_01])); break; case 25: - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->unk_02); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 1, param2->moveID); break; case 26: - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); StringTemplate_SetNumber(param0->unk_0C.unk_48, 1, param2->unk_04, 1, 0, 1); break; case 27: - StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 1, param0->unk_0C.unk_00->unk_C0[param2->unk_05].unk_00); - StringTemplate_SetMoveName(param0->unk_0C.unk_48, 2, param2->unk_02); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 0, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->unk_00])); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 1, param0->unk_0C.unk_00->unk_C0[param2->judgeID].judgeNameMessageID); + StringTemplate_SetMoveName(param0->unk_0C.unk_48, 2, param2->moveID); break; case 28: { const UnkStruct_ov17_0224290C *v0 = param3; int v1; - StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[v0->unk_00].unk_00); + StringTemplate_SetContestJudgeName(param0->unk_0C.unk_48, 0, param0->unk_0C.unk_00->unk_C0[v0->unk_00].judgeNameMessageID); for (v1 = 0; v1 < 4; v1++) { if (v0->unk_01[v1] == 4) { break; } - StringTemplate_SetNickname(param0->unk_0C.unk_48, 1 + v1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[v0->unk_01[v1]])); + StringTemplate_SetNickname(param0->unk_0C.unk_48, 1 + v1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[v0->unk_01[v1]])); } } break; default: @@ -1488,30 +1482,30 @@ void ov17_02242DA8(UnkStruct_ov17_02246F24 *param0) Window_CopyToVRAM(¶m0->unk_0C.unk_28[0]); } -static void ov17_02242DC0(UnkStruct_ov17_02246F24 *param0, MessageLoader *param1, u32 param2, int param3, const UnkStruct_ov17_022449B8 *param4, const void *param5, int param6) +static void ov17_02242DC0(UnkStruct_ov17_02246F24 *param0, MessageLoader *messageLoader, u32 messageID, int param3, const UnkStruct_ov17_022449B8 *param4, const void *param5, BOOL useInstantText) { String *v0; - u32 v1; + u32 textDelay; - if (param6 == 1) { - v1 = TEXT_SPEED_INSTANT; + if (useInstantText == TRUE) { + textDelay = TEXT_SPEED_INSTANT; } else { if (param0->unk_00->isLinkContest == FALSE) { - v1 = Options_TextFrameDelay(param0->unk_00->options); + textDelay = Options_TextFrameDelay(param0->unk_00->options); } else { - v1 = TEXT_SPEED_FAST; + textDelay = TEXT_SPEED_FAST; } } - v0 = MessageLoader_GetNewString(param1, param2); + v0 = MessageLoader_GetNewString(messageLoader, messageID); ov17_0224290C(param0, param3, param4, param5); StringTemplate_Format(param0->unk_0C.unk_48, param0->unk_0C.unk_4C, v0); Window_FillTilemap(¶m0->unk_0C.unk_28[0], 0xff); - param0->unk_0C.unk_210 = Text_AddPrinterWithParams(¶m0->unk_0C.unk_28[0], FONT_MESSAGE, param0->unk_0C.unk_4C, 0, 0, v1, NULL); + param0->unk_0C.unk_210 = Text_AddPrinterWithParams(¶m0->unk_0C.unk_28[0], FONT_MESSAGE, param0->unk_0C.unk_4C, 0, 0, textDelay, NULL); - if (v1 == 0) { + if (textDelay == TEXT_SPEED_INSTANT) { param0->unk_0C.unk_210 = 0xff; Window_CopyToVRAM(¶m0->unk_0C.unk_28[0]); } @@ -1523,25 +1517,23 @@ static void ov17_02242DC0(UnkStruct_ov17_02246F24 *param0, MessageLoader *param1 String_Free(v0); } -void ov17_02242E5C(UnkStruct_ov17_02246F24 *param0, u32 param1, const UnkStruct_ov17_022449B8 *param2, const void *param3) +void ov17_02242E5C(UnkStruct_ov17_02246F24 *param0, enum ActingCompetitionMessagesID actingMessagesID, const UnkStruct_ov17_022449B8 *param2, const void *param3) { - u32 v0, v1, v2; + GF_ASSERT(actingMessagesID < NELEMS(sActingCompetitionMessages)); - GF_ASSERT(param1 < NELEMS(Unk_ov17_022538F0)); + u32 messageID = sActingCompetitionMessages[actingMessagesID].messageID; + u32 v1 = sActingCompetitionMessages[actingMessagesID].unk_02; + u32 useInstantText = sActingCompetitionMessages[actingMessagesID].useInstantText; - v0 = Unk_ov17_022538F0[param1].unk_00; - v1 = Unk_ov17_022538F0[param1].unk_02; - v2 = Unk_ov17_022538F0[param1].unk_03; - - ov17_02242DC0(param0, param0->unk_0C.unk_38, v0, v1, param2, param3, v2); + ov17_02242DC0(param0, param0->unk_0C.contestTextMessageLoader, messageID, v1, param2, param3, useInstantText); } -void ov17_02242E9C(UnkStruct_ov17_02246F24 *param0, int param1, int param2, const UnkStruct_ov17_022449B8 *param3, const void *param4) +void ov17_02242E9C(UnkStruct_ov17_02246F24 *param0, int contestMoveEffect, int param2, const UnkStruct_ov17_022449B8 *param3, const void *param4) { - u32 v0, v1; + u32 messageID, v1; - sub_02095790(param1, param2, &v0, &v1); - ov17_02242DC0(param0, param0->unk_0C.unk_44, v0, v1, param3, param4, 0); + sub_02095790(contestMoveEffect, param2, &messageID, &v1); + ov17_02242DC0(param0, param0->unk_0C.contestActingCompetitionMessages, messageID, v1, param3, param4, FALSE); } int ov17_02242ECC(UnkStruct_ov17_02246F24 *param0) @@ -1553,25 +1545,24 @@ int ov17_02242ECC(UnkStruct_ov17_02246F24 *param0) return Text_IsPrinterActive(param0->unk_0C.unk_210); } -void ov17_02242EE4(UnkStruct_ov17_02246F24 *param0, int param1) +void ov17_02242EE4(UnkStruct_ov17_02246F24 *param0, int contestantID) { - String *v0; - TextColor v1; + TextColor color; - v0 = String_Init(12, HEAP_ID_21); + String *monName = String_Init(12, HEAP_ID_21); - Pokemon_GetValue(param0->unk_0C.unk_00->unk_00[param1], MON_DATA_NICKNAME_STRING, v0); + Pokemon_GetValue(param0->unk_0C.unk_00->contestMons[contestantID], MON_DATA_NICKNAME_STRING, monName); - if (param1 == param0->unk_00->unk_00.unk_113) { - v1 = TEXT_COLOR(1, 2, 0); + if (contestantID == param0->unk_00->unk_00.playerContestantID) { + color = TEXT_COLOR(1, 2, 0); } else { - v1 = TEXT_COLOR(5, 6, 0); + color = TEXT_COLOR(5, 6, 0); } - ov17_0223F1E8(HEAP_ID_21, param0->unk_0C.unk_24, param0->unk_0C.unk_1C, param0->unk_0C.unk_54, ¶m0->unk_0C.unk_1C8[param1], v0, FONT_SYSTEM, v1, 0, 33005, 0, 0, 0, 0, 15); - ov17_0223F1E8(HEAP_ID_21, param0->unk_0C.unk_24, param0->unk_0C.unk_1C, param0->unk_0C.unk_54, ¶m0->unk_0C.unk_180[param1], param0->unk_00->unk_00.unk_D8[param1], FONT_SYSTEM, v1, 0, 33005, 0, 0, 0, 0, 15); + ov17_0223F1E8(HEAP_ID_21, param0->unk_0C.unk_24, param0->unk_0C.unk_1C, param0->unk_0C.unk_54, ¶m0->unk_0C.unk_1C8[contestantID], monName, FONT_SYSTEM, color, 0, 33005, 0, 0, 0, 0, 15); + ov17_0223F1E8(HEAP_ID_21, param0->unk_0C.unk_24, param0->unk_0C.unk_1C, param0->unk_0C.unk_54, ¶m0->unk_0C.unk_180[contestantID], param0->unk_00->unk_00.trainerNames[contestantID], FONT_SYSTEM, color, 0, 33005, 0, 0, 0, 0, 15); - String_Free(v0); + String_Free(monName); } void ov17_02242FA4(UnkStruct_ov17_02246F24 *param0) @@ -1643,34 +1634,34 @@ void ov17_022430F8(UnkStruct_ov17_0223F88C *param0) } } -void ov17_02243120(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_022449B8 *param1, int param2) +void ov17_02243120(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_022449B8 *param1, int contestantID) { MI_CpuClear8(param1, sizeof(UnkStruct_ov17_022449B8)); - param1->unk_00 = param2; - param1->unk_02 = param0->unk_220.unk_06[param2]; - param1->unk_05 = param0->unk_220.unk_0E[param2]; + param1->unk_00 = contestantID; + param1->moveID = param0->unk_220.moveIDs[contestantID]; + param1->judgeID = param0->unk_220.unk_0E[contestantID]; } u32 ov17_0224314C(int param0, int param1, UnkStruct_ov17_022449B8 *param2) { - int v0; + int actingMessagesID; param2->unk_00 = param0; if (param1 <= 0) { - v0 = 31; + actingMessagesID = ACTING_COMPETITION_MESSAGE_MON_DIDNT_STAND_OUT; } else if (param1 <= 20) { - v0 = 32; + actingMessagesID = ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_LITTLE_ATTENTION; } else if (param1 <= 50) { - v0 = 33; + actingMessagesID = ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_DECENT_ATTENTION; } else if (param1 <= 90) { - v0 = 34; + actingMessagesID = ACTING_COMPETITION_MESSAGE_MON_ATTRACTED_A_LOT_OF_ATTENTION; } else { - v0 = 35; + actingMessagesID = ACTING_COMPETITION_MESSAGE_MON_COMMANDED_TOTAL_ATTENTION; } - return v0; + return actingMessagesID; } int ov17_02243174(int param0) @@ -2052,101 +2043,101 @@ static void ov17_02243750(SysTask *param0, void *param1) } } -u32 ov17_02243944(int param0) +u32 Contest_GetActingCompetitionMessageIntroAnnouncement(enum PokemonContestType contestType) { - const u16 v0[] = { - 41, - 40, - 36, - 38, - 39, + const u16 ActingMessagesTimeForContestType[CONTEST_TYPE_MAX] = { + ACTING_COMPETITION_MESSAGE_TIME_FOR_COOL_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_BEAUTY_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_CUTE_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_SMART_ACTING_COMPETITION, + ACTING_COMPETITION_MESSAGE_TIME_FOR_TOUGH_ACTING_COMPETITION, }; - return v0[param0]; + return ActingMessagesTimeForContestType[contestType]; } -u32 ov17_02243970(int param0) +u32 Contest_GetActingCompetitionMessageGoodMoveType(enum PokemonContestType contestType) { - const u16 v0[] = { - 12, - 13, - 14, - 15, - 16, + const u16 ActingMessagesMoveTypeVoltageUp[CONTEST_TYPE_MAX] = { + ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_UP, + ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_UP, }; - return v0[param0]; + return ActingMessagesMoveTypeVoltageUp[contestType]; } -u32 ov17_0224399C(int param0) +u32 Contest_GetActingCompetitionMessageBadMoveType(enum PokemonContestType contestType) { - const u16 v0[] = { - 18, - 19, - 20, - 21, - 22, + const u16 ActingMessagesMoveTypeVoltageDown[CONTEST_TYPE_MAX] = { + ACTING_COMPETITION_MESSAGE_COOL_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_BEAUTY_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_CUTE_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_SMART_MOVE_VOLTAGE_DOWN, + ACTING_COMPETITION_MESSAGE_TOUGH_MOVE_VOLTAGE_DOWN, }; - return v0[param0]; + return ActingMessagesMoveTypeVoltageDown[contestType]; } -void ov17_022439C8(UnkStruct_02095C48 *param0, int param1, int param2, UnkStruct_ov17_022439C8 *param3) +void ov17_022439C8(Contest *param0, int contestantID, enum Move moveID, UnkStruct_ov17_022439C8 *param3) { MI_CpuClear8(param3, sizeof(UnkStruct_ov17_022439C8)); - param3->unk_04 = param2; + param3->actingAnimationMoveID = moveID; - switch (param2) { - case 76: - case 13: - case 130: - case 143: - param3->unk_06 = 1; + switch (moveID) { + case MOVE_SOLAR_BEAM: + case MOVE_RAZOR_WIND: + case MOVE_SKULL_BASH: + case MOVE_SKY_ATTACK: + param3->unk_06 = TRUE; break; - case 216: - param3->unk_08 = 255; + case MOVE_RETURN: + param3->friendship = 255; break; - case 218: - param3->unk_08 = 0; + case MOVE_FRUSTRATION: + param3->friendship = 0; break; - case 174: { - int v0, v1; + case MOVE_CURSE: { + int type1, type2; - v0 = Pokemon_GetValue(param0->unk_00.unk_00[param1], MON_DATA_TYPE_1, NULL); - v1 = Pokemon_GetValue(param0->unk_00.unk_00[param1], MON_DATA_TYPE_2, NULL); + type1 = Pokemon_GetValue(param0->unk_00.contestMons[contestantID], MON_DATA_TYPE_1, NULL); + type2 = Pokemon_GetValue(param0->unk_00.contestMons[contestantID], MON_DATA_TYPE_2, NULL); - if ((v0 == TYPE_GHOST) || (v1 == TYPE_GHOST)) { + if (type1 == TYPE_GHOST || type2 == TYPE_GHOST) { param3->unk_07 = 1; } else { param3->unk_07 = 0; } } break; - case 119: - param3->unk_04 = 1; + case MOVE_MIRROR_MOVE: + param3->actingAnimationMoveID = MOVE_POUND; break; - case 267: - param3->unk_04 = 161; + case MOVE_NATURE_POWER: + param3->actingAnimationMoveID = MOVE_TRI_ATTACK; break; - case 280: + case MOVE_BRICK_BREAK: param3->unk_07 = 1; break; - case 467: - param3->unk_06 = 1; + case MOVE_SHADOW_FORCE: + param3->unk_06 = TRUE; param3->unk_00 = (0x40 | 0x80 | 0x40000 | 0x20000000); break; } } -int ov17_02243A98(UnkStruct_ov17_022472F8 *param0, int param1, int param2) +BOOL ov17_02243A98(UnkStruct_ov17_022472F8 *param0, int contestantID, int moveID) { - if (param2 == 0) { - return 0; + if (moveID == MOVE_NONE) { + return FALSE; } - if ((param2 == param0->unk_26[param1]) && (param0->unk_30.unk_A0[param1].unk_00_0 != param2)) { - return 0; + if ((moveID == param0->unk_26[contestantID]) && (param0->unk_30.unk_A0[contestantID].moveID != moveID)) { + return FALSE; } - return 1; + return TRUE; } diff --git a/src/overlay017/ov17_02243AC4.c b/src/overlay017/ov17_02243AC4.c index 0129ce835f..08682d928a 100644 --- a/src/overlay017/ov17_02243AC4.c +++ b/src/overlay017/ov17_02243AC4.c @@ -3,11 +3,13 @@ #include #include +#include "generated/pokemon_contest_types.h" + #include "overlay017/struct_ov17_022472F8.h" #include "move_table.h" -__attribute__((aligned(4))) static const s8 Unk_ov17_022539C8[][5] = { +__attribute__((aligned(4))) static const s8 Unk_ov17_022539C8[CONTEST_TYPE_MAX][CONTEST_TYPE_MAX] = { { 0xA, 0x0, 0xFFFFFFFFFFFFFFF6, 0xFFFFFFFFFFFFFFF6, 0x0 }, { 0x0, 0xA, 0x0, 0xFFFFFFFFFFFFFFF6, 0xFFFFFFFFFFFFFFF6 }, { 0xFFFFFFFFFFFFFFF6, 0x0, 0xA, 0x0, 0xFFFFFFFFFFFFFFF6 }, @@ -41,13 +43,13 @@ int ov17_02243AE4(int param0) return v0[param0]; } -int ov17_02243AF0(int param0, int param1, int param2, int param3) +int ov17_02243AF0(int contestType, int moveID, int unused1, int unused2) { - int v0; + int moveContestType; int v1; - v0 = MoveTable_LoadParam(param1, MOVEATTRIBUTE_CONTEST_TYPE); - v1 = Unk_ov17_022539C8[param0][v0]; + moveContestType = MoveTable_LoadParam(moveID, MOVEATTRIBUTE_CONTEST_TYPE); + v1 = Unk_ov17_022539C8[contestType][moveContestType]; return v1; } diff --git a/src/overlay017/ov17_02243C28.c b/src/overlay017/ov17_02243C28.c index 50ed271c28..4f2a82e35c 100644 --- a/src/overlay017/ov17_02243C28.c +++ b/src/overlay017/ov17_02243C28.c @@ -59,7 +59,7 @@ static void ov17_022443F8(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_022444BC(SysTask *param0, void *param1); static int ov17_02244958(UnkStruct_ov17_0224F30C *param0, void *param1, int param2, void *param3); static void ov17_02244970(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, void *param3); -static void ov17_02244BB0(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, UnkStruct_ov17_0224F3D8 *param3, int param4); +static void ov17_02244BB0(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, UnkStruct_ov17_0224F3D8 *param3, int contestantID); static void ov17_022449B8(SysTask *param0, void *param1); static int ov17_02244BD4(UnkStruct_ov17_0224F30C *param0, void *param1, int param2, void *param3); static void ov17_02244BEC(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, void *param3); @@ -132,9 +132,9 @@ void ov17_02243C28(UnkStruct_ov17_02246F24 *param0) v0.unk_00 = Unk_ov17_022539E4; v0.unk_04 = NELEMS(Unk_ov17_022539E4); - v0.unk_06 = param0->unk_00->unk_00.unk_113; + v0.playerContestantID = param0->unk_00->unk_00.playerContestantID; v0.unk_08 = param0->unk_00->unk_00.unk_10C; - v0.unk_07 = param0->unk_00->isLinkContest; + v0.isLinkContest = param0->unk_00->isLinkContest; ov17_0224F18C(¶m0->unk_BF8, &v0); } @@ -171,7 +171,7 @@ static void ov17_02243CB0(UnkStruct_ov17_0224F30C *param0, void *param1, const U v0->unk_1614 = 1; - if (sub_02094EDC(v0->unk_00) == 0) { + if (sub_02094EDC(v0->unk_00) == FALSE) { ov17_0224F26C(&v0->unk_BF8, param2, NULL, 0); } } @@ -241,7 +241,7 @@ static void ov17_02243DCC(UnkStruct_ov17_0224F30C *param0, void *param1, const U v2->unk_00 = v0; v2->unk_04 = *param2; - v2->unk_18 = v1->unk_C6.unk_0C; + v2->actingMessagesID = v1->unk_C6.actingMessagesID; v2->unk_12 = v1->unk_C6.unk_00; SysTask_Start(ov17_02243E2C, v2, 30000); @@ -253,15 +253,15 @@ static void ov17_02243E2C(SysTask *param0, void *param1) switch (v0->unk_0C) { case 0: - if (v0->unk_18 != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_18, &v0->unk_12, NULL); + if (v0->actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->actingMessagesID, &v0->unk_12, NULL); } Sound_PlayEffect(SEQ_SE_DP_CON_032); v0->unk_0C++; break; case 1: - if ((v0->unk_18 == 0) || (ov17_02242ECC(v0->unk_00) == 0)) { + if (v0->actingMessagesID == ACTING_COMPETITION_MESSAGE_NONE || (ov17_02242ECC(v0->unk_00) == 0)) { v0->unk_0C++; } break; @@ -307,7 +307,7 @@ static void ov17_02243F10(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_15 = v2->unk_00; + v1->contestantID = v2->contestantID; ov17_022426E8(v0, 0, &v1->unk_16); SysTask_Start(ov17_02243F68, v1, 30000); @@ -317,8 +317,8 @@ static void ov17_02243F10(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02243F68(SysTask *param0, void *param1) { UnkStruct_ov17_02243F10 *v0 = param1; - int v1 = v0->unk_15; - int v2 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v1], 0); + int contestantID = v0->contestantID; + int v2 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[contestantID], 0); switch (v0->unk_14) { case 0: @@ -332,8 +332,8 @@ static void ov17_02243F68(SysTask *param0, void *param1) case 1: { int v3, v4; - v3 = v0->unk_15; - v4 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v3], 0); + v3 = v0->contestantID; + v4 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v3], 0); PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v3], MON_SPRITE_HIDE_2, 0); PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v3], MON_SPRITE_HIDE, 0); @@ -347,7 +347,7 @@ static void ov17_02243F68(SysTask *param0, void *param1) break; case 2: - if (v0->unk_15 == v0->unk_00->unk_00->unk_00.unk_113) { + if (v0->contestantID == v0->unk_00->unk_00->unk_00.playerContestantID) { Sound_PlayEffect(SEQ_SE_DP_CON_031); } @@ -363,8 +363,8 @@ static void ov17_02243F68(SysTask *param0, void *param1) v0->unk_14++; } - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_15], MON_SPRITE_X_CENTER, v0->unk_0C >> 8); - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_15], MON_SPRITE_Y_CENTER, (v0->unk_10 >> 8) + v2); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_X_CENTER, v0->unk_0C >> 8); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_Y_CENTER, (v0->unk_10 >> 8) + v2); break; default: if (v0->unk_16 == 1) { @@ -389,7 +389,7 @@ static void ov17_022440E0(UnkStruct_ov17_0224F30C *param0, void *param1, const U UnkStruct_ov17_02246F24 *v0 = param1; UnkStruct_ov17_02243F10 *v1; UnkStruct_ov17_02246F24_sub1 *v2; - int v3, v4; + int v3; v2 = param3; v1 = Heap_Alloc(HEAP_ID_21, sizeof(UnkStruct_ov17_02243F10)); @@ -398,10 +398,10 @@ static void ov17_022440E0(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_15 = v2->unk_00; + v1->contestantID = v2->contestantID; - v4 = v1->unk_15; - v3 = Pokemon_SpriteYOffset(v0->unk_0C.unk_00->unk_00[v4], 0); + int contestantID = v1->contestantID; + v3 = Pokemon_SpriteYOffset(v0->unk_0C.unk_00->contestMons[contestantID], 0); v1->unk_0C = (256 - 40) << 8; v1->unk_10 = (104 + 8) << 8; @@ -412,8 +412,8 @@ static void ov17_022440E0(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_0224413C(SysTask *param0, void *param1) { UnkStruct_ov17_02243F10 *v0 = param1; - int v1 = v0->unk_15; - int v2 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v1], 0); + int contestantID = v0->contestantID; + int v2 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[contestantID], 0); switch (v0->unk_14) { case 0: @@ -421,18 +421,18 @@ static void ov17_0224413C(SysTask *param0, void *param1) v0->unk_10 += (((((104 + 8) + 60) - (104 + 8)) << 8) / 7); if (((v0->unk_0C >> 8) >= ((256 - 40) + 40)) || ((v0->unk_10 >> 8) >= ((104 + 8) + 60))) { - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v1], MON_SPRITE_HIDE_2, 1); - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v1], MON_SPRITE_HIDE, 1); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[contestantID], MON_SPRITE_HIDE_2, 1); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[contestantID], MON_SPRITE_HIDE, 1); v0->unk_14++; } - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_15], MON_SPRITE_X_CENTER, v0->unk_0C >> 8); - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_15], MON_SPRITE_Y_CENTER, (v0->unk_10 >> 8) + v2); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_X_CENTER, v0->unk_0C >> 8); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_Y_CENTER, (v0->unk_10 >> 8) + v2); break; case 1: - if (v0->unk_00->unk_1616[v0->unk_15] == 1) { - ov17_02241524(&v0->unk_00->unk_0C, v0->unk_15); - v0->unk_00->unk_1616[v0->unk_15] = 0; + if (v0->unk_00->unk_1616[v0->contestantID] == 1) { + ov17_02241524(&v0->unk_00->unk_0C, v0->contestantID); + v0->unk_00->unk_1616[v0->contestantID] = 0; } v0->unk_14++; @@ -463,9 +463,9 @@ static void ov17_02244240(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_02; - v1->unk_1A = v2->unk_C6.unk_0C; + v1->actingMessagesID = v2->unk_C6.actingMessagesID; v1->unk_14 = v2->unk_C6.unk_00; v1->unk_10 = v2->unk_03; @@ -481,7 +481,7 @@ static void ov17_022442AC(SysTask *param0, void *param1) case 0: { int v2; - v2 = ov17_02243174(v0->unk_00->unk_220.unk_12[v0->unk_0D]); + v2 = ov17_02243174(v0->unk_00->unk_220.unk_12[v0->contestantID]); if (v2 > 0) { ov17_022431A0(v0->unk_00, 0, 0, v2, 0, &v0->unk_12); @@ -501,8 +501,8 @@ static void ov17_022442AC(SysTask *param0, void *param1) v0->unk_0C++; break; case 3: - if (v0->unk_1A != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_1A, &v0->unk_14, NULL); + if (v0->actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->actingMessagesID, &v0->unk_14, NULL); v0->unk_0C++; } else { v0->unk_0C = 5; @@ -561,11 +561,11 @@ static void ov17_022443F8(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; - v1->unk_0E = v2->unk_10.unk_00[v2->unk_00].unk_00; - v1->unk_F8 = v2->unk_C6.unk_0C; + v1->contestantID = v2->contestantID; + v1->moveID = v2->unk_10.unk_00[v2->contestantID].moveID; + v1->actingMessagesID = v2->unk_C6.actingMessagesID; v1->unk_F2 = v2->unk_C6.unk_00; - v1->unk_100 = v2->unk_C6.unk_0D; + v1->actingMessagesID2 = v2->unk_C6.actingMessagesID2; v1->unk_FA = v2->unk_C6.unk_06; v1->unk_14 = *v2; @@ -576,71 +576,69 @@ static void ov17_022444BC(SysTask *param0, void *param1) { UnkStruct_ov17_022443F8 *v0 = param1; int v1; - UnkStruct_ov17_022444BC *v2 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v2 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; - switch (v0->unk_0C) { + switch (v0->state) { case 0: - if (v0->unk_F8 != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_F8, &v0->unk_F2, NULL); - v0->unk_0C++; + if (v0->actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->actingMessagesID, &v0->unk_F2, NULL); + v0->state++; } else { - v0->unk_0C = 2; + v0->state = 2; } break; case 1: if (ov17_02242ECC(v0->unk_00) == 0) { - v0->unk_0C++; + v0->state++; } break; case 2: - v0->unk_0C++; + v0->state++; break; case 3: if (v2->unk_12 != 0) { ov17_02242E9C(v0->unk_00, v2->unk_12, v2->unk_13, &v2->unk_0C, NULL); - v0->unk_0C++; + v0->state++; } else { - v0->unk_0C = 5; + v0->state = 5; } break; case 4: if (ov17_02242ECC(v0->unk_00) == 0) { - v0->unk_0C++; + v0->state++; } break; case 5: - v0->unk_0C++; + v0->state++; break; case 6: - if (v0->unk_100 != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_100, &v0->unk_F2, NULL); - v0->unk_0C++; + if (v0->actingMessagesID2 != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->actingMessagesID2, &v0->unk_F2, NULL); + v0->state++; } else { - v0->unk_0C = 8; + v0->state = 8; } break; case 7: if (ov17_02242ECC(v0->unk_00) == 0) { - v0->unk_0C++; + v0->state++; } break; case 8: - v0->unk_0C++; + v0->state++; break; case 9: - ov17_022439C8(v0->unk_00->unk_00, v0->unk_0D, v0->unk_0E, &v0->unk_104); - v0->unk_0C++; + ov17_022439C8(v0->unk_00->unk_00, v0->contestantID, v0->moveID, &v0->unk_104); + v0->state++; case 10: { MoveAnimation v3; BattleAnimBattlerContext battlerContext; int v5; - int v6, v7, v8, v9; + int isShiny, monForm; int v10, v11, v12, v13; - u32 v14, v15; - int v16; - - v16 = v0->unk_0D + 1; + u32 personality, v15; + int v16 = v0->contestantID + 1; if (v16 >= 4) { v16 = 0; } @@ -648,48 +646,48 @@ static void ov17_022444BC(SysTask *param0, void *param1) MI_CpuClear8(&v3, sizeof(MoveAnimation)); MI_CpuClear8(&battlerContext, sizeof(BattleAnimBattlerContext)); - v6 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], MON_DATA_SPECIES, NULL); - v7 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], MON_DATA_GENDER, NULL); - v8 = Pokemon_IsShiny(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D]); - v9 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], MON_DATA_FORM, NULL); - v14 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], MON_DATA_PERSONALITY, NULL); + int species = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_SPECIES, NULL); + int gender = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_GENDER, NULL); + isShiny = Pokemon_IsShiny(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID]); + monForm = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_FORM, NULL); + personality = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_PERSONALITY, NULL); - v10 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v16], MON_DATA_SPECIES, NULL); - v11 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v16], MON_DATA_GENDER, NULL); - v12 = Pokemon_IsShiny(v0->unk_00->unk_0C.unk_00->unk_00[v16]); - v13 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v16], MON_DATA_FORM, NULL); - v15 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v16], MON_DATA_PERSONALITY, NULL); + v10 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v16], MON_DATA_SPECIES, NULL); + v11 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v16], MON_DATA_GENDER, NULL); + v12 = Pokemon_IsShiny(v0->unk_00->unk_0C.unk_00->contestMons[v16]); + v13 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v16], MON_DATA_FORM, NULL); + v15 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v16], MON_DATA_PERSONALITY, NULL); v3.command = 0; v3.unk_01 = 0; - v3.move = v0->unk_104.unk_04; + v3.move = v0->unk_104.actingAnimationMoveID; v3.damage = 1; v3.power = 10; v3.effectChance = v0->unk_104.unk_07; - v3.friendship = v0->unk_104.unk_08; + v3.friendship = v0->unk_104.friendship; v3.fieldConditions = 0; v3.attacker = 0; v3.defender = 1; v3.terrain = 9; for (v5 = 0; v5 < 4; v5++) { - v3.species[v5] = v6; + v3.species[v5] = species; } v3.species[1] = v10; battlerContext.bgConfig = v0->unk_00->unk_0C.unk_24; battlerContext.paletteData = v0->unk_00->unk_0C.unk_50; - battlerContext.pokemonSpriteData[0] = &v0->unk_00->unk_0C.pokemonSpriteDataArray[v0->unk_0D]; + battlerContext.pokemonSpriteData[0] = &v0->unk_00->unk_0C.pokemonSpriteDataArray[v0->contestantID]; battlerContext.pokemonSpriteData[1] = &v0->unk_00->unk_0C.pokemonSpriteData; for (v5 = 0; v5 < 4; v5++) { battlerContext.battlerTypes[v5] = 0xff; - battlerContext.battlerSpecies[v5] = v6; - battlerContext.battlerGenders[v5] = v7; - battlerContext.battlerShinyFlags[v5] = v8; - battlerContext.battlerForms[v5] = v9; - battlerContext.battlerPersonalities[v5] = v14; + battlerContext.battlerSpecies[v5] = species; + battlerContext.battlerGenders[v5] = gender; + battlerContext.battlerShinyFlags[v5] = isShiny; + battlerContext.battlerForms[v5] = monForm; + battlerContext.battlerPersonalities[v5] = personality; battlerContext.battlerMoveEffects[v5] = 0; } @@ -701,9 +699,9 @@ static void ov17_022444BC(SysTask *param0, void *param1) battlerContext.battlerShinyFlags[1] = v12; battlerContext.battlerForms[1] = v13; battlerContext.battlerPersonalities[1] = v15; - battlerContext.pokemonSprites[0] = v0->unk_00->unk_0C.unk_08[v0->unk_0D]; + battlerContext.pokemonSprites[0] = v0->unk_00->unk_0C.unk_08[v0->contestantID]; - v1 = (v0->unk_0D == 0) ? 1 : 0; + v1 = (v0->contestantID == 0) ? 1 : 0; battlerContext.pokemonSprites[1] = v0->unk_00->unk_0C.unk_08[v1]; battlerContext.battleType = 0; @@ -715,30 +713,28 @@ static void ov17_022444BC(SysTask *param0, void *param1) battlerContext.battleBgRef.paletteDestStart = 0; battlerContext.battleBgRef.paletteSrcSize = 3; battlerContext.spriteSystem = v0->unk_00->unk_0C.unk_18; - battlerContext.chatotCry = v0->unk_00->unk_00->unk_14C[v0->unk_0D]; + battlerContext.chatotCry = v0->unk_00->unk_00->chatotCry[v0->contestantID]; - BattleAnimSystem_StartMove(v0->unk_00->unk_0C.unk_20, &v3, v0->unk_104.unk_04, &battlerContext); + BattleAnimSystem_StartMove(v0->unk_00->unk_0C.unk_20, &v3, v0->unk_104.actingAnimationMoveID, &battlerContext); } { - int v17; - - v17 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], 0); + int v17 = Pokemon_SpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], 0); if (v0->unk_104.unk_00 != ((0x40 ^ 0xffffffff) & (0x80 ^ 0xffffffff) & (0x40000 ^ 0xffffffff) & (0x20000000 ^ 0xffffffff))) { - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_0D], MON_SPRITE_HIDE, 0); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_HIDE, 0); } - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_0D], MON_SPRITE_HIDE_2, 0); - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_0D], MON_SPRITE_X_CENTER, 256 - 40); - PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->unk_0D], MON_SPRITE_Y_CENTER, (104 + 8) + v17); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_HIDE_2, 0); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_X_CENTER, 256 - 40); + PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v0->contestantID], MON_SPRITE_Y_CENTER, (104 + 8) + v17); PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v1], MON_SPRITE_HIDE_2, 1); PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v1], MON_SPRITE_X_CENTER, 80); PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_08[v1], MON_SPRITE_Y_CENTER, 50 - 8); } - v0->unk_0C++; + v0->state++; break; case 11: BattleAnimSystem_ExecuteScript(v0->unk_00->unk_0C.unk_20); @@ -754,29 +750,29 @@ static void ov17_022444BC(SysTask *param0, void *param1) v0->unk_104.unk_00 = ((0x40 ^ 0xffffffff) & (0x80 ^ 0xffffffff) & (0x40000 ^ 0xffffffff) & (0x20000000 ^ 0xffffffff)); } - v0->unk_0C = 10; + v0->state = 10; } else { - v0->unk_0C++; + v0->state++; } } break; case 12: - switch (v0->unk_104.unk_04) { - case 144: - case 164: - v0->unk_00->unk_1616[v0->unk_0D] = 1; + switch (v0->unk_104.actingAnimationMoveID) { + case MOVE_TRANSFORM: + case MOVE_SUBSTITUTE: + v0->unk_00->unk_1616[v0->contestantID] = 1; break; } - v0->unk_0C++; + v0->state++; break; case 13: ov17_022426E8(v0->unk_00, 1, &v0->unk_10); - v0->unk_0C++; + v0->state++; break; case 14: if (v0->unk_10 == 1) { - v0->unk_0C++; + v0->state++; } break; default: @@ -805,7 +801,7 @@ static void ov17_02244970(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v0->unk_0C.unk_00->unk_113; + v1->unk_0D = v0->unk_0C.unk_00->playerContestantID; SysTask_Start(ov17_022449B8, v1, 100); } @@ -824,17 +820,17 @@ static void ov17_022449B8(SysTask *param0, void *param1) ov17_0223F9C4(v0->unk_00->unk_7E4, 2, 0, NULL); { - u32 v2; + u32 actingCompetitionMessageID; UnkStruct_ov17_022449B8 v3; if (v0->unk_00->unk_220.unk_00 + 1 == 4) { - v2 = 3; + actingCompetitionMessageID = ACTING_COMPETITION_MESSAGE_LAST_PERFORMANCE_CHOOSE_MOVE; } else { - v2 = 2; + actingCompetitionMessageID = ACTING_COMPETITION_MESSAGE_WHICH_MOVE_IS_YOUR_CHOICE; } v3.unk_04 = v0->unk_00->unk_220.unk_00 + 1; - ov17_02242E5C(v0->unk_00, v2, &v3, NULL); + ov17_02242E5C(v0->unk_00, actingCompetitionMessageID, &v3, NULL); } if ((v0->unk_00->unk_220.unk_00 + 1 == 4) && (v0->unk_0E == 0)) { @@ -855,7 +851,7 @@ static void ov17_022449B8(SysTask *param0, void *param1) v1 = ov17_0223FAF8(v0->unk_00->unk_7E4); if (v1 != 0xffffffff) { - v0->unk_10.unk_00 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0D], MON_DATA_MOVE1 + v1, NULL); + v0->unk_10.unk_00 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->unk_0D], MON_DATA_MOVE1 + v1, NULL); Sound_PlayEffect(SEQ_SE_DP_DECIDE); v0->unk_0C++; } @@ -872,12 +868,10 @@ static void ov17_022449B8(SysTask *param0, void *param1) ov17_0223F9C4(v0->unk_00->unk_7E4, 3, 0, NULL); { - u32 v4; UnkStruct_ov17_022449B8 v5; - v4 = 1; v5.unk_04 = v0->unk_00->unk_220.unk_00 + 1; - ov17_02242E5C(v0->unk_00, v4, &v5, NULL); + ov17_02242E5C(v0->unk_00, ACTING_COMPETITION_MESSAGE_CHOOSE_JUDGE, &v5, NULL); } v0->unk_0C++; @@ -912,7 +906,7 @@ static void ov17_022449B8(SysTask *param0, void *param1) v0->unk_0C++; default: if (v0->unk_00->unk_00->isLinkContest == TRUE) { - ov17_02242E5C(v0->unk_00, 46, NULL, NULL); + ov17_02242E5C(v0->unk_00, ACTING_COMPETITION_MESSAGE_COMMUNICATING_PLEASE_STAND_BY, NULL, NULL); } ov17_0224F26C(&v0->unk_00->unk_BF8, &v0->unk_04, &v0->unk_10, sizeof(UnkStruct_ov17_02244BB0)); @@ -925,13 +919,13 @@ static void ov17_022449B8(SysTask *param0, void *param1) } } -static void ov17_02244BB0(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, UnkStruct_ov17_0224F3D8 *param3, int param4) +static void ov17_02244BB0(UnkStruct_ov17_0224F30C *param0, void *param1, const UnkStruct_ov17_02243C80 *param2, UnkStruct_ov17_0224F3D8 *param3, int contestantID) { UnkStruct_ov17_02246F24 *v0 = param1; - UnkStruct_ov17_02244BB0 *v1 = param3->unk_00[param4]; + UnkStruct_ov17_02244BB0 *v1 = param3->unk_00[contestantID]; - v0->unk_220.unk_06[param4] = v1->unk_00; - v0->unk_220.unk_0E[param4] = v1->unk_02; + v0->unk_220.moveIDs[contestantID] = v1->unk_00; + v0->unk_220.unk_0E[contestantID] = v1->unk_02; } static int ov17_02244BD4(UnkStruct_ov17_0224F30C *param0, void *param1, int param2, void *param3) @@ -964,7 +958,7 @@ static void ov17_02244C08(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -974,7 +968,7 @@ static void ov17_02244C08(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02244C68(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -987,7 +981,7 @@ static void ov17_02244C68(SysTask *param0, void *param1) case 2: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); v0->unk_0C++; } else { v0->unk_0C = 4; @@ -1029,7 +1023,7 @@ static void ov17_02244D38(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1039,7 +1033,7 @@ static void ov17_02244D38(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02244D98(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -1066,7 +1060,7 @@ static void ov17_02244D98(SysTask *param0, void *param1) case 5: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); v0->unk_0C++; } else { v0->unk_0C = 7; @@ -1168,7 +1162,7 @@ static void ov17_02244FD4(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1178,7 +1172,7 @@ static void ov17_02244FD4(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02245034(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -1205,7 +1199,7 @@ static void ov17_02245034(SysTask *param0, void *param1) case 5: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); v0->unk_0C++; } else { v0->unk_0C = 7; @@ -1248,7 +1242,7 @@ static void ov17_0224513C(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1258,7 +1252,7 @@ static void ov17_0224513C(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_0224519C(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -1290,8 +1284,8 @@ static void ov17_0224519C(SysTask *param0, void *param1) case 3: v0->unk_0C++; case 4: - if (v0->unk_14.unk_C6.unk_0C != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.unk_0C, &v0->unk_14.unk_C6.unk_00, NULL); + if (v0->unk_14.unk_C6.actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.actingMessagesID, &v0->unk_14.unk_C6.unk_00, NULL); v0->unk_0C++; } else { v0->unk_0C = 6; @@ -1362,8 +1356,8 @@ static void ov17_0224519C(SysTask *param0, void *param1) v0->unk_0C++; break; case 15: - if (v0->unk_14.unk_C6.unk_0D != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.unk_0D, &v0->unk_14.unk_C6.unk_06, NULL); + if (v0->unk_14.unk_C6.actingMessagesID2 != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.actingMessagesID2, &v0->unk_14.unk_C6.unk_06, NULL); v0->unk_0C++; } else { v0->unk_0C = 17; @@ -1378,7 +1372,7 @@ static void ov17_0224519C(SysTask *param0, void *param1) v0->unk_0C++; case 18: if (v0->unk_F4 >= (10 * 5)) { - ov17_022436D0(v0->unk_00, v0->unk_0D, v0->unk_0E, v1->unk_03, &v0->unk_12); + ov17_022436D0(v0->unk_00, v0->contestantID, v0->unk_0E, v1->unk_03, &v0->unk_12); v0->unk_0C++; } else { v0->unk_0C = 20; @@ -1398,7 +1392,7 @@ static void ov17_0224519C(SysTask *param0, void *param1) case 22: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); v0->unk_0C++; } else { ov17_02241B1C(&v0->unk_00->unk_0C); @@ -1451,7 +1445,7 @@ static void ov17_02245528(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1461,7 +1455,7 @@ static void ov17_02245528(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02245588(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -1488,7 +1482,7 @@ static void ov17_02245588(SysTask *param0, void *param1) case 5: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); } else { v0->unk_0C = 7; } @@ -1608,8 +1602,8 @@ static void ov17_022456E8(SysTask *param0, void *param1) case 6: v0->unk_0C++; case 7: - if (v0->unk_10.unk_C6.unk_0C != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_10.unk_C6.unk_0C, &v0->unk_10.unk_C6.unk_00, &v0->unk_10.unk_D6_val1); + if (v0->unk_10.unk_C6.actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_10.unk_C6.actingMessagesID, &v0->unk_10.unk_C6.unk_00, &v0->unk_10.unk_D6_val1); v0->unk_0C++; } else { v0->unk_0C = 9; @@ -1623,8 +1617,8 @@ static void ov17_022456E8(SysTask *param0, void *param1) case 9: v0->unk_0C++; case 10: - if (v0->unk_10.unk_C6.unk_0D != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_10.unk_C6.unk_0D, &v0->unk_10.unk_C6.unk_06, NULL); + if (v0->unk_10.unk_C6.actingMessagesID2 != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_10.unk_C6.actingMessagesID2, &v0->unk_10.unk_C6.unk_06, NULL); v0->unk_0C++; } else { v0->unk_0C = 12; @@ -1696,7 +1690,7 @@ static void ov17_02245974(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v2->unk_00; + v1->contestantID = v2->contestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1706,7 +1700,7 @@ static void ov17_02245974(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_022459D4(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: @@ -1729,8 +1723,8 @@ static void ov17_022459D4(SysTask *param0, void *param1) case 3: v0->unk_0C++; case 4: - if (v0->unk_14.unk_C6.unk_0C != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.unk_0C, &v0->unk_14.unk_C6.unk_00, NULL); + if (v0->unk_14.unk_C6.actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.actingMessagesID, &v0->unk_14.unk_C6.unk_00, NULL); v0->unk_0C++; } else { v0->unk_0C = 6; @@ -1744,8 +1738,8 @@ static void ov17_022459D4(SysTask *param0, void *param1) case 6: v0->unk_0C++; case 7: - if (v0->unk_14.unk_C6.unk_0D != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.unk_0D, &v0->unk_14.unk_C6.unk_06, NULL); + if (v0->unk_14.unk_C6.actingMessagesID2 != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->unk_14.unk_C6.actingMessagesID2, &v0->unk_14.unk_C6.unk_06, NULL); v0->unk_0C++; } else { v0->unk_0C = 9; @@ -1763,7 +1757,7 @@ static void ov17_022459D4(SysTask *param0, void *param1) case 11: if (v0->unk_F2 < v1->unk_18) { v0->unk_F2 += 10; - ov17_02241F34(&v0->unk_00->unk_0C, v0->unk_0D, v0->unk_0E, v0->unk_F2); + ov17_02241F34(&v0->unk_00->unk_0C, v0->contestantID, v0->unk_0E, v0->unk_F2); } else { v0->unk_0C = 13; } @@ -1807,7 +1801,7 @@ static void ov17_02245B60(UnkStruct_ov17_0224F30C *param0, void *param1, const U v1->unk_00 = v0; v1->unk_04 = *param2; - v1->unk_0D = v0->unk_0C.unk_00->unk_113; + v1->contestantID = v0->unk_0C.unk_00->playerContestantID; v1->unk_0E = v2->unk_01; v1->unk_14 = *v2; @@ -1817,15 +1811,14 @@ static void ov17_02245B60(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02245BC8(SysTask *param0, void *param1) { UnkStruct_ov17_02244C08 *v0 = param1; - UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->unk_0D]; + UnkStruct_ov17_022444BC *v1 = &v0->unk_14.unk_10.unk_00[v0->contestantID]; switch (v0->unk_0C) { case 0: { - u32 v2; UnkStruct_ov17_022449B8 v3; - v2 = ov17_0224314C(v0->unk_0D, v1->unk_18, &v3); - ov17_02242E5C(v0->unk_00, v2, &v3, NULL); + u32 actingMessagesID = ov17_0224314C(v0->contestantID, v1->unk_18, &v3); + ov17_02242E5C(v0->unk_00, actingMessagesID, &v3, NULL); v0->unk_0C++; } break; case 1: @@ -1953,9 +1946,9 @@ static void ov17_02245E14(UnkStruct_ov17_0224F30C *param0, void *param1, const U v2->unk_00 = v0; v2->unk_04 = *param2; v2->unk_0C = param0; - v2->unk_11 = v1->unk_00; + v2->contestantID = v1->contestantID; v2->unk_14 = v1->unk_C6.unk_00; - v2->unk_1A = v1->unk_C6.unk_0C; + v2->actingMessagesID = v1->unk_C6.actingMessagesID; v2->unk_1C = v1->unk_C6.unk_0F; v2->unk_1B = v1->unk_C6.unk_0E; @@ -1968,8 +1961,8 @@ static void ov17_02245E8C(SysTask *param0, void *param1) switch (v0->unk_10) { case 0: - if (v0->unk_1A != 0) { - ov17_02242E5C(v0->unk_00, v0->unk_1A, &v0->unk_14, NULL); + if (v0->actingMessagesID != ACTING_COMPETITION_MESSAGE_NONE) { + ov17_02242E5C(v0->unk_00, v0->actingMessagesID, &v0->unk_14, NULL); v0->unk_10++; } else { v0->unk_10 = 100; diff --git a/src/overlay017/ov17_02245F14.c b/src/overlay017/ov17_02245F14.c index 5ddc456352..02edaf75e8 100644 --- a/src/overlay017/ov17_02245F14.c +++ b/src/overlay017/ov17_02245F14.c @@ -10,8 +10,8 @@ #include "overlay017/struct_ov17_02246540.h" #include "overlay017/struct_ov17_02246F24.h" +#include "contest.h" #include "move_table.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" typedef int (*UnkFuncPtr_ov17_02253AF8)(UnkStruct_ov17_02246F24 *, UnkStruct_ov17_02246540 *, int, int, int); @@ -55,36 +55,37 @@ __attribute__((aligned(4))) static const u8 Unk_ov17_02253AEC[] = { 0x28 }; -static const UnkStruct_ov17_02253AF8 Unk_ov17_02253AF8[] = { - { ov17_02246830, 0x3, 0xFF }, - { ov17_02246578, 0x3, 0xFF }, - { ov17_02246668, 0x3, 0xFF }, - { ov17_02246774, 0x5, 0xFF }, - { ov17_022467CC, 0x3, 0xFF }, - { ov17_02246830, 0x3, 0xFF }, - { ov17_02246834, 0x5, 0x0 }, - { ov17_0224687C, 0x3, 0xFF }, - { ov17_022468D4, 0x3, 0xFF }, - { ov17_02246918, 0x5, 0x0 }, - { ov17_02246960, 0x3, 0xFF }, - { ov17_022469DC, 0x3, 0xFF }, - { ov17_02246A50, 0x3, 0xFF }, - { ov17_022469FC, 0x3, 0xFF }, - { ov17_02246AB0, 0x3, 0xFF }, - { ov17_02246B74, 0x3, 0xFF }, - { ov17_02246BC0, 0x3, 0xFF }, - { ov17_02246C10, 0x3, 0xFF }, - { ov17_02246C4C, 0x3, 0xFF }, - { ov17_02246C88, 0x3, 0xFF }, - { ov17_02246CDC, 0x3, 0xFF }, - { ov17_02246DA4, 0x3, 0xFF }, - { ov17_02246E08, 0x3, 0xFF }, - { ov17_02246E68, 0x6, 0xFF } +static const UnkStruct_ov17_02253AF8 Unk_ov17_02253AF8[CONTEST_EFFECT_MAX] = { + [CONTEST_EFFECT_NONE] = { ov17_02246830, 0x3, 0xFF }, + [CONTEST_EFFECT_FIRST_NEXT_TURN] = { ov17_02246578, 0x3, 0xFF }, + [CONTEST_EFFECT_LAST_NEXT_TURN] = { ov17_02246668, 0x3, 0xFF }, + [CONTEST_EFFECT_DOUBLED_JUDGE] = { ov17_02246774, 0x5, 0xFF }, + [CONTEST_EFFECT_2_HEARTS_WHEN_VOLTAGE_UP] = { ov17_022467CC, 0x3, 0xFF }, + [CONTEST_EFFECT_BASIC] = { ov17_02246830, 0x3, 0xFF }, + [CONTEST_EFFECT_UNIQUE_JUDGE] = { ov17_02246834, 0x5, 0x0 }, + [CONTEST_EFFECT_CONSECUTIVE_USE] = { ov17_0224687C, 0x3, 0xFF }, + [CONTEST_EFFECT_VOLTAGE] = { ov17_022468D4, 0x3, 0xFF }, + [CONTEST_EFFECT_ALL_SAME_JUDGE] = { ov17_02246918, 0x5, 0x0 }, + [CONTEST_EFFECT_LOWERS_VOLTAGE] = { ov17_02246960, 0x3, 0xFF }, + [CONTEST_EFFECT_DOUBLE_NEXT_TURN] = { ov17_022469DC, 0x3, 0xFF }, + [CONTEST_EFFECT_STEAL_VOLTAGE] = { ov17_02246A50, 0x3, 0xFF }, + [CONTEST_EFFECT_SUPPRESS_VOLTAGE] = { ov17_022469FC, 0x3, 0xFF }, + [CONTEST_EFFECT_RANDOM_ORDER] = { ov17_02246AB0, 0x3, 0xFF }, + [CONTEST_EFFECT_DOUBLE_FINAL_ACT] = { ov17_02246B74, 0x3, 0xFF }, + [CONTEST_EFFECT_LOW_VOLTAGE_ADVANTAGE] = { ov17_02246BC0, 0x3, 0xFF }, + [CONTEST_EFFECT_FIRST_PERFORMANCE_ADVANTAGE] = { ov17_02246C10, 0x3, 0xFF }, + [CONTEST_EFFECT_FINAL_PERFORMANCE_ADVANTAGE] = { ov17_02246C4C, 0x3, 0xFF }, + [CONTEST_EFFECT_NO_VOLTAGE_DOWN] = { ov17_02246C88, 0x3, 0xFF }, + [CONTEST_EFFECT_TWO_VOLTAGE_IN_A_ROW_ADVANTAGE] = { ov17_02246CDC, 0x3, 0xFF }, + [CONTEST_EFFECT_HIGH_SCORE_LATER_TURN] = { ov17_02246DA4, 0x3, 0xFF }, + [CONTEST_EFFECT_MAX_VOLTAGE_ADVANTAGE] = { ov17_02246E08, 0x3, 0xFF }, + [CONTEST_EFFECT_PITY_POINTS] = { ov17_02246E68, 0x6, 0xFF } }; -static void ov17_02245F14(UnkStruct_ov17_022444BC *param0, int param1, int param2, int param3, int param4, int param5, int param6) +// This seems to be using 30000 as a NULL value +static void ov17_02245F14(UnkStruct_ov17_022444BC *param0, int contestMoveEffect, int param2, int param3, int param4, int moveID, int param6) { - param0->unk_12 = param1; + param0->unk_12 = contestMoveEffect; param0->unk_13 = param2; if (param3 != 30000) { @@ -95,8 +96,8 @@ static void ov17_02245F14(UnkStruct_ov17_022444BC *param0, int param1, int param param0->unk_0C.unk_01 = param4; } - if (param5 != 30000) { - param0->unk_0C.unk_02 = param5; + if (moveID != 30000) { + param0->unk_0C.moveID = moveID; } if (param6 != 30000) { @@ -106,24 +107,24 @@ static void ov17_02245F14(UnkStruct_ov17_022444BC *param0, int param1, int param void ov17_02245F44(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1) { - int v0; + int contestantID; *param1 = param0->unk_220.unk_30; ov17_02246540(param1); MI_CpuClear8(param1->unk_00, sizeof(UnkStruct_ov17_022444BC) * 4); - for (v0 = 0; v0 < 4; v0++) { - ov17_02243120(param0, ¶m1->unk_00[v0].unk_0C, v0); + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + ov17_02243120(param0, ¶m1->unk_00[contestantID].unk_0C, contestantID); - param1->unk_00[v0].unk_03 = param0->unk_220.unk_0E[v0]; - param1->unk_00[v0].unk_00 = param0->unk_220.unk_06[v0]; - param1->unk_00[v0].unk_02 = MoveTable_LoadParam(param1->unk_00[v0].unk_00, MOVEATTRIBUTE_CONTEST_EFFECT); - param1->unk_00[v0].unk_09 = ov17_02243AC4(¶m0->unk_220, v0); + param1->unk_00[contestantID].unk_03 = param0->unk_220.unk_0E[contestantID]; + param1->unk_00[contestantID].moveID = param0->unk_220.moveIDs[contestantID]; + param1->unk_00[contestantID].contestMoveEffect = MoveTable_LoadParam(param1->unk_00[contestantID].moveID, MOVEATTRIBUTE_CONTEST_EFFECT); + param1->unk_00[contestantID].unk_09 = ov17_02243AC4(¶m0->unk_220, contestantID); } } -void ov17_02245FB4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2) +void ov17_02245FB4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID) { int v0; @@ -138,7 +139,7 @@ void ov17_02245FB4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *par } } -void ov17_02246018(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2) +void ov17_02246018(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID) { int v0; @@ -163,13 +164,13 @@ void ov17_02246044(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *par param0->unk_220.unk_30 = *param1; } -static void ov17_02246090(UnkStruct_ov17_02246540 *param0, int param1) +static void ov17_02246090(UnkStruct_ov17_02246540 *param0, int contestantID) { int v0; - param0->unk_00[param1].unk_1A = param0->unk_00[param1].unk_18; - param0->unk_00[param1].unk_1E = 0; - param0->unk_00[param1].unk_20 = 0; + param0->unk_00[contestantID].unk_1A = param0->unk_00[contestantID].unk_18; + param0->unk_00[contestantID].unk_1E = 0; + param0->unk_00[contestantID].unk_20 = 0; for (v0 = 0; v0 < (1 + 2); v0++) { param0->unk_B0[v0] = param0->unk_B3[v0]; @@ -190,135 +191,135 @@ void ov17_022460C8(UnkStruct_ov17_02246540 *param0) } } -void ov17_022460DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2) +void ov17_022460DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID) { u32 v0, v1; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_05 == 0) { - sub_02095790(param1->unk_00[param2].unk_02, 4, &v0, &v1); + if (Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_05 == 0) { + sub_02095790(param1->unk_00[contestantID].contestMoveEffect, 4, &v0, &v1); if (v0 != 0xffff) { - ov17_02245F14(¶m1->unk_00[param2], param1->unk_00[param2].unk_02, 4, param2, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[contestantID], param1->unk_00[contestantID].contestMoveEffect, 4, contestantID, 30000, 30000, 30000); } } } -void ov17_02246138(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2) +void ov17_02246138(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID) { - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - param1->unk_00[param2].unk_04 = sub_02095734(param1->unk_00[param2].unk_02); - param1->unk_00[param2].unk_18 = param1->unk_00[param2].unk_04; + param1->unk_00[contestantID].unk_04 = sub_02095734(param1->unk_00[contestantID].contestMoveEffect); + param1->unk_00[contestantID].unk_18 = param1->unk_00[contestantID].unk_04; } -void ov17_02246160(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3) +void ov17_02246160(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_04 == 3) { - Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_00(param0, param1, param2, param2, param3); - param1->unk_00[param2].unk_14 = 1; - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_1E + param1->unk_00[param2].unk_20; + if (Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_04 == 3) { + Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_00(param0, param1, contestantID, contestantID, param3); + param1->unk_00[contestantID].unk_14 = 1; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_1E + param1->unk_00[contestantID].unk_20; } for (v0 = 0; v0 <= param3; v0++) { int v1 = param0->unk_220.unk_01[v0]; - if (Unk_ov17_02253AF8[param1->unk_00[v1].unk_02].unk_04 == 2) { + if (Unk_ov17_02253AF8[param1->unk_00[v1].contestMoveEffect].unk_04 == 2) { ov17_02246090(param1, v1); - Unk_ov17_02253AF8[param1->unk_00[v1].unk_02].unk_00(param0, param1, param2, v1, param3); + Unk_ov17_02253AF8[param1->unk_00[v1].contestMoveEffect].unk_00(param0, param1, contestantID, v1, param3); param1->unk_00[v1].unk_14 = 1; param1->unk_00[v1].unk_18 += param1->unk_00[v1].unk_1E; } } } -void ov17_02246228(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3) +void ov17_02246228(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (param1->unk_A0[param2].unk_00_16 != 0) { - v0 = param1->unk_00[param2].unk_18; - param1->unk_00[param2].unk_1E += v0; - ov17_02245F14(¶m1->unk_00[param2], param1->unk_A0[param2].unk_00_16, 0, param2, 30000, 30000, v0 / 10); + if (param1->unk_A0[contestantID].contestMoveEffect != CONTEST_EFFECT_NONE) { + v0 = param1->unk_00[contestantID].unk_18; + param1->unk_00[contestantID].unk_1E += v0; + ov17_02245F14(¶m1->unk_00[contestantID], param1->unk_A0[contestantID].contestMoveEffect, 0, contestantID, 30000, 30000, v0 / 10); } - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_1E + param1->unk_00[param2].unk_20; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_1E + param1->unk_00[contestantID].unk_20; } -BOOL ov17_022462A4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3) +BOOL ov17_022462A4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_04 == 4) { - Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_00(param0, param1, param2, param2, param3); - param1->unk_00[param2].unk_14 = 1; - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_1E; + if (Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_04 == 4) { + Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_00(param0, param1, contestantID, contestantID, param3); + param1->unk_00[contestantID].unk_14 = 1; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_1E; return 1; } return 0; } -BOOL ov17_02246304(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3) +BOOL ov17_02246304(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_04 == 5) { - Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_00(param0, param1, param2, param2, param3); - param1->unk_00[param2].unk_14 = 1; - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_1E; + if (Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_04 == 5) { + Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_00(param0, param1, contestantID, contestantID, param3); + param1->unk_00[contestantID].unk_14 = 1; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_1E; return 1; } return 0; } -BOOL ov17_02246364(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3) +BOOL ov17_02246364(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, int param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - if (Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_04 == 6) { - Unk_ov17_02253AF8[param1->unk_00[param2].unk_02].unk_00(param0, param1, param2, param2, param3); - param1->unk_00[param2].unk_14 = 1; - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_1E; + if (Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_04 == 6) { + Unk_ov17_02253AF8[param1->unk_00[contestantID].contestMoveEffect].unk_00(param0, param1, contestantID, contestantID, param3); + param1->unk_00[contestantID].unk_14 = 1; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_1E; return 1; } return 0; } -void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, UnkStruct_ov17_022463C4 *param3) +void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, UnkStruct_ov17_022463C4 *param3) { int v0, v1, v2; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - param3->unk_0C = 0; - param3->unk_0D = 0; + param3->actingMessagesID = ACTING_COMPETITION_MESSAGE_NONE; + param3->actingMessagesID2 = ACTING_COMPETITION_MESSAGE_NONE; - v1 = param0->unk_220.unk_0E[param2]; - v2 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[param2].unk_00, v1, param0->unk_00->unk_00.unk_10E); + v1 = param0->unk_220.unk_0E[contestantID]; + v2 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[contestantID].moveID, v1, param0->unk_00->unk_00.unk_10E); - if ((v2 > 0) && (param1->unk_00[param2].unk_28_1 == 0)) { + if ((v2 > 0) && (param1->unk_00[contestantID].unk_28_1 == 0)) { param1->unk_B3[v1] += v2; if (param1->unk_B3[v1] >= (10 * 5)) { param1->unk_B3[v1] = (10 * 5); } - } else if ((v2 < 0) && (param1->unk_00[param2].unk_28_2 == 0) && (param1->unk_B3[v1] > 0)) { + } else if ((v2 < 0) && (param1->unk_00[contestantID].unk_28_2 == 0) && (param1->unk_B3[v1] > 0)) { param1->unk_B3[v1] += v2; if (param1->unk_B3[v1] <= 0) { @@ -330,16 +331,16 @@ void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *par if (param1->unk_B3[v1] >= (10 * 5)) { if (v1 == param0->unk_00->unk_00.unk_10E) { - param1->unk_00[param2].unk_08 = (10 * 8); + param1->unk_00[contestantID].unk_08 = (10 * 8); } else { - param1->unk_00[param2].unk_08 = (10 * 5); + param1->unk_00[contestantID].unk_08 = (10 * 5); } } - param3->unk_06.unk_04 = param1->unk_00[param2].unk_08 / 10; + param3->unk_06.unk_04 = param1->unk_00[contestantID].unk_08 / 10; if (v2 > 0) { - param3->unk_0C = ov17_02243970(MoveTable_LoadParam(param1->unk_00[param2].unk_00, MOVEATTRIBUTE_CONTEST_TYPE)); + param3->actingMessagesID = Contest_GetActingCompetitionMessageGoodMoveType(MoveTable_LoadParam(param1->unk_00[contestantID].moveID, MOVEATTRIBUTE_CONTEST_TYPE)); switch (param1->unk_B3[v1] / 10) { case 2: @@ -347,14 +348,14 @@ void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *par case 3: break; case 4: - param3->unk_0D = 25; + param3->actingMessagesID2 = ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_PRETTY_EXCITED; break; case 5: - param3->unk_0D = 26; + param3->actingMessagesID2 = ACTING_COMPETITION_MESSAGE_AUDIENCE_IS_GOING_WILD; break; } } else if (v2 < 0) { - param3->unk_0C = ov17_0224399C(MoveTable_LoadParam(param1->unk_00[param2].unk_00, MOVEATTRIBUTE_CONTEST_TYPE)); + param3->actingMessagesID = Contest_GetActingCompetitionMessageBadMoveType(MoveTable_LoadParam(param1->unk_00[contestantID].moveID, MOVEATTRIBUTE_CONTEST_TYPE)); switch (param1->unk_B3[v1] / 10) { case 3: @@ -371,17 +372,17 @@ void ov17_022463C4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *par } } - param1->unk_00[param2].unk_18 += param1->unk_00[param2].unk_08; + param1->unk_00[contestantID].unk_18 += param1->unk_00[contestantID].unk_08; } -void ov17_02246518(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, UnkStruct_ov17_022463C4 *param3) +void ov17_02246518(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int contestantID, UnkStruct_ov17_022463C4 *param3) { int v0; - ov17_02246090(param1, param2); + ov17_02246090(param1, contestantID); - v0 = ov17_02243AE4(param1->unk_00[param2].unk_09); - param1->unk_00[param2].unk_18 += v0; + v0 = ov17_02243AE4(param1->unk_00[contestantID].unk_09); + param1->unk_00[contestantID].unk_18 += v0; } static void ov17_02246540(UnkStruct_ov17_02246540 *param0) @@ -389,8 +390,8 @@ static void ov17_02246540(UnkStruct_ov17_02246540 *param0) int v0; for (v0 = 0; v0 < 4; v0++) { - param0->unk_A0[v0].unk_00_0 = 0; - param0->unk_A0[v0].unk_00_16 = param0->unk_00[v0].unk_28_12; + param0->unk_A0[v0].moveID = MOVE_NONE; + param0->unk_A0[v0].contestMoveEffect = param0->unk_00[v0].unk_28_12; } } @@ -440,9 +441,9 @@ static int ov17_02246578(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 param1->unk_00[param3].unk_28_6 = 0; if (v3 != 4) { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 1, param3, v3, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 1, param3, v3, 30000, 30000); } else { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); } return 1; @@ -493,9 +494,9 @@ static int ov17_02246668(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 param1->unk_00[param3].unk_28_6 = 4 - 1; if (v3 == 4) { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); } else { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 1, param3, v3, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 1, param3, v3, 30000, 30000); } return 1; @@ -522,7 +523,7 @@ static int ov17_02246774(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 break; } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, v0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, v0, param3, 30000, 30000, 30000); return 1; } @@ -532,11 +533,11 @@ static int ov17_022467CC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 int v1; v0 = param1->unk_00[param3].unk_03; - v1 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[param3].unk_00, v0, param0->unk_00->unk_00.unk_10E); + v1 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[param3].moveID, v0, param0->unk_00->unk_00.unk_10E); if ((v1 > 0) && (param1->unk_00[param3].unk_28_1 == 0)) { param1->unk_00[param3].unk_1E += (10 * 2); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, param1->unk_00[param3].unk_00, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, param1->unk_00[param3].moveID, 30000); return 1; } @@ -552,9 +553,9 @@ static int ov17_02246834(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 { if (param1->unk_00[param3].unk_09 == 0) { param1->unk_00[param3].unk_1E += (10 * 3); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); } else { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 1, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 1, param3, 30000, 30000, 30000); } return 1; @@ -562,9 +563,9 @@ static int ov17_02246834(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 static int ov17_0224687C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3, int param4) { - if (param1->unk_00[param3].unk_00 != param0->unk_220.unk_26[param3]) { - param1->unk_A0[param3].unk_00_0 = param1->unk_00[param3].unk_00; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + if (param1->unk_00[param3].moveID != param0->unk_220.unk_26[param3]) { + param1->unk_A0[param3].moveID = param1->unk_00[param3].moveID; + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); return 1; } @@ -573,28 +574,21 @@ static int ov17_0224687C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 static int ov17_022468D4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3, int param4) { - int v0, v1; + int v0 = param1->unk_00[param3].unk_03; + int v1 = param1->unk_B0[v0]; + param1->unk_00[param3].unk_1E += v1; + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, v1 / 10); - v0 = param1->unk_00[param3].unk_03; - - if (1) { - v1 = param1->unk_B0[v0]; - param1->unk_00[param3].unk_1E += v1; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, v1 / 10); - - return 1; - } - - return 0; + return 1; } static int ov17_02246918(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3, int param4) { if (param1->unk_00[param3].unk_09 == 4 - 1) { param1->unk_00[param3].unk_1E += (10 * 15); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); } else { - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 1, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 1, param3, 30000, 30000, 30000); } return 1; @@ -626,13 +620,13 @@ static int ov17_02246960(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 } } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } static int ov17_022469DC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246540 *param1, int param2, int param3, int param4) { - param1->unk_00[param3].unk_28_12 = param1->unk_00[param3].unk_02; + param1->unk_00[param3].unk_28_12 = param1->unk_00[param3].contestMoveEffect; return 1; } @@ -644,7 +638,7 @@ static int ov17_022469FC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 param1->unk_00[param0->unk_220.unk_01[v0]].unk_28_1 = 1; } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } @@ -663,7 +657,7 @@ static int ov17_02246A50(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 } param1->unk_00[param3].unk_1E += param1->unk_00[v0].unk_08; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, v0, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, v0, 30000, 30000); return 1; } @@ -680,7 +674,7 @@ static int ov17_02246AB0(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 } for (v0 = 0; v0 < 4; v0++) { - v4 = sub_02094E98(param0->unk_00) % (4 - v0); + v4 = Contest_GetRNGNext(param0->unk_00) % (4 - v0); v5 = v4; for (v1 = 0; v1 < 4; v1++) { @@ -701,7 +695,7 @@ static int ov17_02246AB0(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 param1->unk_00[v0].unk_28_6 = v2[v0]; } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } @@ -709,7 +703,7 @@ static int ov17_02246B74(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 { if (param4 == 4 - 1) { param1->unk_00[param3].unk_1E += param1->unk_00[param3].unk_18; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, param1->unk_00[param3].unk_18 / 10); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, param1->unk_00[param3].unk_18 / 10); return 1; } @@ -732,7 +726,7 @@ static int ov17_02246BC0(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 v0 = param1->unk_B0[v1] / 10; param1->unk_00[param3].unk_1E += v2[v0]; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, v2[v0] / 10); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, v2[v0] / 10); return 1; } @@ -740,7 +734,7 @@ static int ov17_02246C10(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 { if (param4 == 0) { param1->unk_00[param3].unk_1E += 10 * 2; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } @@ -751,7 +745,7 @@ static int ov17_02246C4C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 { if (param4 == 4 - 1) { param1->unk_00[param3].unk_1E += 10 * 2; - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } @@ -766,7 +760,7 @@ static int ov17_02246C88(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 param1->unk_00[param0->unk_220.unk_01[v0]].unk_28_2 = 1; } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, 30000, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, 30000, 30000, 30000, 30000); return 1; } @@ -784,12 +778,12 @@ static int ov17_02246CDC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 return 0; } - v1 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[param3].unk_00, param1->unk_00[param3].unk_03, param0->unk_00->unk_00.unk_10E); - v2 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[v0].unk_00, param1->unk_00[v0].unk_03, param0->unk_00->unk_00.unk_10E); + v1 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[param3].moveID, param1->unk_00[param3].unk_03, param0->unk_00->unk_00.unk_10E); + v2 = ov17_02243AF0(param0->unk_00->unk_00.contestType, param1->unk_00[v0].moveID, param1->unk_00[v0].unk_03, param0->unk_00->unk_00.unk_10E); if ((v2 > 0) && (v1 > 0)) { param1->unk_00[param3].unk_1E += (10 * 3); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, v0, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, v0, 30000, 30000); return 1; } @@ -818,7 +812,7 @@ static int ov17_02246DA4(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 break; } - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, v0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, v0, param3, 30000, 30000, 30000); return 1; } @@ -834,7 +828,7 @@ static int ov17_02246E08(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 if ((param1->unk_00[v0].unk_08 >= (10 * 5)) || (param1->unk_00[v0].unk_08 >= (10 * 8))) { param1->unk_00[param3].unk_1E += (10 * 3); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); return 1; } @@ -860,7 +854,7 @@ static int ov17_02246E68(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0224654 } param1->unk_00[param3].unk_1E += (10 * 3); - ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].unk_02, 0, param3, 30000, 30000, 30000); + ov17_02245F14(¶m1->unk_00[param3], param1->unk_00[param3].contestMoveEffect, 0, param3, 30000, 30000, 30000); return 1; } diff --git a/src/overlay017/ov17_02246ECC.c b/src/overlay017/ov17_02246ECC.c index 18c1c7ec0e..041928c6c4 100644 --- a/src/overlay017/ov17_02246ECC.c +++ b/src/overlay017/ov17_02246ECC.c @@ -8,18 +8,18 @@ #include "overlay017/struct_ov17_02246F24.h" #include "overlay017/struct_ov17_022472F8.h" +#include "contest.h" #include "heap.h" #include "move_table.h" #include "pokemon.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" typedef struct { - u16 unk_00; + u16 moveID; s16 unk_02; s16 unk_04[3]; - u8 unk_0A; - u8 unk_0B; + u8 moveContestEffect; + u8 moveContestType; } UnkStruct_ov17_02246F9C_sub1; typedef struct { @@ -36,35 +36,35 @@ typedef struct { } UnkStruct_ov17_02253C30; static void ov17_02246F24(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int param2); -static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int param2, u16 *param3, u8 *param4); -static int ov17_022472F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247308(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247320(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247338(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247350(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247368(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247380(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247398(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022473B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022473C8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022473E0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022473F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247424(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247454(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247474(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247490(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022474D8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247520(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247538(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247550(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_0224757C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022475A8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022475D4(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247600(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_0224762C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247658(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_02247684(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); -static int ov17_022476B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4); +static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int contestantID, u16 *destMoveID, u8 *param4); +static int ov17_022472F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247308(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247320(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247338(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247350(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247368(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247380(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247398(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022473B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022473C8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022473E0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022473F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247424(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247454(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247474(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247490(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022474D8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247520(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247538(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247550(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_0224757C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022475A8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022475D4(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247600(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_0224762C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247658(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_02247684(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); +static int ov17_022476B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType); static int (*const Unk_ov17_02253BBC[])(UnkStruct_ov17_022472F8 *, int, UnkStruct_ov17_02246F9C *, u8 *, int) = { NULL, @@ -1258,38 +1258,37 @@ static const UnkStruct_ov17_02253C30 Unk_ov17_02253C30[] = { void ov17_02246ECC(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_0223BE58 *param1) { - int v0; UnkStruct_ov17_02246F9C *v1 = Heap_Alloc(HEAP_ID_21, sizeof(UnkStruct_ov17_02246F9C)); - for (v0 = param0->unk_00->unk_00.unk_117; v0 < 4; v0++) { - ov17_02246F24(param0, v1, v0); - ov17_02246F9C(param0, v1, v0, ¶m1->unk_00[v0], ¶m1->unk_08[v0]); + for (int contestantID = param0->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + ov17_02246F24(param0, v1, contestantID); + ov17_02246F9C(param0, v1, contestantID, ¶m1->moveIDs[contestantID], ¶m1->unk_08[contestantID]); } Heap_Free(v1); } -static void ov17_02246F24(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int param2) +static void ov17_02246F24(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int contestantID) { int v0; MI_CpuClear8(param1, sizeof(UnkStruct_ov17_02246F9C)); for (v0 = 0; v0 < LEARNED_MOVES_MAX; v0++) { - param1->unk_00[v0].unk_00 = Pokemon_GetValue(param0->unk_00->unk_00.unk_00[param2], MON_DATA_MOVE1 + v0, NULL); + param1->unk_00[v0].moveID = Pokemon_GetValue(param0->unk_00->unk_00.contestMons[contestantID], MON_DATA_MOVE1 + v0, NULL); - if (ov17_02243A98(¶m0->unk_220, param2, param1->unk_00[v0].unk_00) == 1) { - param1->unk_00[v0].unk_0A = MoveTable_LoadParam(param1->unk_00[v0].unk_00, MOVEATTRIBUTE_CONTEST_EFFECT); - param1->unk_00[v0].unk_0B = MoveTable_LoadParam(param1->unk_00[v0].unk_00, MOVEATTRIBUTE_CONTEST_TYPE); + if (ov17_02243A98(¶m0->unk_220, contestantID, param1->unk_00[v0].moveID) == TRUE) { + param1->unk_00[v0].moveContestEffect = MoveTable_LoadParam(param1->unk_00[v0].moveID, MOVEATTRIBUTE_CONTEST_EFFECT); + param1->unk_00[v0].moveContestType = MoveTable_LoadParam(param1->unk_00[v0].moveID, MOVEATTRIBUTE_CONTEST_TYPE); } else { - param1->unk_00[v0].unk_00 = 0; + param1->unk_00[v0].moveID = MOVE_NONE; } } - param1->unk_30 = param0->unk_00->unk_00.unk_FC[param2]; + param1->unk_30 = param0->unk_00->unk_00.unk_FC[contestantID]; } -static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int param2, u16 *param3, u8 *param4) +static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F9C *param1, int contestantID, u16 *destMoveID, u8 *param4) { int v0, v1, v2, v3, v4; UnkStruct_ov17_022472F8 *v5; @@ -1299,7 +1298,7 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F v5 = ¶m0->unk_220; for (v1 = 0; v1 < 4; v1++) { - if (v5->unk_01[v1] == param2) { + if (v5->unk_01[v1] == contestantID) { break; } } @@ -1313,7 +1312,7 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F v7[v4] = 0; } - v2 = Unk_ov17_02253BBC[Unk_ov17_02253C30[v1].unk_01](v5, param2, param1, v7, param0->unk_00->unk_00.contestType); + v2 = Unk_ov17_02253BBC[Unk_ov17_02253C30[v1].unk_01](v5, contestantID, param1, v7, param0->unk_00->unk_00.contestType); if (v2 == 1) { switch (Unk_ov17_02253C30[v1].unk_03) { @@ -1331,16 +1330,16 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F break; } - v6 = Unk_ov17_02253C30[v1].unk_04[param0->unk_00->unk_00.unk_FC[param2]]; + v6 = Unk_ov17_02253C30[v1].unk_04[param0->unk_00->unk_00.unk_FC[contestantID]]; - if (param0->unk_00->unk_00.unk_FC[param2] != 0) { + if (param0->unk_00->unk_00.unk_FC[contestantID] != 0) { v6 += Unk_ov17_02253C30[v1].unk_04[0]; } switch (Unk_ov17_02253C30[v1].unk_02) { case 240: for (v3 = 0; v3 < 4; v3++) { - if (param0->unk_00->unk_00.contestType == param1->unk_00[v3].unk_0B) { + if (param0->unk_00->unk_00.contestType == param1->unk_00[v3].moveContestType) { param1->unk_00[v3].unk_02 += v6; for (v4 = 0; v4 < (1 + 2); v4++) { @@ -1353,7 +1352,7 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F break; case 241: for (v3 = 0; v3 < 4; v3++) { - if (sub_02095734(param1->unk_00[v3].unk_0A) >= 10 * 2) { + if (sub_02095734(param1->unk_00[v3].moveContestEffect) >= 10 * 2) { param1->unk_00[v3].unk_02 += v6; for (v4 = 0; v4 < (1 + 2); v4++) { @@ -1366,7 +1365,7 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F break; default: for (v3 = 0; v3 < 4; v3++) { - if (Unk_ov17_02253C30[v1].unk_02 == param1->unk_00[v3].unk_0A) { + if (Unk_ov17_02253C30[v1].unk_02 == param1->unk_00[v3].moveContestEffect) { param1->unk_00[v3].unk_02 += v6; for (v4 = 0; v4 < (1 + 2); v4++) { @@ -1387,14 +1386,14 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F int v10, v11, v12, v13, v14, v15; for (v1 = 0; v1 < 4; v1++) { - v8[v1] = sub_02094E98(param0->unk_00); + v8[v1] = Contest_GetRNGNext(param0->unk_00); } for (v1 = 0; v1 < (1 + 2); v1++) { - v9[v1] = sub_02094E98(param0->unk_00); + v9[v1] = Contest_GetRNGNext(param0->unk_00); } - for (v10 = 0; param1->unk_00[v10].unk_00 == 0; v10++) { + for (v10 = 0; param1->unk_00[v10].moveID == MOVE_NONE; v10++) { (void)0; } @@ -1402,7 +1401,7 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F v13 = param1->unk_00[v10].unk_02; for (v1 = v10 + 1; v1 < 4; v1++) { - if (param1->unk_00[v1].unk_00 != 0) { + if (param1->unk_00[v1].moveID != MOVE_NONE) { v12 = param1->unk_00[v1].unk_02; if ((v12 > v13) || ((v12 == v13) && (v8[v1] > v8[v11]))) { @@ -1433,10 +1432,10 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F 0, }; - v18 = sub_02094E98(param0->unk_00) & 0xff; + v18 = Contest_GetRNGNext(param0->unk_00) & 0xff; if (v18 < v20[param0->unk_00->unk_00.contestRank]) { - v19 = param0->unk_220.unk_0E[param0->unk_00->unk_00.unk_113]; + v19 = param0->unk_220.unk_0E[param0->unk_00->unk_00.playerContestantID]; param1->unk_00[v15].unk_04[v19] -= 100; } } @@ -1456,15 +1455,15 @@ static void ov17_02246F9C(UnkStruct_ov17_02246F24 *param0, UnkStruct_ov17_02246F v14 = v11; - *param3 = param1->unk_00[v15].unk_00; + *destMoveID = param1->unk_00[v15].moveID; *param4 = v14; - GF_ASSERT((*param3) != 0); + GF_ASSERT((*destMoveID) != MOVE_NONE); GF_ASSERT((*param4) < (1 + 2)); } } -static int ov17_022472F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022472F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { if (param0->unk_00 == 4) { return 1; @@ -1473,21 +1472,21 @@ static int ov17_022472F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247308(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247308(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { - if (param0->unk_30.unk_A0[param1].unk_00_16 != 0) { + if (param0->unk_30.unk_A0[param1].contestMoveEffect != CONTEST_EFFECT_NONE) { return 1; } return 0; } -static int ov17_02247320(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247320(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 5) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_BASIC) { return 1; } } @@ -1495,12 +1494,12 @@ static int ov17_02247320(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247338(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247338(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 9) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_ALL_SAME_JUDGE) { return 1; } } @@ -1508,12 +1507,12 @@ static int ov17_02247338(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247350(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247350(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 12) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_STEAL_VOLTAGE) { return 1; } } @@ -1521,12 +1520,12 @@ static int ov17_02247350(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247368(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247368(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 15) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_DOUBLE_FINAL_ACT) { return 1; } } @@ -1534,12 +1533,12 @@ static int ov17_02247368(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247380(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247380(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 17) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_FIRST_PERFORMANCE_ADVANTAGE) { return 1; } } @@ -1547,12 +1546,12 @@ static int ov17_02247380(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247398(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247398(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 18) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_FINAL_PERFORMANCE_ADVANTAGE) { return 1; } } @@ -1560,12 +1559,12 @@ static int ov17_02247398(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022473B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022473B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 19) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_NO_VOLTAGE_DOWN) { return 1; } } @@ -1573,12 +1572,12 @@ static int ov17_022473B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022473C8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022473C8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 20) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_TWO_VOLTAGE_IN_A_ROW_ADVANTAGE) { return 1; } } @@ -1586,12 +1585,12 @@ static int ov17_022473C8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022473E0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022473E0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 21) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_HIGH_SCORE_LATER_TURN) { return 1; } } @@ -1599,7 +1598,7 @@ static int ov17_022473E0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022473F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022473F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; @@ -1618,7 +1617,7 @@ static int ov17_022473F8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247424(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247424(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; @@ -1639,12 +1638,12 @@ static int ov17_02247424(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247454(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247454(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if ((param2->unk_00[v0].unk_0A == 4) && (param2->unk_00[v0].unk_0B == param4)) { + if ((param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_2_HEARTS_WHEN_VOLTAGE_UP) && (param2->unk_00[v0].moveContestType == contestType)) { return 1; } } @@ -1652,12 +1651,12 @@ static int ov17_02247454(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247474(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247474(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0B == param4) { + if (param2->unk_00[v0].moveContestType == contestType) { return 1; } } @@ -1665,12 +1664,12 @@ static int ov17_02247474(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247490(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247490(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0B == param4) { + if (param2->unk_00[v0].moveContestType == contestType) { break; } } @@ -1695,12 +1694,12 @@ static int ov17_02247490(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022474D8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022474D8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0B == param4) { + if (param2->unk_00[v0].moveContestType == contestType) { break; } } @@ -1725,12 +1724,12 @@ static int ov17_022474D8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247520(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247520(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 8) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_VOLTAGE) { return 1; } } @@ -1738,12 +1737,12 @@ static int ov17_02247520(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247538(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247538(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0A == 13) { + if (param2->unk_00[v0].moveContestEffect == CONTEST_EFFECT_SUPPRESS_VOLTAGE) { return 1; } } @@ -1751,7 +1750,7 @@ static int ov17_02247538(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247550(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247550(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1769,7 +1768,7 @@ static int ov17_02247550(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_0224757C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_0224757C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1787,7 +1786,7 @@ static int ov17_0224757C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022475A8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022475A8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1805,7 +1804,7 @@ static int ov17_022475A8(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022475D4(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022475D4(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; @@ -1822,7 +1821,7 @@ static int ov17_022475D4(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 1; } -static int ov17_02247600(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247600(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0; @@ -1839,7 +1838,7 @@ static int ov17_02247600(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 1; } -static int ov17_0224762C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_0224762C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1857,7 +1856,7 @@ static int ov17_0224762C(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247658(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247658(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1875,7 +1874,7 @@ static int ov17_02247658(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_02247684(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_02247684(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1 = 0; @@ -1893,12 +1892,12 @@ static int ov17_02247684(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ return 0; } -static int ov17_022476B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int param4) +static int ov17_022476B0(UnkStruct_ov17_022472F8 *param0, int param1, UnkStruct_ov17_02246F9C *param2, u8 *param3, int contestType) { int v0, v1; for (v0 = 0; v0 < 4; v0++) { - if (param2->unk_00[v0].unk_0B == param4) { + if (param2->unk_00[v0].moveContestType == contestType) { break; } } diff --git a/src/overlay017/ov17_022476F8.c b/src/overlay017/ov17_022476F8.c index c7f4fa7b14..48b161358d 100644 --- a/src/overlay017/ov17_022476F8.c +++ b/src/overlay017/ov17_022476F8.c @@ -6,7 +6,6 @@ #include "overlay017/struct_ov17_022476F8.h" #include "overlay017/struct_ov17_0224792C.h" #include "overlay017/struct_ov17_02247A48.h" -#include "overlay017/struct_ov17_0225442C.h" #include "bg_window.h" #include "game_options.h" @@ -24,6 +23,18 @@ #include "sys_task_manager.h" #include "text.h" +#include "res/text/bank/contest_visual_competition.h" + +enum VisualContestMessageFormatting { + VISUAL_CONTEST_MESSAGE_FORMAT_NONE, + VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME +}; + +typedef struct VisualContestMessage { + u16 messageID; + u8 stringTemplateFormatting; +} VisualContestMessage; + typedef struct { u8 *unk_00; ManagedSprite *unk_04; @@ -47,22 +58,22 @@ static const SpriteTemplate Unk_ov17_022543F8 = { 0x0 }; -static const UnkStruct_ov17_0225442C Unk_ov17_0225442C[] = { - { 0x0, 0x0 }, - { 0x0, 0x0 }, - { 0x11, 0x0 }, - { 0x1, 0x1 }, - { 0x2, 0x1 }, - { 0x3, 0x1 }, - { 0x4, 0x1 }, - { 0x5, 0x0 }, - { 0x6, 0x0 }, - { 0x7, 0x0 }, - { 0x8, 0x0 }, - { 0x9, 0x0 }, - { 0xA, 0x0 }, - { 0xB, 0x0 }, - { 0xC, 0x0 } +static const VisualContestMessage Unk_ov17_0225442C[] = { + { 0x0, 0x0 }, // unused + { VisualCompetition_Text_LetsBeginTheVisualCompetition, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_PracticeSession, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_EntryNumberOne, VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME }, + { VisualCompetition_Text_EntryNumberTwo, VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME }, + { VisualCompetition_Text_EntryNumberThree, VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME }, + { VisualCompetition_Text_EntryNumberFour, VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME }, + { VisualCompetition_Text_DanceCompetitionIsNext, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty1, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty2, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty3, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty4, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty5, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty6, VISUAL_CONTEST_MESSAGE_FORMAT_NONE }, + { VisualCompetition_Text_Empty7, VISUAL_CONTEST_MESSAGE_FORMAT_NONE } }; void include_ov17_022476F8(void); @@ -176,18 +187,18 @@ void ov17_02247918(UnkStruct_ov17_02247A48 *param0) param0->unk_0C.unk_18 = NULL; } -static void ov17_0224792C(UnkStruct_ov17_02247A48 *param0, int param1, const UnkStruct_ov17_0224792C *param2) +static void ov17_VisualContest_FormatString(UnkStruct_ov17_02247A48 *param0, enum VisualContestMessageFormatting stringTemplateFormatting, const UnkStruct_ov17_0224792C *param2) { - if (param1 != 0) { + if (stringTemplateFormatting != 0) { GF_ASSERT(param2 != NULL); } - switch (param1) { - case 0: + switch (stringTemplateFormatting) { + case VISUAL_CONTEST_MESSAGE_FORMAT_NONE: break; - case 1: - StringTemplate_SetString(param0->unk_0C.unk_3C, 0, param0->unk_00->unk_00.unk_D8[param2->unk_00], param0->unk_00->unk_00.unk_F8[param2->unk_00], 1, GAME_LANGUAGE); - StringTemplate_SetNickname(param0->unk_0C.unk_3C, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->unk_00[param2->unk_00])); + case VISUAL_CONTEST_MESSAGE_FORMAT_STRING_NICKNAME: + StringTemplate_SetString(param0->unk_0C.unk_3C, 0, param0->unk_00->unk_00.trainerNames[param2->contestantID], param0->unk_00->unk_00.trainerGenders[param2->contestantID], 1, GAME_LANGUAGE); + StringTemplate_SetNickname(param0->unk_0C.unk_3C, 1, Pokemon_GetBoxPokemon(param0->unk_0C.unk_00->contestMons[param2->contestantID])); break; default: GF_ASSERT(FALSE); @@ -195,37 +206,35 @@ static void ov17_0224792C(UnkStruct_ov17_02247A48 *param0, int param1, const Unk } } -static void ov17_02247990(UnkStruct_ov17_02247A48 *param0, MessageLoader *param1, u32 param2, int param3, const UnkStruct_ov17_0224792C *param4) +static void ov17_02247990(UnkStruct_ov17_02247A48 *param0, MessageLoader *param1, u32 messageID, enum VisualContestMessageFormatting stringTemplateFormatting, const UnkStruct_ov17_0224792C *param4) { - String *v0; - int v1; + String *message; + int textDelay; if (param0->unk_00->isLinkContest == FALSE) { - v1 = Options_TextFrameDelay(param0->unk_00->options); + textDelay = Options_TextFrameDelay(param0->unk_00->options); } else { - v1 = TEXT_SPEED_FAST; + textDelay = TEXT_SPEED_FAST; } - v0 = MessageLoader_GetNewString(param1, param2); - ov17_0224792C(param0, param3, param4); + message = MessageLoader_GetNewString(param1, messageID); + ov17_VisualContest_FormatString(param0, stringTemplateFormatting, param4); - StringTemplate_Format(param0->unk_0C.unk_3C, param0->unk_0C.unk_40, v0); + StringTemplate_Format(param0->unk_0C.unk_3C, param0->unk_0C.unk_40, message); Window_FillTilemap(¶m0->unk_0C.unk_28[0], 0xff); - param0->unk_0C.unk_C4 = Text_AddPrinterWithParams(¶m0->unk_0C.unk_28[0], FONT_MESSAGE, param0->unk_0C.unk_40, 0, 0, v1, NULL); - String_Free(v0); + param0->unk_0C.unk_C4 = Text_AddPrinterWithParams(¶m0->unk_0C.unk_28[0], FONT_MESSAGE, param0->unk_0C.unk_40, 0, 0, textDelay, NULL); + String_Free(message); } void ov17_02247A08(UnkStruct_ov17_02247A48 *param0, u32 param1, const UnkStruct_ov17_0224792C *param2) { - u32 v0, v1; - GF_ASSERT(param1 < NELEMS(Unk_ov17_0225442C)); - v0 = Unk_ov17_0225442C[param1].unk_00; - v1 = Unk_ov17_0225442C[param1].unk_02; + u32 messageID = Unk_ov17_0225442C[param1].messageID; + enum VisualContestMessageFormatting stringTemplateFormatting = Unk_ov17_0225442C[param1].stringTemplateFormatting; - ov17_02247990(param0, param0->unk_0C.unk_38, v0, v1, param2); + ov17_02247990(param0, param0->unk_0C.visualCompetitionMessages, messageID, stringTemplateFormatting, param2); } int ov17_02247A3C(UnkStruct_ov17_02247A48 *param0) diff --git a/src/overlay017/ov17_02247A48.c b/src/overlay017/ov17_02247A48.c index 130be6efb2..cf5626d082 100644 --- a/src/overlay017/ov17_02247A48.c +++ b/src/overlay017/ov17_02247A48.c @@ -36,6 +36,7 @@ #include "assert.h" #include "bg_window.h" #include "brightness_controller.h" +#include "contest.h" #include "graphics.h" #include "heap.h" #include "palette.h" @@ -47,7 +48,6 @@ #include "sys_task.h" #include "sys_task_manager.h" #include "system.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" static int ov17_02247A88(UnkStruct_ov17_0224F30C *param0, void *param1, int param2, void *param3); @@ -150,9 +150,9 @@ void ov17_02247A48(UnkStruct_ov17_02247A48 *param0) v0.unk_00 = Unk_ov17_02254488; v0.unk_04 = NELEMS(Unk_ov17_02254488); - v0.unk_06 = param0->unk_00->unk_00.unk_113; + v0.playerContestantID = param0->unk_00->unk_00.playerContestantID; v0.unk_08 = param0->unk_00->unk_00.unk_10C; - v0.unk_07 = param0->unk_00->isLinkContest; + v0.isLinkContest = param0->unk_00->isLinkContest; ov17_0224F18C(¶m0->unk_4F8, &v0); } @@ -189,7 +189,7 @@ static void ov17_02247AC4(UnkStruct_ov17_0224F30C *param0, void *param1, const U v0->unk_F14 = 1; - if (sub_02094EDC(v0->unk_00) == 0) { + if (sub_02094EDC(v0->unk_00) == FALSE) { ov17_0224F26C(param0, param2, NULL, 0); } } @@ -224,7 +224,7 @@ static void ov17_02247B00(UnkStruct_ov17_0224F30C *param0, void *param1, const U } } - v3 = Pokemon_DPSpriteYOffset(v0->unk_0C.unk_00->unk_00[v1->unk_00], 2); + v3 = Pokemon_DPSpriteYOffset(v0->unk_0C.unk_00->contestMons[v1->unk_00], 2); { UnkStruct_ov22_0225AF8C v5; @@ -268,7 +268,7 @@ static void ov17_02247C5C(SysTask *param0, void *param1) break; case 1: G2_SetWnd0InsidePlane(GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | GX_WND_PLANEMASK_OBJ, 1); - v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_11], 2); + v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v0->unk_11], 2); ov22_0225B158(v0->unk_00->unk_F18[v0->unk_11].unk_00, v0->unk_00->unk_F18[v0->unk_11].unk_04, v0->unk_00->unk_F18[v0->unk_11].unk_08, v1); ov22_0225B074(v0->unk_00->unk_F18[v0->unk_11].unk_00, 1); v0->unk_10++; @@ -333,7 +333,7 @@ static void ov17_02247DC8(SysTask *param0, void *param1) v0->unk_10++; break; case 1: - v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_11], 2); + v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v0->unk_11], 2); v0->unk_18 += 0x100; if (v0->unk_18 >= ((96 - 32) << 8)) { @@ -442,16 +442,16 @@ static void ov17_02247F8C(SysTask *param0, void *param1) { s16 v2, v3, v4, v5; - v4 = sub_02094E98(v0->unk_00->unk_00) % ((256 - 32 - 32) / 2); - v5 = sub_02094E98(v0->unk_00->unk_00) % ((192 - 32 - 32) / 2); + v4 = Contest_GetRNGNext(v0->unk_00->unk_00) % ((256 - 32 - 32) / 2); + v5 = Contest_GetRNGNext(v0->unk_00->unk_00) % ((192 - 32 - 32) / 2); - if (sub_02094E98(v0->unk_00->unk_00) & 1) { + if (Contest_GetRNGNext(v0->unk_00->unk_00) & 1) { v2 = 128 + v4; } else { v2 = 128 - v4; } - if (sub_02094E98(v0->unk_00->unk_00) & 1) { + if (Contest_GetRNGNext(v0->unk_00->unk_00) & 1) { v3 = 96 + v5; } else { v3 = 96 - v5; @@ -459,7 +459,7 @@ static void ov17_02247F8C(SysTask *param0, void *param1) if (v0->unk_13 > 0) { if ((((v0->unk_16 < 128) && (v2 < 128)) || ((v0->unk_16 > 128) && (v2 > 128))) && (((v0->unk_18 < 96) && (v3 < 96)) || ((v0->unk_18 > 96) && (v3 > 96)))) { - if (sub_02094E98(v0->unk_00->unk_00) & 1) { + if (Contest_GetRNGNext(v0->unk_00->unk_00) & 1) { if (v2 < 128) { v2 = 128 + v4; } else { @@ -527,7 +527,7 @@ static void ov17_0224814C(UnkStruct_ov17_0224F30C *param0, void *param1, const U static void ov17_02248198(SysTask *param0, void *param1) { UnkStruct_ov17_02248198 *v0 = param1; - int v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_11], 2); + int monYOffset = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v0->unk_11], 2); switch (v0->unk_10) { case 0: @@ -542,7 +542,7 @@ static void ov17_02248198(SysTask *param0, void *param1) v0->unk_10++; } - ov22_0225B158(v0->unk_00->unk_F18[v0->unk_11].unk_00, v0->unk_14 >> 8, v0->unk_18 >> 8, v1); + ov22_0225B158(v0->unk_00->unk_F18[v0->unk_11].unk_00, v0->unk_14 >> 8, v0->unk_18 >> 8, monYOffset); break; default: ov22_0225B020(v0->unk_00->unk_F18[v0->unk_11].unk_00); @@ -578,7 +578,7 @@ static void ov17_022482B0(SysTask *param0, void *param1) { UnkStruct_ov17_022482B0 *v0 = param1; - switch (v0->unk_10) { + switch (v0->state) { case 0: if (v0->unk_14 > 0) { @@ -639,7 +639,7 @@ static void ov17_022482B0(SysTask *param0, void *param1) v0->unk_14 = 0; if (v0->unk_11 >= NELEMS(Unk_ov17_02254468)) { - v0->unk_10++; + v0->state++; } } break; @@ -675,7 +675,7 @@ static void ov17_02248464(SysTask *param0, void *param1) { UnkStruct_ov17_02248464 *v0 = param1; - switch (v0->unk_10) { + switch (v0->state) { case 0: if (v0->unk_14 > 0) { @@ -742,7 +742,7 @@ static void ov17_02248464(SysTask *param0, void *param1) v0->unk_14 = 0; if (v0->unk_11 >= NELEMS(Unk_ov17_02254468)) { - v0->unk_10++; + v0->state++; } } @@ -781,18 +781,18 @@ static void ov17_02248648(SysTask *param0, void *param1) { UnkStruct_ov17_02248744 *v0 = param1; - switch (v0->unk_10) { + switch (v0->state) { case 0: ov17_022478D0(v0->unk_00, v0->unk_11); v0->unk_14 = PokemonSprite_GetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_X_CENTER) * 0x100; v0->unk_18 = PokemonSprite_GetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_Y_CENTER) * 0x100; - v0->unk_10++; + v0->state++; case 1: v0->unk_14 -= 0x400; if (v0->unk_14 <= (230 * 0x100)) { v0->unk_14 = 230 * 0x100; - v0->unk_10++; + v0->state++; } PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_X_CENTER, v0->unk_14 / 0x100); @@ -832,18 +832,18 @@ static void ov17_02248744(SysTask *param0, void *param1) { UnkStruct_ov17_02248744 *v0 = param1; - switch (v0->unk_10) { + switch (v0->state) { case 0: GF_ASSERT(v0->unk_00->unk_0C.unk_18 != NULL); v0->unk_14 = PokemonSprite_GetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_X_CENTER) * 0x100; v0->unk_18 = PokemonSprite_GetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_Y_CENTER) * 0x100; - v0->unk_10++; + v0->state++; case 1: v0->unk_14 += 0x400; if (v0->unk_14 >= (320 * 0x100)) { v0->unk_14 = 320 * 0x100; - v0->unk_10++; + v0->state++; } PokemonSprite_SetAttribute(v0->unk_00->unk_0C.unk_18, MON_SPRITE_X_CENTER, v0->unk_14 / 0x100); @@ -878,9 +878,9 @@ static void ov17_022487FC(UnkStruct_ov17_0224F30C *param0, void *param1, const U v2->unk_11 = v1->unk_00; v2->unk_2C.unk_00 = v0; v2->unk_38.unk_00 = v0; - v2->unk_38.unk_0E = v1->unk_00; + v2->unk_38.contestantID = v1->unk_00; v2->unk_48.unk_00 = v0; - v2->unk_14.unk_10 = v0->unk_0C.unk_00->unk_00[v1->unk_00]; + v2->unk_14.mon = v0->unk_0C.unk_00->contestMons[v1->unk_00]; SysTask_Start(ov17_02248860, v2, 30000); } @@ -889,7 +889,7 @@ static void ov17_02248860(SysTask *param0, void *param1) { UnkStruct_ov17_02248860 *v0 = param1; - switch (v0->unk_10) { + switch (v0->state) { case 0: SysTask_Start(ov17_02248A24, &v0->unk_2C, (30000 + 10)); SysTask_Start(ov17_02248BE0, &v0->unk_48, (30000 + 10)); @@ -898,30 +898,30 @@ static void ov17_02248860(SysTask *param0, void *param1) UnkStruct_ov22_0225AF8C v1; int v2; - v2 = Pokemon_DPSpriteYOffset(v0->unk_38.unk_00->unk_0C.unk_00->unk_00[v0->unk_38.unk_0E], 2); + v2 = Pokemon_DPSpriteYOffset(v0->unk_38.unk_00->unk_0C.unk_00->contestMons[v0->unk_38.contestantID], 2); MI_CpuClear8(&v1, sizeof(UnkStruct_ov22_0225AF8C)); v1.heapID = HEAP_ID_22; v1.unk_04 = 128; v1.unk_08 = (96 - 32) + v2; - v0->unk_38.unk_00->unk_F18[v0->unk_38.unk_0E].unk_00 = ov22_0225AFD4(&v1, v0->unk_38.unk_00->unk_00->unk_00.unk_E8[v0->unk_38.unk_0E]); + v0->unk_38.unk_00->unk_F18[v0->unk_38.contestantID].unk_00 = ov22_0225AFD4(&v1, v0->unk_38.unk_00->unk_00->unk_00.unk_E8[v0->unk_38.contestantID]); - ov22_0225B074(v0->unk_38.unk_00->unk_F18[v0->unk_38.unk_0E].unk_00, 0); + ov22_0225B074(v0->unk_38.unk_00->unk_F18[v0->unk_38.contestantID].unk_00, 0); } - v0->unk_10++; + v0->state++; break; case 1: if (v0->unk_2C.unk_09 == 1) { SysTask_Start(ov17_022489C8, &v0->unk_14, (30000 + 10)); SysTask_Start(ov17_02248AA4, &v0->unk_38, (30000 + 10)); - v0->unk_10++; + v0->state++; } break; case 2: if ((v0->unk_14.unk_15 == 1) && (v0->unk_38.unk_0D == 1) && (v0->unk_48.unk_0D == 1)) { Sound_PlayEffect(SEQ_SE_DP_CON_007); - v0->unk_10++; + v0->state++; } break; default: @@ -932,31 +932,29 @@ static void ov17_02248860(SysTask *param0, void *param1) } } -static void ov17_02248990(SPLEmitter *param0) +static void Contest_SetEmitterPos(SPLEmitter *emitter) { - { - VecFx32 v0 = { 0, 0, 0 }; - SPLEmitter_SetPos(param0, &v0); - } + VecFx32 v0 = { 0, 0, 0 }; + SPLEmitter_SetPos(emitter, &v0); } static void ov17_022489C8(SysTask *param0, void *param1) { UnkStruct_ov17_022489C8 *v0 = param1; - switch (v0->unk_14) { + switch (v0->state) { case 0: v0->unk_00.unk_00 = 0; - v0->unk_00.unk_08 = v0->unk_10; + v0->unk_00.unk_08 = v0->mon; v0->unk_0C = ov12_02236004(HEAP_ID_22, &v0->unk_00); ov12_02236320(v0->unk_0C); - ov12_02236384(v0->unk_0C, ov17_02248990); - v0->unk_14++; + ov12_02236384(v0->unk_0C, Contest_SetEmitterPos); + v0->state++; break; case 1: if (ov12_022363C4(v0->unk_0C) == 0) { ov12_02236428(v0->unk_0C); - v0->unk_14++; + v0->state++; } break; default: @@ -990,16 +988,16 @@ static void ov17_02248A24(SysTask *param0, void *param1) v1.paletteSys = v0->unk_00->unk_0C.unk_44; v1.bgPrio = 1; - v0->unk_04 = ov12_02237728(&v1); + v0->ballRotation = ov12_02237728(&v1); } v0->unk_08++; break; case 2: - if (ov12_022377F8(v0->unk_04) == 1) { + if (ov12_022377F8(v0->ballRotation) == 1) { break; } default: - ov12_0223783C(v0->unk_04); + ov12_0223783C(v0->ballRotation); v0->unk_09 = 1; SysTask_Done(param0); return; @@ -1010,19 +1008,18 @@ static void ov17_02248AA4(SysTask *param0, void *param1) { UnkStruct_ov17_02248AA4 *v0 = param1; s32 v1; - s32 v2, v3; - v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0E], 2); + v1 = Pokemon_DPSpriteYOffset(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], 2); switch (v0->unk_0C) { case 0: { v0->unk_04 = 0; v0->unk_08 = 0; - ov22_0225B0EC(v0->unk_00->unk_F18[v0->unk_0E].unk_00, 0, 0, FX32_ONE); + ov22_0225B0EC(v0->unk_00->unk_F18[v0->contestantID].unk_00, 0, 0, FX32_ONE); - v0->unk_00->unk_F18[v0->unk_0E].unk_04 = 128; - v0->unk_00->unk_F18[v0->unk_0E].unk_08 = (96 - 32) + 80 / 2; - ov22_0225B074(v0->unk_00->unk_F18[v0->unk_0E].unk_00, 1); + v0->unk_00->unk_F18[v0->contestantID].unk_04 = 128; + v0->unk_00->unk_F18[v0->contestantID].unk_08 = (96 - 32) + 80 / 2; + ov22_0225B074(v0->unk_00->unk_F18[v0->contestantID].unk_00, 1); } v0->unk_0C++; case 1: @@ -1034,13 +1031,13 @@ static void ov17_02248AA4(SysTask *param0, void *param1) v0->unk_08 = FX32_ONE; } - ov22_0225B0EC(v0->unk_00->unk_F18[v0->unk_0E].unk_00, v0->unk_04, v0->unk_08, FX32_ONE); - ov22_0225B158(v0->unk_00->unk_F18[v0->unk_0E].unk_00, v0->unk_00->unk_F18[v0->unk_0E].unk_04, v0->unk_00->unk_F18[v0->unk_0E].unk_08, v1); + ov22_0225B0EC(v0->unk_00->unk_F18[v0->contestantID].unk_00, v0->unk_04, v0->unk_08, FX32_ONE); + ov22_0225B158(v0->unk_00->unk_F18[v0->contestantID].unk_00, v0->unk_00->unk_F18[v0->contestantID].unk_04, v0->unk_00->unk_F18[v0->contestantID].unk_08, v1); if (v0->unk_04 >= FX32_ONE) { - v2 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0E], MON_DATA_SPECIES, NULL); - v3 = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->unk_00[v0->unk_0E], MON_DATA_FORM, NULL); - PlayCryWithParams(v0->unk_00->unk_00->unk_14C[v0->unk_0E], 0, v2, v3, 0, 127, NULL, 22); + s32 species = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_SPECIES, NULL); + s32 form = Pokemon_GetValue(v0->unk_00->unk_0C.unk_00->contestMons[v0->contestantID], MON_DATA_FORM, NULL); + PlayCryWithParams(v0->unk_00->unk_00->chatotCry[v0->contestantID], POKECRY_NORMAL, species, form, 0, 127, NULL, HEAP_ID_22); v0->unk_0C++; } break; diff --git a/src/overlay017/ov17_022492DC.c b/src/overlay017/ov17_022492DC.c index 19c081c342..76a944d74c 100644 --- a/src/overlay017/ov17_022492DC.c +++ b/src/overlay017/ov17_022492DC.c @@ -6,12 +6,12 @@ #include "struct_decls/font_oam.h" #include "struct_decls/struct_02012744_decl.h" #include "struct_defs/struct_020127E8.h" -#include "struct_defs/struct_02095C48.h" #include "overlay017/struct_ov17_0224A1EC.h" #include "bg_window.h" #include "char_transfer.h" +#include "contest.h" #include "font.h" #include "graphics.h" #include "heap.h" @@ -27,6 +27,8 @@ #include "unk_02012744.h" #include "unk_02094EDC.h" +#include "res/text/bank/contest_dance_competition.h" + typedef struct { s32 unk_00; s32 unk_04; @@ -82,7 +84,7 @@ typedef struct { } UnkStruct_ov17_02249BC4; typedef struct UnkStruct_ov17_022492DC_t { - UnkStruct_02095C48 *unk_00; + Contest *unk_00; UnkStruct_ov17_0224A1EC *unk_04; void *unk_08; SysTask *unk_0C; @@ -296,7 +298,7 @@ void ov17_02249358(BgConfig *param0) } } -void *ov17_02249380(UnkStruct_02095C48 *param0, UnkStruct_ov17_0224A1EC *param1) +void *ov17_02249380(Contest *param0, UnkStruct_ov17_0224A1EC *param1) { UnkStruct_ov17_022492DC *v0 = ov17_022492DC(); @@ -514,18 +516,18 @@ static void ov17_02249828(UnkStruct_ov17_022492DC *param0) { String *v0, *v1; u32 v2, v3; - MessageLoader *v4 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_TEXT, HEAP_ID_23); - v2 = sub_02095848(param0->unk_04->unk_00->contestRank, param0->unk_04->unk_00->unk_111, param0->unk_00->isLinkContest); - v3 = sub_020958C4(param0->unk_04->unk_00->contestType, param0->unk_04->unk_00->unk_111); - v0 = MessageLoader_GetNewString(v4, v2); - v1 = MessageLoader_GetNewString(v4, v3); + MessageLoader *contestTextMessageLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_TEXT, HEAP_ID_23); + v2 = Contest_GetContestRankTitleMessageID(param0->unk_04->unk_00->contestRank, param0->unk_04->unk_00->competitionType, param0->unk_00->isLinkContest); + v3 = Contest_GetFullContestTypeMessageID(param0->unk_04->unk_00->contestType, param0->unk_04->unk_00->competitionType); + v0 = MessageLoader_GetNewString(contestTextMessageLoader, v2); + v1 = MessageLoader_GetNewString(contestTextMessageLoader, v3); ov17_02249BC4(param0, ¶m0->unk_1C[0], v0, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33003, 128, 8 * 0x10 - 1, 1); ov17_02249BC4(param0, ¶m0->unk_1C[1], v1, FONT_SYSTEM, TEXT_COLOR(1, 2, 0), 0, 33003, 128, 8 * 0x14 - 1, 1); String_Free(v0); String_Free(v1); - MessageLoader_Free(v4); + MessageLoader_Free(contestTextMessageLoader); } static void ov17_022498E8(UnkStruct_ov17_022492DC *param0, int param1, int param2) @@ -535,18 +537,18 @@ static void ov17_022498E8(UnkStruct_ov17_022492DC *param0, int param1, int param static void ov17_022498F4(UnkStruct_ov17_022492DC *param0) { - String *v0, *v1, *v2, *v3; - MessageLoader *v4 = param0->unk_04->unk_84; + String *v0; + MessageLoader *danceMessageLoader = param0->unk_04->danceMessageLoader; - if (param0->unk_04->unk_A14[param0->unk_04->unk_00->unk_113] == 1) { - v0 = MessageLoader_GetNewString(v4, 0); + if (param0->unk_04->unk_A14[param0->unk_04->unk_00->playerContestantID] == 1) { + v0 = MessageLoader_GetNewString(danceMessageLoader, DanceCompetition_Text_Jump); } else { - v0 = MessageLoader_GetNewString(v4, 1); + v0 = MessageLoader_GetNewString(danceMessageLoader, DanceCompetition_Text_Up); } - v1 = MessageLoader_GetNewString(v4, 2); - v2 = MessageLoader_GetNewString(v4, 3); - v3 = MessageLoader_GetNewString(v4, 4); + String *v1 = MessageLoader_GetNewString(danceMessageLoader, DanceCompetition_Text_Front); + String *v2 = MessageLoader_GetNewString(danceMessageLoader, DanceCompetition_Text_Left); + String *v3 = MessageLoader_GetNewString(danceMessageLoader, DanceCompetition_Text_Right); ov17_02249BC4(param0, ¶m0->unk_1C[2], v0, FONT_SUBSCREEN, TEXT_COLOR(1, 1, 0xb), 0, 33003, 128, 24, 1); ov17_02249BC4(param0, ¶m0->unk_1C[3], v1, FONT_SUBSCREEN, TEXT_COLOR(1, 1, 0xb), 0, 33003, 128, 120, 1); diff --git a/src/overlay017/ov17_0224A0FC.c b/src/overlay017/ov17_0224A0FC.c index a770175d70..c3068042d0 100644 --- a/src/overlay017/ov17_0224A0FC.c +++ b/src/overlay017/ov17_0224A0FC.c @@ -30,6 +30,7 @@ #include "assert.h" #include "bg_window.h" +#include "contest.h" #include "game_options.h" #include "heap.h" #include "inlines.h" @@ -51,9 +52,10 @@ #include "sys_task_manager.h" #include "text.h" #include "unk_02012744.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" +#include "res/text/bank/contest_dance_competition.h" + typedef struct { UnkStruct_ov17_0224DF54 *unk_00; UnkStruct_ov17_0224B09C *unk_04; @@ -127,7 +129,7 @@ __attribute__((aligned(4))) static const u8 Unk_ov17_022549C0[] = { 0xC }; -__attribute__((aligned(4))) static const s16 Unk_ov17_022546F4[4][3] = { +__attribute__((aligned(4))) static const s16 Unk_ov17_022546F4[CONTEST_NUM_PARTICIPANTS][3] = { { 0x80, 0x60, 0xFFFFFFFFFFFFFE00 }, { 0x30, 0x28, 0xFFFFFFFFFFFFFD80 }, { 0x80, 0x28, 0xFFFFFFFFFFFFFD80 }, @@ -240,14 +242,14 @@ static const SpriteTemplate Unk_ov17_0225472C = { }; static const UnkStruct_ov17_0225470C Unk_ov17_0225470C[] = { - { 0x0, 0x0 }, - { 0x8, 0x6 }, - { 0x14, 0x1 }, - { 0xB, 0x0 }, - { 0x9, 0x3 }, - { 0xA, 0x3 }, - { 0x12, 0x4 }, - { 0x13, 0x0 } + { DanceCompetition_Text_Jump, 0x0 }, + { DanceCompetition_Text_CompetitionIsReady, 0x6 }, + { DanceCompetition_Text_EveryoneHereForPracticeContest, 0x1 }, + { DanceCompetition_Text_Unused, 0x0 }, + { DanceCompetition_Text_PerformStepsAsMainDancer, 0x3 }, + { DanceCompetition_Text_CopyPokemonBeforeYou, 0x3 }, + { DanceCompetition_Text_AnnounceLeadingMon, 0x4 }, + { DanceCompetition_Text_ThanksForJoiningPracticeContest, 0x0 } }; __attribute__((aligned(4))) static const s32 Unk_ov17_02254938[(16 * 2) + 1] = { @@ -319,51 +321,51 @@ static const s32 *const Unk_ov17_022546C4[] = { Unk_ov17_022548D4 }; -s16 ov17_0224A0FC(int param0) +s16 ov17_0224A0FC(int contestantID) { - return Unk_ov17_022546F4[param0][0]; + return Unk_ov17_022546F4[contestantID][0]; } -s16 ov17_0224A10C(int param0) +s16 ov17_0224A10C(int contestantID) { - return Unk_ov17_022546F4[param0][1]; + return Unk_ov17_022546F4[contestantID][1]; } -s16 ov17_0224A120(int param0) +s16 ov17_0224A120(int contestantID) { - return Unk_ov17_022546F4[param0][2]; + return Unk_ov17_022546F4[contestantID][2]; } void ov17_0224A134(UnkStruct_ov17_0224DF54 *param0) { - int v0; + int i; UnkStruct_ov22_0225AF8C v1; int v2; - for (v0 = 0; v0 < 4; v0++) { - GF_ASSERT(param0->unk_14.pokemonSpriteDataArray[v0].tiles == NULL); + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + GF_ASSERT(param0->unk_14.pokemonSpriteDataArray[i].tiles == NULL); } MI_CpuClear8(&v1, sizeof(UnkStruct_ov22_0225AF8C)); v1.heapID = HEAP_ID_23; - for (v0 = 0; v0 < 4; v0++) { + for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { int v3; - v3 = param0->unk_A3C.unk_05[v0]; - v2 = Pokemon_DPSpriteYOffset(param0->unk_00->unk_00.unk_00[v3], 2); + v3 = param0->unk_A3C.unk_05[i]; + v2 = Pokemon_DPSpriteYOffset(param0->unk_00->unk_00.contestMons[v3], 2); - v1.unk_04 = Unk_ov17_022546F4[v0][0]; - v1.unk_08 = Unk_ov17_022546F4[v0][1] + v2; + v1.unk_04 = Unk_ov17_022546F4[i][0]; + v1.unk_08 = Unk_ov17_022546F4[i][1] + v2; param0->unk_14.unk_04[v3].unk_04 = v1.unk_04; param0->unk_14.unk_04[v3].unk_08 = v1.unk_08; - param0->unk_14.unk_04[v3].unk_0C = Unk_ov17_022546F4[v0][2]; + param0->unk_14.unk_04[v3].unk_0C = Unk_ov17_022546F4[i][2]; param0->unk_14.unk_04[v3].unk_00 = ov22_0225AFD4(&v1, param0->unk_00->unk_00.unk_E8[v3]); ov22_0225B100(param0->unk_14.unk_04[v3].unk_00, param0->unk_14.unk_04[v3].unk_04, param0->unk_14.unk_04[v3].unk_08); - if (v0 > 0) { + if (i > 0) { ov22_0225B07C(param0->unk_14.unk_04[v3].unk_00, 0); ov22_0225B1AC(param0->unk_14.unk_04[v3].unk_00, -100); } @@ -630,26 +632,25 @@ void ov17_0224A650(UnkStruct_ov17_0224A1EC *param0) void ov17_0224A674(UnkStruct_ov17_0224A1EC *param0) { int v0; - String *v1, *v2, *v3; - v1 = MessageLoader_GetNewString(param0->unk_84, 5); - v2 = MessageLoader_GetNewString(param0->unk_84, 6); - v3 = MessageLoader_GetNewString(param0->unk_84, 7); + String *excellent = MessageLoader_GetNewString(param0->danceMessageLoader, DanceCompetition_Text_Excellent); + String *good = MessageLoader_GetNewString(param0->danceMessageLoader, DanceCompetition_Text_Good); + String *miss = MessageLoader_GetNewString(param0->danceMessageLoader, DanceCompetition_Text_Miss); for (v0 = 0; v0 < 3; v0++) { - ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[0][v0], v1, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); + ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[0][v0], excellent, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); sub_020129D0(param0->unk_96C[0][v0].unk_00, 0); - ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[1][v0], v2, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); + ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[1][v0], good, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); sub_020129D0(param0->unk_96C[1][v0].unk_00, 0); - ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[2][v0], v3, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); + ov17_0223F1E8(HEAP_ID_23, param0->unk_60, param0->unk_5C, param0->unk_94, ¶m0->unk_96C[2][v0], miss, FONT_SYSTEM, TEXT_COLOR(0xb, 0xc, 0), 0, 33001, 0, 0, 1, 1, 12); sub_020129D0(param0->unk_96C[2][v0].unk_00, 0); } - String_Free(v1); - String_Free(v2); - String_Free(v3); + String_Free(excellent); + String_Free(good); + String_Free(miss); } void ov17_0224A7B8(UnkStruct_ov17_0224A1EC *param0) @@ -796,7 +797,7 @@ static void ov17_0224AA68(SysTask *param0, void *param1) UnkStruct_ov17_0224DF54 *v0 = param1; int v1, v2, v3; - v3 = v0->unk_00->unk_00.unk_113; + v3 = v0->unk_00->unk_00.playerContestantID; v1 = v0->unk_14.unk_04[v3].unk_04; v2 = v0->unk_14.unk_04[v3].unk_08; @@ -819,17 +820,15 @@ void ov17_0224AAE4(SpriteManager *param0) void ov17_0224AB08(UnkStruct_ov17_0224A1EC *param0, SpriteSystem *param1, SpriteManager *param2) { - int v0; - - for (v0 = 0; v0 < 4; v0++) { - param0->unk_200[v0].unk_04 = SpriteSystem_NewSprite(param1, param2, &Unk_ov17_02254830); - Sprite_TickFrame(param0->unk_200[v0].unk_04->sprite); - ManagedSprite_SetAffineOverwriteMode(param0->unk_200[v0].unk_04, AFFINE_OVERWRITE_MODE_NORMAL); - param0->unk_200[v0].unk_13 = v0; - param0->unk_200[v0].unk_0C = ¶m0->unk_04[v0]; - param0->unk_200[v0].unk_14 = Pokemon_DPSpriteYOffset(param0->unk_00->unk_00[v0], 2); - ov17_0224AC78(¶m0->unk_200[v0], 1, 1); - param0->unk_200[v0].unk_00 = SysTask_Start(ov17_0224ABFC, ¶m0->unk_200[v0], (((30000 + 10000) + 100) + 1000)); + for (int i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { + param0->unk_200[i].unk_04 = SpriteSystem_NewSprite(param1, param2, &Unk_ov17_02254830); + Sprite_TickFrame(param0->unk_200[i].unk_04->sprite); + ManagedSprite_SetAffineOverwriteMode(param0->unk_200[i].unk_04, AFFINE_OVERWRITE_MODE_NORMAL); + param0->unk_200[i].unk_13 = i; + param0->unk_200[i].unk_0C = ¶m0->unk_04[i]; + param0->unk_200[i].unk_14 = Pokemon_DPSpriteYOffset(param0->unk_00->contestMons[i], 2); + ov17_0224AC78(¶m0->unk_200[i], 1, 1); + param0->unk_200[i].unk_00 = SysTask_Start(ov17_0224ABFC, ¶m0->unk_200[i], (((30000 + 10000) + 100) + 1000)); } ov17_0224ABDC(param0, 0); @@ -965,7 +964,7 @@ BOOL ov17_0224AD70(UnkStruct_ov17_0224DF54 *param0, int param1, int param2) Sprite_SetAnimateFlag(v0->sprite, 1); Sprite_TickFrame(v0->sprite); - v1 = sub_02094E98(param0->unk_00); + v1 = Contest_GetRNGNext(param0->unk_00); v2 = 0x500; CP_SetDiv32_32(v1, v2); @@ -980,7 +979,7 @@ BOOL ov17_0224AD70(UnkStruct_ov17_0224DF54 *param0, int param1, int param2) v3->unk_10 = -v3->unk_10; } - v1 = sub_02094E98(param0->unk_00); + v1 = Contest_GetRNGNext(param0->unk_00); v2 = 0xf00; CP_SetDivImm32_32(v1, v2); @@ -1163,9 +1162,9 @@ static BOOL ov17_0224B0E8(UnkStruct_ov17_0224DF54 *param0, int param1, const Unk if ((param2->unk_07 == 0) && (v0 == 1)) { v1 += 256 / 2 - v5; - v2 = Unk_ov17_022549BC[param0->unk_A3C.unk_05[param0->unk_00->unk_00.unk_113]]; + v2 = Unk_ov17_022549BC[param0->unk_A3C.unk_05[param0->unk_00->unk_00.playerContestantID]]; - ov17_0224A46C(¶m0->unk_14, param0->unk_14.unk_58, param0->unk_14.unk_5C, 2, param2->unk_03, v1, v2, param0->unk_A3C.unk_05[param0->unk_00->unk_00.unk_113]); + ov17_0224A46C(¶m0->unk_14, param0->unk_14.unk_58, param0->unk_14.unk_5C, 2, param2->unk_03, v1, v2, param0->unk_A3C.unk_05[param0->unk_00->unk_00.playerContestantID]); } return 1; @@ -1177,7 +1176,7 @@ void ov17_0224B20C(UnkStruct_ov17_0224DF54 *param0, const UnkStruct_ov17_0224EDE v1 = param1->unk_02; - if (param0->unk_00->unk_00.unk_113 == param0->unk_00->unk_00.unk_10C) { + if (param0->unk_00->unk_00.playerContestantID == param0->unk_00->unk_00.unk_10C) { (void)0; } @@ -1248,12 +1247,12 @@ void ov17_0224B20C(UnkStruct_ov17_0224DF54 *param0, const UnkStruct_ov17_0224EDE } ov17_0224A7E0(¶m0->unk_14, param0->unk_14.unk_58, param0->unk_14.unk_5C, param1->unk_04, param1->unk_02, param1->unk_07); - ov17_0224B0E8(param0, param0->unk_00->unk_00.unk_113, param1); + ov17_0224B0E8(param0, param0->unk_00->unk_00.playerContestantID, param1); ov17_0224B528(param0, param1->unk_02, param1->unk_07, param1->unk_03, param1->unk_08_0, param0->unk_A3C.unk_0A[v1]); ov17_0224AF3C(param0, param1->unk_02, param1->unk_04, param1->unk_07); ov17_0224C89C(param0, param1); - if (param1->unk_02 == param0->unk_00->unk_00.unk_113) { + if (param1->unk_02 == param0->unk_00->unk_00.playerContestantID) { if (param1->unk_04 == 0) { ov17_0224CB00(param0, param1->unk_06, 1); } else if (param1->unk_04 == 1) { @@ -1283,7 +1282,7 @@ void ov17_0224B20C(UnkStruct_ov17_0224DF54 *param0, const UnkStruct_ov17_0224EDE Sound_PlayEffect(SEQ_SE_DP_CON_027_3); } - if ((param0->unk_14.unk_A2C == 0) || ((param0->unk_14.unk_A2C > 0) && ((param1->unk_07 == 0) || (param1->unk_02 == param0->unk_00->unk_00.unk_113)))) { + if ((param0->unk_14.unk_A2C == 0) || ((param0->unk_14.unk_A2C > 0) && ((param1->unk_07 == 0) || (param1->unk_02 == param0->unk_00->unk_00.playerContestantID)))) { switch (param1->unk_04) { case 0: if (param0->unk_14.unk_A1D[param1->unk_02] == param0->unk_A3C.unk_2E) { @@ -1866,7 +1865,7 @@ static void ov17_0224BF58(UnkStruct_ov17_0224BE50 *param0) static void ov17_0224C0C0(UnkStruct_ov17_0224DF54 *param0, int param1, const UnkStruct_ov17_0224C0C0 *param2) { - u32 v0; + u32 messageID; if (param1 != 0) { GF_ASSERT(param2 != NULL); @@ -1876,29 +1875,29 @@ static void ov17_0224C0C0(UnkStruct_ov17_0224DF54 *param0, int param1, const Unk case 0: break; case 1: - StringTemplate_SetNickname(param0->unk_14.unk_88, 0, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_14.unk_88, 0, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->contestMons[param2->contestantID])); break; case 2: - v0 = sub_02095848(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.unk_111, param0->unk_00->isLinkContest); - StringTemplate_SetContestRankName(param0->unk_14.unk_88, 0, v0); + messageID = Contest_GetContestRankTitleMessageID(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.competitionType, param0->unk_00->isLinkContest); + StringTemplate_SetContestRankName(param0->unk_14.unk_88, 0, messageID); break; case 3: StringTemplate_SetNumber(param0->unk_14.unk_88, 0, param2->unk_04, 1, 0, 1); break; case 4: - StringTemplate_SetString(param0->unk_14.unk_88, 0, param0->unk_00->unk_00.unk_D8[param2->unk_00], param0->unk_00->unk_00.unk_F8[param2->unk_00], 1, GAME_LANGUAGE); - StringTemplate_SetNickname(param0->unk_14.unk_88, 1, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetString(param0->unk_14.unk_88, 0, param0->unk_00->unk_00.trainerNames[param2->contestantID], param0->unk_00->unk_00.trainerGenders[param2->contestantID], 1, GAME_LANGUAGE); + StringTemplate_SetNickname(param0->unk_14.unk_88, 1, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->contestMons[param2->contestantID])); break; case 5: - StringTemplate_SetNickname(param0->unk_14.unk_88, 0, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetNickname(param0->unk_14.unk_88, 0, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->contestMons[param2->contestantID])); StringTemplate_SetNumber(param0->unk_14.unk_88, 1, param2->unk_04, 1, 0, 1); break; case 6: - v0 = sub_02095848(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.unk_111, param0->unk_00->isLinkContest); - StringTemplate_SetContestRankName(param0->unk_14.unk_88, 0, v0); + messageID = Contest_GetContestRankTitleMessageID(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.competitionType, param0->unk_00->isLinkContest); + StringTemplate_SetContestRankName(param0->unk_14.unk_88, 0, messageID); StringTemplate_SetNumber(param0->unk_14.unk_88, 1, param2->unk_04, 1, 0, 1); - StringTemplate_SetString(param0->unk_14.unk_88, 2, param0->unk_00->unk_00.unk_D8[param2->unk_00], param0->unk_00->unk_00.unk_F8[param2->unk_00], 1, GAME_LANGUAGE); - StringTemplate_SetNickname(param0->unk_14.unk_88, 3, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->unk_00[param2->unk_00])); + StringTemplate_SetString(param0->unk_14.unk_88, 2, param0->unk_00->unk_00.trainerNames[param2->contestantID], param0->unk_00->unk_00.trainerGenders[param2->contestantID], 1, GAME_LANGUAGE); + StringTemplate_SetNickname(param0->unk_14.unk_88, 3, Pokemon_GetBoxPokemon(param0->unk_14.unk_00->contestMons[param2->contestantID])); break; default: GF_ASSERT(FALSE); @@ -1906,37 +1905,37 @@ static void ov17_0224C0C0(UnkStruct_ov17_0224DF54 *param0, int param1, const Unk } } -static void ov17_0224C244(UnkStruct_ov17_0224DF54 *param0, MessageLoader *param1, u32 param2, int param3, const UnkStruct_ov17_0224C0C0 *param4) +static void ov17_0224C244(UnkStruct_ov17_0224DF54 *param0, MessageLoader *messageLoader, u32 messageID, int param3, const UnkStruct_ov17_0224C0C0 *param4) { - String *v0; - int v1; + String *message; + int textDelay; if (param0->unk_00->isLinkContest == FALSE) { - v1 = Options_TextFrameDelay(param0->unk_00->options); + textDelay = Options_TextFrameDelay(param0->unk_00->options); } else { - v1 = TEXT_SPEED_FAST; + textDelay = TEXT_SPEED_FAST; } - v0 = MessageLoader_GetNewString(param1, param2); + message = MessageLoader_GetNewString(messageLoader, messageID); ov17_0224C0C0(param0, param3, param4); - StringTemplate_Format(param0->unk_14.unk_88, param0->unk_14.unk_8C, v0); + StringTemplate_Format(param0->unk_14.unk_88, param0->unk_14.danceMessage, message); Window_FillTilemap(¶m0->unk_14.unk_64[0], 0xff); - param0->unk_14.unk_A18 = Text_AddPrinterWithParams(¶m0->unk_14.unk_64[0], FONT_MESSAGE, param0->unk_14.unk_8C, 0, 0, v1, NULL); - String_Free(v0); + param0->unk_14.unk_A18 = Text_AddPrinterWithParams(¶m0->unk_14.unk_64[0], FONT_MESSAGE, param0->unk_14.danceMessage, 0, 0, textDelay, NULL); + String_Free(message); } void ov17_0224C2CC(UnkStruct_ov17_0224DF54 *param0, u32 param1, const UnkStruct_ov17_0224C0C0 *param2) { - u32 v0, v1; + u32 messageID, v1; GF_ASSERT(param1 < NELEMS(Unk_ov17_0225470C)); - v0 = Unk_ov17_0225470C[param1].unk_00; + messageID = Unk_ov17_0225470C[param1].danceMessageID; v1 = Unk_ov17_0225470C[param1].unk_02; - ov17_0224C244(param0, param0->unk_14.unk_84, v0, v1, param2); + ov17_0224C244(param0, param0->unk_14.danceMessageLoader, messageID, v1, param2); } int ov17_0224C300(UnkStruct_ov17_0224DF54 *param0) @@ -2061,18 +2060,17 @@ void ov17_0224C54C(UnkStruct_ov17_0224C384 *param0, int param1) ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_04, v1, (0x12 * 8), (256 * FX32_ONE)); } -int ov17_0224C57C(int param0) +int ov17_0224C57C(enum PokemonContestRank contestRank) { const u8 v0[] = { 3, 3, 4, 4 }; GF_ASSERT(NELEMS(v0) - 1 == 3); - return v0[param0]; + return v0[contestRank]; } void ov17_0224C5A0(UnkStruct_ov17_0224DF54 *param0, u32 param1, const UnkStruct_ov17_0224C0C0 *param2) { - u32 v0, v1; - String *v2; + u32 v1; GF_ASSERT(param1 < NELEMS(Unk_ov17_0225470C)); @@ -2083,16 +2081,16 @@ void ov17_0224C5A0(UnkStruct_ov17_0224DF54 *param0, u32 param1, const UnkStruct_ Window_DrawMessageBoxWithScrollCursor(¶m0->unk_14.unk_64[1], 1, 1, 14); Bg_ScheduleTilemapTransfer(param0->unk_14.unk_60, 1); - v0 = Unk_ov17_0225470C[param1].unk_00; + u32 messageID = Unk_ov17_0225470C[param1].danceMessageID; v1 = Unk_ov17_0225470C[param1].unk_02; - v2 = MessageLoader_GetNewString(param0->unk_14.unk_84, v0); + String *message = MessageLoader_GetNewString(param0->unk_14.danceMessageLoader, messageID); ov17_0224C0C0(param0, v1, param2); - StringTemplate_Format(param0->unk_14.unk_88, param0->unk_14.unk_8C, v2); + StringTemplate_Format(param0->unk_14.unk_88, param0->unk_14.danceMessage, message); Window_FillTilemap(¶m0->unk_14.unk_64[1], 0xff); - Text_AddPrinterWithParams(¶m0->unk_14.unk_64[1], FONT_MESSAGE, param0->unk_14.unk_8C, 0, 0, TEXT_SPEED_INSTANT, NULL); - String_Free(v2); + Text_AddPrinterWithParams(¶m0->unk_14.unk_64[1], FONT_MESSAGE, param0->unk_14.danceMessage, 0, 0, TEXT_SPEED_INSTANT, NULL); + String_Free(message); param0->unk_1B25 = 1; } diff --git a/src/overlay017/ov17_0224CFB8.c b/src/overlay017/ov17_0224CFB8.c index cc4b91f9a7..65246eccc9 100644 --- a/src/overlay017/ov17_0224CFB8.c +++ b/src/overlay017/ov17_0224CFB8.c @@ -134,9 +134,9 @@ void ov17_0224CFB8(UnkStruct_ov17_0224DF54 *param0) v0.unk_00 = Unk_ov17_022549E4; v0.unk_04 = NELEMS(Unk_ov17_022549E4); - v0.unk_06 = param0->unk_00->unk_00.unk_113; + v0.playerContestantID = param0->unk_00->unk_00.playerContestantID; v0.unk_08 = param0->unk_00->unk_00.unk_10C; - v0.unk_07 = param0->unk_00->isLinkContest; + v0.isLinkContest = param0->unk_00->isLinkContest; ov17_0224F18C(¶m0->unk_109C, &v0); } @@ -411,7 +411,7 @@ static void ov17_0224D41C(SysTask *param0, void *param1) } break; case 4: - ov17_0224C6B0(v0->unk_00, v0->unk_00->unk_00->unk_00.unk_113, &v0->unk_11); + ov17_0224C6B0(v0->unk_00, v0->unk_00->unk_00->unk_00.playerContestantID, &v0->unk_11); v0->unk_10++; break; case 5: @@ -463,7 +463,7 @@ static void ov17_0224D558(UnkStruct_ov17_0224F30C *param0, void *param1, const U UnkStruct_ov17_0224DF54 *v0 = param1; UnkStruct_ov17_0224DF54_sub2 *v1 = param3; UnkStruct_ov17_0224D710 *v2; - int v3, v4; + int contestantID, v4; v2 = Heap_Alloc(HEAP_ID_23, sizeof(UnkStruct_ov17_0224D710)); MI_CpuClear8(v2, sizeof(UnkStruct_ov17_0224D710)); @@ -476,17 +476,17 @@ static void ov17_0224D558(UnkStruct_ov17_0224F30C *param0, void *param1, const U SysTask_Start(ov17_0224D710, v2, 30000); - for (v3 = 0; v3 < 4; v3++) { - if (v3 < v0->unk_00->unk_00.unk_117) { - v2->unk_140[v3] = ov17_0224D668(v0, 0); + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + if (contestantID < v0->unk_00->unk_00.connectionCount) { + v2->unk_140[contestantID] = ov17_0224D668(v0, 0); } else { - v2->unk_140[v3] = ov17_0224D668(v0, 1); + v2->unk_140[contestantID] = ov17_0224D668(v0, 1); } } { for (v4 = 0; v4 < 4; v4++) { - if (v2->unk_18.unk_02[v4] == v2->unk_00->unk_00->unk_00.unk_113) { + if (v2->unk_18.unk_02[v4] == v2->unk_00->unk_00->unk_00.playerContestantID) { v2->unk_00->unk_14.unk_A2C = v4; break; } @@ -495,15 +495,15 @@ static void ov17_0224D558(UnkStruct_ov17_0224F30C *param0, void *param1, const U ov17_0224DF54(v0); - for (v3 = v0->unk_00->unk_00.unk_117; v3 < 4; v3++) { + for (contestantID = v0->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { { - for (v4 = 0; v4 < 4; v4++) { - if (v2->unk_18.unk_02[v4] == v3) { + for (v4 = 0; v4 < CONTEST_NUM_PARTICIPANTS; v4++) { + if (v2->unk_18.unk_02[v4] == contestantID) { break; } } } - ov17_0224E930(&v2->unk_58[v3], v3, v4, v1->unk_14[v3], v0->unk_00->unk_00.unk_FC[v3]); + ov17_0224E930(&v2->unk_58[contestantID], contestantID, v4, v1->unk_14[contestantID], v0->unk_00->unk_00.unk_FC[contestantID]); } } @@ -556,7 +556,7 @@ static void ov17_0224D710(SysTask *param0, void *param1) u32 v4; int v5; - if (v0->unk_00->unk_00->unk_00.unk_113 == v0->unk_18.unk_00) { + if (v0->unk_00->unk_00->unk_00.playerContestantID == v0->unk_18.unk_00) { v2 = 0; } else { v2 = 1; @@ -626,14 +626,10 @@ static void ov17_0224D710(SysTask *param0, void *param1) ov17_0224DF54(v0->unk_00); - { - int v7; + v0->unk_17 = 0; - v0->unk_17 = 0; - - for (v7 = v0->unk_00->unk_00->unk_00.unk_117; v7 < 4; v7++) { - ov17_0224E958(&v0->unk_58[v7]); - } + for (int contestantID = v0->unk_00->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + ov17_0224E958(&v0->unk_58[contestantID]); } ov17_0224A580(&v0->unk_00->unk_14); @@ -682,8 +678,8 @@ static void ov17_0224D710(SysTask *param0, void *param1) } if (v1 != 0xffffffff) { - ov17_0224DE54(v0->unk_00->unk_00->unk_00.unk_113, v1, v4, v0->unk_18.unk_08, &v0->unk_18.unk_24.unk_08, &v8, NULL, v3, v0->unk_17, v0->unk_18.unk_24.unk_05, v0->unk_00->unk_A3C.unk_2F); - ov17_0224D6B0(v0->unk_140[v0->unk_00->unk_00->unk_00.unk_113], &v8); + ov17_0224DE54(v0->unk_00->unk_00->unk_00.playerContestantID, v1, v4, v0->unk_18.unk_08, &v0->unk_18.unk_24.unk_08, &v8, NULL, v3, v0->unk_17, v0->unk_18.unk_24.unk_05, v0->unk_00->unk_A3C.unk_2F); + ov17_0224D6B0(v0->unk_140[v0->unk_00->unk_00->unk_00.playerContestantID], &v8); v0->unk_17++; } } else { @@ -699,19 +695,15 @@ static void ov17_0224D710(SysTask *param0, void *param1) } if (v1 != 0xffffffff) { - ov17_0224DE54(v0->unk_00->unk_00->unk_00.unk_113, v1, v4, v0->unk_18.unk_08, &v0->unk_18.unk_24.unk_08, &v8, v0->unk_00->unk_1AD4, v3, v0->unk_17, v0->unk_18.unk_24.unk_05, v0->unk_00->unk_A3C.unk_2F); - ov17_0224D6B0(v0->unk_140[v0->unk_00->unk_00->unk_00.unk_113], &v8); + ov17_0224DE54(v0->unk_00->unk_00->unk_00.playerContestantID, v1, v4, v0->unk_18.unk_08, &v0->unk_18.unk_24.unk_08, &v8, v0->unk_00->unk_1AD4, v3, v0->unk_17, v0->unk_18.unk_24.unk_05, v0->unk_00->unk_A3C.unk_2F); + ov17_0224D6B0(v0->unk_140[v0->unk_00->unk_00->unk_00.playerContestantID], &v8); v0->unk_17++; } } } - { - int v10; - - for (v10 = v0->unk_00->unk_00->unk_00.unk_117; v10 < 4; v10++) { - ov17_0224ED8C(v5, v0->unk_00, &v0->unk_58[v10], v4, v0->unk_18.unk_0C, v0->unk_18.unk_08, &v0->unk_18.unk_24, v0->unk_140[v10]); - } + for (int contestantID = v0->unk_00->unk_00->unk_00.connectionCount; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + ov17_0224ED8C(v5, v0->unk_00, &v0->unk_58[contestantID], v4, v0->unk_18.unk_0C, v0->unk_18.unk_08, &v0->unk_18.unk_24, v0->unk_140[contestantID]); } if ((v5 == 1) && (v0->unk_12 == 0)) { @@ -1054,13 +1046,13 @@ static void ov17_0224DFF8(SysTask *param0, void *param1) } break; case 2: - for (v2 = 0; v2 < 4; v2++) { + for (v2 = 0; v2 < CONTEST_NUM_PARTICIPANTS; v2++) { v1 = v0->unk_C8.unk_02[v2]; - v0->unk_18[v1].unk_00 = v0->unk_00->unk_14.unk_00->unk_00[v1]; + v0->unk_18[v1].mon = v0->unk_00->unk_14.unk_00->contestMons[v1]; v0->unk_18[v1].unk_04 = v0->unk_00->unk_14.unk_48[v1]; v0->unk_18[v1].unk_08 = &v0->unk_00->unk_14.unk_04[v1]; v0->unk_18[v1].unk_0E = (v0->unk_00->unk_A3C.unk_24 / 10000) * 40 / 100; - v0->unk_18[v1].unk_0C = v2; + v0->unk_18[v1].contestantID = v2; if (v2 == 0) { v0->unk_18[v1].unk_0D = 3; @@ -1076,7 +1068,7 @@ static void ov17_0224DFF8(SysTask *param0, void *param1) v3.unk_04 = v0->unk_C8.unk_24.unk_05; - if (v0->unk_C8.unk_02[1] == v0->unk_00->unk_00->unk_00.unk_113) { + if (v0->unk_C8.unk_02[1] == v0->unk_00->unk_00->unk_00.playerContestantID) { ov17_0224C5A0(v0->unk_00, 4, &v3); } else { ov17_0224C5A0(v0->unk_00, 5, &v3); @@ -1128,9 +1120,9 @@ static void ov17_0224E1F4(SysTask *param0, void *param1) v0->unk_18 = v0->unk_08->unk_0C * 0x100; { - v1 = ov17_0224A0FC(v0->unk_0C) * 0x100; - v2 = ov17_0224A10C(v0->unk_0C) * 0x100; - v3 = ov17_0224A120(v0->unk_0C) * 0x100; + v1 = ov17_0224A0FC(v0->contestantID) * 0x100; + v2 = ov17_0224A10C(v0->contestantID) * 0x100; + v3 = ov17_0224A120(v0->contestantID) * 0x100; if ((v0->unk_0D == 0) || (v0->unk_0D == 4 - 1)) { if (v0->unk_0D == 0) { @@ -1176,7 +1168,7 @@ static void ov17_0224E1F4(SysTask *param0, void *param1) ov22_0225B1AC(v0->unk_08->unk_00, -100); } - v7 = Pokemon_DPSpriteYOffset(v0->unk_00, 2); + v7 = Pokemon_DPSpriteYOffset(v0->mon, 2); v0->unk_14 = (ov17_0224A10C(v0->unk_0D) + v7) * 0x100; v0->unk_18 = ov17_0224A120(v0->unk_0D) * 0x100; @@ -1195,7 +1187,7 @@ static void ov17_0224E1F4(SysTask *param0, void *param1) } if (v0->unk_28 >= v0->unk_0E) { - v7 = Pokemon_DPSpriteYOffset(v0->unk_00, 2); + v7 = Pokemon_DPSpriteYOffset(v0->mon, 2); v0->unk_10 = ov17_0224A0FC(v0->unk_0D) * 0x100; v0->unk_14 = (ov17_0224A10C(v0->unk_0D) + v7) * 0x100; v0->unk_18 = ov17_0224A120(v0->unk_0D) * 0x100; diff --git a/src/overlay017/ov17_0224E930.c b/src/overlay017/ov17_0224E930.c index 87c7adc140..61d94bef6b 100644 --- a/src/overlay017/ov17_0224E930.c +++ b/src/overlay017/ov17_0224E930.c @@ -3,6 +3,9 @@ #include #include +#include "generated/pokemon_contest_ranks.h" +#include "generated/pokemon_contest_types.h" + #include "overlay017/ov17_0223DAD0.h" #include "overlay017/ov17_0224CFB8.h" #include "overlay017/struct_ov17_0224D69C.h" @@ -11,11 +14,11 @@ #include "overlay017/struct_ov17_0224EDE0.h" #include "overlay017/struct_ov17_02253084.h" -#include "unk_020933F8.h" +#include "contest.h" -static int ov17_0224EBE0(int param0, int param1); -static int ov17_0224EC24(int param0, int param1, int param2, int param3, int param4, int param5, int param6); -static int ov17_0224ECC4(int param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7); +static int ov17_0224EBE0(int contestRank, int param1); +static int ov17_0224EC24(int contestRank, int contestType, int param2, int param3, int param4, int param5, int param6); +static int ov17_0224ECC4(int contestRank, int contestType, int param2, int param3, int param4, int param5, int param6, int param7); static void ov17_0224EDE0(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *param1, u32 param2, u32 param3, u32 param4, const UnkStruct_ov17_02253084 *param5, UnkStruct_ov17_0224D69C *param6); static void ov17_0224EE90(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *param1, u32 param2, u32 param3, u32 param4, const UnkStruct_ov17_02253084 *param5, UnkStruct_ov17_0224D69C *param6); @@ -33,11 +36,11 @@ __attribute__((aligned(4))) static const u8 Unk_ov17_02254A84[] = { 0x0 }; -void ov17_0224E930(UnkStruct_ov17_0224E958 *param0, int param1, int param2, u32 param3, int param4) +void ov17_0224E930(UnkStruct_ov17_0224E958 *param0, int contestantID, int param2, u32 param3, int param4) { MI_CpuClear8(param0, sizeof(UnkStruct_ov17_0224E958)); - param0->unk_37 = param1; + param0->unk_37 = contestantID; param0->unk_38 = param2; param0->unk_30 = param3; param0->unk_39 = param4; @@ -78,8 +81,8 @@ void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *par } switch (param0->unk_00->unk_00.contestRank) { - case 0: - case 1: + case CONTEST_RANK_NORMAL: + case CONTEST_RANK_GREAT: v8 = 0; v1 = v10 / 2 / 2; v6 = param3; @@ -98,7 +101,7 @@ void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *par v3 = 0; while (TRUE) { - v2 = sub_02094EA0(param1->unk_30, ¶m1->unk_30) % v1; + v2 = Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % v1; if (v2 == 0) { continue; @@ -112,7 +115,7 @@ void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *par continue; } - if ((v2 & 1) && ((sub_02094EA0(param1->unk_30, ¶m1->unk_30) & 0xff) < 128)) { + if ((v2 & 1) && ((Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) & 0xff) < 128)) { continue; } } @@ -140,7 +143,7 @@ void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *par for (v0 = 0; v0 < param0->unk_A3C.unk_2E; v0++) { s32 v11; - v11 = param1->unk_00_val1.unk_00[v0] + (sub_02094EA0(param1->unk_30, ¶m1->unk_30) % (2 + v4)) - (1 + v4 / 2); + v11 = param1->unk_00_val1.unk_00[v0] + (Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % (2 + v4)) - (1 + v4 / 2); if (v11 < 0) { v11 = 0; @@ -158,35 +161,35 @@ void ov17_0224E990(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E958 *par int v12; v12 = Unk_ov17_02254A84[param0->unk_00->unk_00.contestRank]; - param1->unk_00_val1.unk_20[0] = 0 + (sub_02094EA0(param1->unk_30, ¶m1->unk_30) % 4); + param1->unk_00_val1.unk_20[0] = 0 + (Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % 4); for (v0 = 1; v0 < param0->unk_A3C.unk_2E; v0++) { - if ((v0 < param0->unk_A3C.unk_2E - 1) && (v12 > sub_02094EA0(param1->unk_30, ¶m1->unk_30) % 100)) { + if ((v0 < param0->unk_A3C.unk_2E - 1) && (v12 > Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % 100)) { param1->unk_00_val1.unk_20[v0] = param1->unk_00_val1.unk_20[v0 - 1]; } else { - param1->unk_00_val1.unk_20[v0] = 0 + (sub_02094EA0(param1->unk_30, ¶m1->unk_30) % 4); + param1->unk_00_val1.unk_20[v0] = 0 + (Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % 4); } } } } -static int ov17_0224EBE0(int param0, int param1) +static int ov17_0224EBE0(int contestRank, int param1) { int v0; GF_ASSERT(NELEMS(Unk_ov17_02254A80) > param1); v0 = Unk_ov17_02254A80[param1]; - switch (param0) { - case 0: + switch (contestRank) { + case CONTEST_RANK_NORMAL: v0 *= 2; break; - case 1: + case CONTEST_RANK_GREAT: break; - case 2: + case CONTEST_RANK_ULTRA: v0 /= 2; break; - case 3: + case CONTEST_RANK_MASTER: default: v0 /= 3; break; @@ -195,7 +198,7 @@ static int ov17_0224EBE0(int param0, int param1) return v0; } -static int ov17_0224EC24(int param0, int param1, int param2, int param3, int param4, int param5, int param6) +static int ov17_0224EC24(int contestRank, int contestType, int param2, int param3, int param4, int param5, int param6) { int v0 = 0; @@ -219,23 +222,23 @@ static int ov17_0224EC24(int param0, int param1, int param2, int param3, int par v0 = Unk_ov17_02254A80[param2]; - switch (param0) { - case 0: + switch (contestRank) { + case CONTEST_RANK_NORMAL: v0 *= 2; break; - case 1: + case CONTEST_RANK_GREAT: v0 *= 2; break; - case 2: - if ((param6 == 1) && ((param1 == 2) || (param1 == 3))) { + case CONTEST_RANK_ULTRA: + if ((param6 == 1) && (contestType == CONTEST_TYPE_CUTE || contestType == CONTEST_TYPE_SMART)) { v0 = v0 * 3; } else { v0 += v0 / 2; } break; - case 3: + case CONTEST_RANK_MASTER: default: - if ((param6 == 1) && ((param1 == 2) || (param1 == 3))) { + if ((param6 == 1) && (contestType == CONTEST_TYPE_CUTE || contestType == CONTEST_TYPE_SMART)) { v0 = v0 * 2 + v0 / 2; } break; @@ -248,7 +251,7 @@ static int ov17_0224EC24(int param0, int param1, int param2, int param3, int par return v0; } -static int ov17_0224ECC4(int param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7) +static int ov17_0224ECC4(int contestRank, int contestType, int param2, int param3, int param4, int param5, int param6, int param7) { int v0 = 0; @@ -291,23 +294,23 @@ static int ov17_0224ECC4(int param0, int param1, int param2, int param3, int par } } - switch (param0) { - case 0: + switch (contestRank) { + case CONTEST_RANK_NORMAL: v0 *= 2; break; - case 1: + case CONTEST_RANK_GREAT: v0 *= 2; break; - case 2: - if ((param7 == 1) && ((param1 == 2) || (param1 == 3))) { + case CONTEST_RANK_ULTRA: + if ((param7 == 1) && (contestType == CONTEST_TYPE_CUTE || contestType == CONTEST_TYPE_SMART)) { v0 *= 2; } else { v0 += v0 / 2; } break; - case 3: + case CONTEST_RANK_MASTER: default: - if ((param7 == 1) && ((param1 == 2) || (param1 == 3))) { + if ((param7 == 1) && (contestType == CONTEST_TYPE_CUTE || contestType == CONTEST_TYPE_SMART)) { v0 += v0 / 2; } break; @@ -400,7 +403,7 @@ static void ov17_0224EE90(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E9 v6 = ov17_0224EC24(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.contestType, param1->unk_39, v1->unk_06, v10, param0->unk_A3C.unk_2F, param0->unk_1B26); v7 = ov17_0224ECC4(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.contestType, param1->unk_39, v1->unk_06, v10, v1->unk_03, v9, param0->unk_1B26); v4 = (v1->unk_06 * v2 + 10000 / 2) / 10000; - v5 = (sub_02094EA0(param1->unk_30, ¶m1->unk_30) % (2 + v6)) - (1 + v6 / 2); + v5 = (Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % (2 + v6)) - (1 + v6 / 2); if (v5 + (s32)v4 < 0) { v4 = 0; @@ -408,9 +411,9 @@ static void ov17_0224EE90(UnkStruct_ov17_0224DF54 *param0, UnkStruct_ov17_0224E9 v4 += v5; } - if ((sub_02094EA0(param1->unk_30, ¶m1->unk_30) % 100) < (0 + v6 + v7)) { + if ((Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % 100) < (0 + v6 + v7)) { do { - v8 = 0 + (sub_02094EA0(param1->unk_30, ¶m1->unk_30) % 4); + v8 = 0 + (Contest_GetSeededRNGNext(param1->unk_30, ¶m1->unk_30) % 4); } while (ov17_0224DD28(v8) == v1->unk_03); } else { v8 = ov17_0224DD5C(v1->unk_03); diff --git a/src/overlay017/ov17_0224F080.c b/src/overlay017/ov17_0224F080.c index ac7a78a8f0..ae81df5b76 100644 --- a/src/overlay017/ov17_0224F080.c +++ b/src/overlay017/ov17_0224F080.c @@ -43,20 +43,20 @@ u8 ov17_0224F0A0(int param0) return Unk_ov17_02254A88[param0]; } -enum NarcID ov17_0224F0B8(void) +enum NarcID Contest_GetContestGraphicsNarcID(void) { return NARC_INDEX_CONTEST__GRAPHIC__CONTEST_OBJ; } void ov17_0224F0BC(SpriteSystem *param0, SpriteManager *param1, NNS_G2D_VRAM_TYPE param2, int param3, u32 param4) { - SpriteSystem_LoadCharResObj(param0, param1, ov17_0224F0B8(), ov17_0224F080(param3), TRUE, param2, param4); + SpriteSystem_LoadCharResObj(param0, param1, Contest_GetContestGraphicsNarcID(), ov17_0224F080(param3), TRUE, param2, param4); } void ov17_0224F0F0(SpriteSystem *param0, SpriteManager *param1, u32 param2, u32 param3) { - SpriteSystem_LoadCellResObj(param0, param1, ov17_0224F0B8(), ov17_0224F098(), TRUE, param2); - SpriteSystem_LoadAnimResObj(param0, param1, ov17_0224F0B8(), ov17_0224F09C(), TRUE, param3); + SpriteSystem_LoadCellResObj(param0, param1, Contest_GetContestGraphicsNarcID(), ov17_0224F098(), TRUE, param2); + SpriteSystem_LoadAnimResObj(param0, param1, Contest_GetContestGraphicsNarcID(), ov17_0224F09C(), TRUE, param3); } void ov17_0224F138(SpriteManager *param0, u32 param1) diff --git a/src/overlay017/ov17_0224F18C.c b/src/overlay017/ov17_0224F18C.c index d61fe3589a..7ab2528de4 100644 --- a/src/overlay017/ov17_0224F18C.c +++ b/src/overlay017/ov17_0224F18C.c @@ -16,8 +16,8 @@ void ov17_0224F18C(UnkStruct_ov17_0224F30C *param0, const UnkStruct_ov17_02243C2 param0->unk_00 = param1->unk_00; param0->unk_04 = param1->unk_04; - param0->unk_06 = param1->unk_06; - param0->unk_07 = param1->unk_07; + param0->unk_06 = param1->playerContestantID; + param0->unk_07 = param1->isLinkContest; param0->unk_08 = param1->unk_08; } @@ -200,13 +200,13 @@ int ov17_0224F3D8(UnkStruct_ov17_0224F30C *param0, void *param1) return 0; } -BOOL ov17_0224F4B8(UnkStruct_ov17_0224F30C *param0, int param1, int param2, int param3) +BOOL ov17_0224F4B8(UnkStruct_ov17_0224F30C *param0, int connectionCount, int playerContestantID, int param3) { - if (param2 != param3) { + if (playerContestantID != param3) { return 1; } - if (param0->unk_A15 >= param1) { + if (param0->unk_A15 >= connectionCount) { return 1; } diff --git a/src/overlay017/ov17_0224F4D4.c b/src/overlay017/ov17_0224F4D4.c index 65fb15e2f2..dcd4b7de1c 100644 --- a/src/overlay017/ov17_0224F4D4.c +++ b/src/overlay017/ov17_0224F4D4.c @@ -12,6 +12,7 @@ #include "overlay017/struct_ov17_0224FECC.h" #include "bg_window.h" +#include "contest.h" #include "font.h" #include "game_overlay.h" #include "graphics.h" @@ -36,7 +37,6 @@ #include "unk_02012744.h" #include "unk_020366A0.h" #include "unk_020393C8.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" #include "vram_transfer.h" @@ -125,7 +125,7 @@ __attribute__((aligned(4))) static const u16 Unk_ov17_02254AB4[] = { 0xF }; -int ov17_0224F4D4(ApplicationManager *appMan, int *param1) +int ContestFinalScoring_Init(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224FCA0 *v0; @@ -187,8 +187,8 @@ int ov17_0224F4D4(ApplicationManager *appMan, int *param1) ov17_0224FDDC(); - v0->unk_10.unk_B4 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_RESULTS, HEAP_ID_24); - v0->unk_10.unk_B8 = StringTemplate_Default(HEAP_ID_24); + v0->unk_10.contestResultsMessages = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_RESULTS, HEAP_ID_24); + v0->unk_10.contestResultsTemplate = StringTemplate_Default(HEAP_ID_24); v0->unk_10.unk_BC = String_Init(2 * 160, HEAP_ID_24); v0->unk_10.unk_C4 = sub_02012744(10, HEAP_ID_24); @@ -218,12 +218,12 @@ int ov17_0224F4D4(ApplicationManager *appMan, int *param1) return 1; } -int ov17_0224F754(ApplicationManager *appMan, int *param1) +int ContestFinalScoring_Main(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224FCA0 *v0 = ApplicationManager_Data(appMan); int v1; - sub_02094E98(v0->unk_00); + Contest_GetRNGNext(v0->unk_00); switch (*param1) { case 0: @@ -234,7 +234,7 @@ int ov17_0224F754(ApplicationManager *appMan, int *param1) } break; case 1: - if (sub_02094EDC(v0->unk_00) == 1) { + if (sub_02094EDC(v0->unk_00) == TRUE) { v1 = Unk_ov17_02254B54[v0->unk_84E](v0, &v0->unk_1270); if ((v1 == 1) || (v1 == 2)) { @@ -270,7 +270,7 @@ int ov17_0224F754(ApplicationManager *appMan, int *param1) return 0; } -int ov17_0224F86C(ApplicationManager *appMan, int *param1) +int ContestFinalScoring_Exit(ApplicationManager *appMan, int *param1) { UnkStruct_ov17_0224FCA0 *v0 = ApplicationManager_Data(appMan); int v1; @@ -310,8 +310,8 @@ int ov17_0224F86C(ApplicationManager *appMan, int *param1) PaletteData_Free(v0->unk_10.unk_C0); String_Free(v0->unk_10.unk_BC); - StringTemplate_Free(v0->unk_10.unk_B8); - MessageLoader_Free(v0->unk_10.unk_B4); + StringTemplate_Free(v0->unk_10.contestResultsTemplate); + MessageLoader_Free(v0->unk_10.contestResultsMessages); Heap_Free(v0->unk_10.unk_20); SysTask_Done(v0->unk_04); @@ -621,20 +621,18 @@ static int ov17_0224FECC(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC case 0: ov17_02251A1C(param0); - { - int v1; + int contestantID; - for (v1 = 0; v1 < 4; v1++) { - if (param0->unk_00->unk_00.unk_118[v1].unk_08 == 0) { - break; - } + for (contestantID = 0; contestantID < CONTEST_NUM_PARTICIPANTS; contestantID++) { + if (param0->unk_00->unk_00.unk_118[contestantID].contestPlacement == 0) { + break; } - - GF_ASSERT(v1 != 4); - - param0->unk_434.unk_02 = v1; } + GF_ASSERT(contestantID != CONTEST_NUM_PARTICIPANTS); + + param0->unk_434.winningContestantID = contestantID; + for (v0 = 0; v0 < 4; v0++) { param0->unk_434.unk_03[v0] = param0->unk_39A.unk_35[v0]; } @@ -658,7 +656,7 @@ static int ov17_0224FECC(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 2: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -676,15 +674,15 @@ static int ov17_02250000(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 0; param0->unk_434.unk_10 = 0; - param0->unk_434.unk_08.unk_00 = param0->unk_39A.unk_30[0]; - param0->unk_434.unk_0E = 1; + param0->unk_434.unk_08.contestantID = param0->unk_39A.unk_30[0]; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_JUDGING_COMPLETED; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -704,7 +702,7 @@ static int ov17_02250084(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -722,14 +720,14 @@ static int ov17_022500E8(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 1; param0->unk_434.unk_10 = 1; - param0->unk_434.unk_0E = 6; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_INDIVIDUAL_CATEGORIES; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -751,12 +749,12 @@ static int ov17_02250178(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC { switch (param1->unk_00) { case 0: - switch (param0->unk_00->unk_00.unk_111) { - case 2: - case 1: - case 0: - case 3: - case 4: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: + case CONTEST_COMPETITION_UNK1: + case CONTEST_COMPETITION_UNK0: + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: break; default: return 1; @@ -765,14 +763,14 @@ static int ov17_02250178(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 1; param0->unk_434.unk_10 = 1; - param0->unk_434.unk_0E = 2; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_VISUAL_COMPETITION_RESULTS; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -784,7 +782,7 @@ static int ov17_02250178(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 3: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -806,11 +804,11 @@ static int ov17_02250284(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC { switch (param1->unk_00) { case 0: - switch (param0->unk_00->unk_00.unk_111) { - case 2: - case 1: - case 5: - case 6: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: + case CONTEST_COMPETITION_UNK1: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: break; default: return 1; @@ -819,16 +817,16 @@ static int ov17_02250284(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 1; param0->unk_434.unk_10 = 1; - param0->unk_434.unk_08.unk_00 = param0->unk_39A.unk_30[0]; - param0->unk_434.unk_08.unk_04 = sub_020958FC(param0->unk_39A.unk_30[0]) + 1; - param0->unk_434.unk_0E = 3; + param0->unk_434.unk_08.contestantID = param0->unk_39A.unk_30[0]; + param0->unk_434.unk_08.contestantEntryNum = Contest_ContestantIDToContestantEntryNum(param0->unk_39A.unk_30[0]) + 1; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_DANCE_COMPETITION_RESULTS; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -840,7 +838,7 @@ static int ov17_02250284(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 3: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -862,11 +860,11 @@ static int ov17_022503B0(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC { switch (param1->unk_00) { case 0: - switch (param0->unk_00->unk_00.unk_111) { - case 2: - case 0: - case 7: - case 8: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: + case CONTEST_COMPETITION_UNK0: + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: break; default: return 1; @@ -875,16 +873,16 @@ static int ov17_022503B0(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 1; param0->unk_434.unk_10 = 1; - param0->unk_434.unk_08.unk_00 = param0->unk_39A.unk_30[0]; - param0->unk_434.unk_08.unk_04 = sub_020958FC(param0->unk_39A.unk_30[0]) + 1; - param0->unk_434.unk_0E = 4; + param0->unk_434.unk_08.contestantID = param0->unk_39A.unk_30[0]; + param0->unk_434.unk_08.contestantEntryNum = Contest_ContestantIDToContestantEntryNum(param0->unk_39A.unk_30[0]) + 1; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_ACTING_COMPETITION_RESULTS; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -896,7 +894,7 @@ static int ov17_022503B0(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 3: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -923,7 +921,7 @@ static int ov17_022504E4(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -941,16 +939,16 @@ static int ov17_02250548(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 1; param0->unk_434.unk_10 = 1; - param0->unk_434.unk_08.unk_00 = param0->unk_434.unk_02; - param0->unk_434.unk_08.unk_04 = sub_020958FC(param0->unk_434.unk_02) + 1; - param0->unk_434.unk_0E = 5; + param0->unk_434.unk_08.contestantID = param0->unk_434.winningContestantID; + param0->unk_434.unk_08.contestantEntryNum = Contest_ContestantIDToContestantEntryNum(param0->unk_434.winningContestantID) + 1; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_WINNER_IS; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -960,7 +958,7 @@ static int ov17_02250548(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 3: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -977,15 +975,15 @@ static int ov17_0225062C(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC param0->unk_434.unk_0F = 0; param0->unk_434.unk_11 = 0; param0->unk_434.unk_10 = 0; - param0->unk_434.unk_08.unk_00 = param0->unk_39A.unk_30[0]; - param0->unk_434.unk_0E = 0; + param0->unk_434.unk_08.contestantID = param0->unk_39A.unk_30[0]; + param0->unk_434.announcerMessagesID = CONTEST_ANNOUNCER_MESSAGE_NONE; if (ov17_0224F30C(¶m0->unk_85C, param0, 5, ¶m0->unk_434) == 1) { param1->unk_00++; } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1005,7 +1003,7 @@ static int ov17_022506AC(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; case 1: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { param1->unk_00++; } break; @@ -1015,7 +1013,7 @@ static int ov17_022506AC(UnkStruct_ov17_0224FCA0 *param0, UnkStruct_ov17_0224FEC } break; default: - if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.unk_117, param0->unk_00->unk_00.unk_113, param0->unk_00->unk_00.unk_10C) == 1) { + if (ov17_0224F4B8(¶m0->unk_85C, param0->unk_00->unk_00.connectionCount, param0->unk_00->unk_00.playerContestantID, param0->unk_00->unk_00.unk_10C) == 1) { return 3; } diff --git a/src/overlay017/ov17_02250744.c b/src/overlay017/ov17_02250744.c index fabc8c42c4..b5df9b3e4a 100644 --- a/src/overlay017/ov17_02250744.c +++ b/src/overlay017/ov17_02250744.c @@ -5,16 +5,14 @@ #include "constants/narc.h" -#include "struct_defs/struct_02095C48.h" - #include "overlay017/ov17_0223F118.h" #include "overlay017/struct_ov17_0224FCA0.h" #include "overlay017/struct_ov17_022507C4.h" #include "overlay017/struct_ov17_022508E4.h" -#include "overlay017/struct_ov17_02254C0C.h" #include "assert.h" #include "bg_window.h" +#include "contest.h" #include "game_options.h" #include "graphics.h" #include "heap.h" @@ -34,9 +32,17 @@ #include "sys_task.h" #include "sys_task_manager.h" #include "text.h" -#include "unk_020933F8.h" #include "unk_02094EDC.h" +#include "res/text/bank/contest_results.h" + +enum ContestAnnouncerMessageFormatting { + CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE, + CONTEST_ANNOUNCER_MESSAGE_FORMATTING_UNUSED1, + CONTEST_ANNOUNCER_MESSAGE_FORMATTING_UNUSED2, + CONTEST_ANNOUNCER_MESSAGE_FORMATTING_WINNER_ANNOUNCEMENT +}; + typedef struct { UnkStruct_ov17_0224FCA0 *unk_00; u8 *unk_04; @@ -70,11 +76,15 @@ typedef struct { s32 unk_1C; } UnkStruct_ov17_02251070; -static void ov17_022507F0(UnkStruct_ov17_0224FCA0 *param0, int param1, const UnkStruct_ov17_022508E4 *param2); -static void ov17_022508E4(UnkStruct_ov17_0224FCA0 *param0, MessageLoader *param1, u32 param2, int param3, const UnkStruct_ov17_022508E4 *param4); +typedef struct ContestAnnouncerMessage { + u16 contestResultMessageID; + u8 messageFormatting; +} ContestAnnouncerMessage; + +static void FormatContestAnnouncerMessage(UnkStruct_ov17_0224FCA0 *param0, enum ContestAnnouncerMessageFormatting messageFormatting, const UnkStruct_ov17_022508E4 *param2); +static void ov17_022508E4(UnkStruct_ov17_0224FCA0 *param0, MessageLoader *messageLoader, u32 messageID, enum ContestAnnouncerMessageFormatting messageFormatting, const UnkStruct_ov17_022508E4 *param4); void ov17_02250744(UnkStruct_ov17_0224FCA0 *param0); void ov17_022507C4(UnkStruct_ov17_022507C4 *param0); -void ov17_02250968(UnkStruct_ov17_0224FCA0 *param0, u32 param1, const UnkStruct_ov17_022508E4 *param2); int ov17_0225099C(UnkStruct_ov17_0224FCA0 *param0); void ov17_02250DB0(UnkStruct_ov17_0224FCA0 *param0); void ov17_02250EFC(UnkStruct_ov17_0224FCA0 *param0); @@ -118,14 +128,14 @@ static const struct { { 0xE8, 0x6D } }; -static const UnkStruct_ov17_02254C0C Unk_ov17_02254C0C[] = { - { 0x0, 0x0 }, - { 0x0, 0x0 }, - { 0x1, 0x0 }, - { 0x2, 0x0 }, - { 0x3, 0x0 }, - { 0x4, 0x3 }, - { 0x5, 0x0 } +static const ContestAnnouncerMessage sContestAnnouncerMessages[] = { + [CONTEST_ANNOUNCER_MESSAGE_NONE] = { 0x0, 0x0 }, + [CONTEST_ANNOUNCER_MESSAGE_JUDGING_COMPLETED] = { ContestResults_Text_JudgingCompleted, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE }, + [CONTEST_ANNOUNCER_MESSAGE_VISUAL_COMPETITION_RESULTS] = { ContestResults_Text_VisualCompetitionResults, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE }, + [CONTEST_ANNOUNCER_MESSAGE_DANCE_COMPETITION_RESULTS] = { ContestResults_Text_DanceCompetitionResults, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE }, + [CONTEST_ANNOUNCER_MESSAGE_ACTING_COMPETITION_RESULTS] = { ContestResults_Text_ActingCompetitionResults, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE }, + [CONTEST_ANNOUNCER_MESSAGE_WINNER_IS] = { ContestResults_Text_TheWinnerIs, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_WINNER_ANNOUNCEMENT }, + [CONTEST_ANNOUNCER_MESSAGE_INDIVIDUAL_CATEGORIES] = { ContestResults_Text_AnnounceIndividualCategories, CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE } }; static const SpriteTemplate Unk_ov17_02254C5C = { @@ -184,13 +194,13 @@ void ov17_02250744(UnkStruct_ov17_0224FCA0 *param0) { int v0, v1; - for (v0 = 0; v0 < 4; v0++) { + for (v0 = 0; v0 < CONTEST_NUM_PARTICIPANTS; v0++) { v1 = param0->unk_39A.unk_30[v0]; GF_ASSERT(param0->unk_10.pokemonSpriteDataArray[v1].tiles == NULL); param0->unk_10.pokemonSpriteDataArray[v1].tiles = Heap_Alloc(HEAP_ID_24, (32 * 10 * 10)); - param0->unk_10.unk_08[v1] = sub_02095484(param0->unk_10.unk_04, v0, param0->unk_10.unk_00->unk_00[v1], 2, ¶m0->unk_10.pokemonSpriteDataArray[v1], HEAP_ID_24, Unk_ov17_02254BF4[v0][0], Unk_ov17_02254BF4[v0][1], Unk_ov17_02254BF4[v0][2]); + param0->unk_10.unk_08[v1] = sub_02095484(param0->unk_10.unk_04, v0, param0->unk_10.unk_00->contestMons[v1], 2, ¶m0->unk_10.pokemonSpriteDataArray[v1], HEAP_ID_24, Unk_ov17_02254BF4[v0][0], Unk_ov17_02254BF4[v0][1], Unk_ov17_02254BF4[v0][2]); } } @@ -205,29 +215,29 @@ void ov17_022507C4(UnkStruct_ov17_022507C4 *param0) } } -static void ov17_022507F0(UnkStruct_ov17_0224FCA0 *param0, int param1, const UnkStruct_ov17_022508E4 *param2) +static void FormatContestAnnouncerMessage(UnkStruct_ov17_0224FCA0 *param0, enum ContestAnnouncerMessageFormatting messageFormatting, const UnkStruct_ov17_022508E4 *param2) { - u32 v0; + u32 messageID; - if (param1 != 0) { + if (messageFormatting != CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE) { GF_ASSERT(param2 != NULL); } - switch (param1) { - case 0: + switch (messageFormatting) { + case CONTEST_ANNOUNCER_MESSAGE_FORMATTING_NONE: break; - case 1: - v0 = sub_02095848(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.unk_111, param0->unk_00->isLinkContest); - StringTemplate_SetContestRankName(param0->unk_10.unk_B8, 0, v0); + case CONTEST_ANNOUNCER_MESSAGE_FORMATTING_UNUSED1: + messageID = Contest_GetContestRankTitleMessageID(param0->unk_00->unk_00.contestRank, param0->unk_00->unk_00.competitionType, param0->unk_00->isLinkContest); + StringTemplate_SetContestRankName(param0->unk_10.contestResultsTemplate, 0, messageID); break; - case 2: - StringTemplate_SetString(param0->unk_10.unk_B8, 0, param0->unk_00->unk_00.unk_D8[param2->unk_00], param0->unk_00->unk_00.unk_F8[param2->unk_00], 1, GAME_LANGUAGE); - StringTemplate_SetNickname(param0->unk_10.unk_B8, 1, Pokemon_GetBoxPokemon(param0->unk_10.unk_00->unk_00[param2->unk_00])); + case CONTEST_ANNOUNCER_MESSAGE_FORMATTING_UNUSED2: + StringTemplate_SetString(param0->unk_10.contestResultsTemplate, 0, param0->unk_00->unk_00.trainerNames[param2->contestantID], param0->unk_00->unk_00.trainerGenders[param2->contestantID], 1, GAME_LANGUAGE); + StringTemplate_SetNickname(param0->unk_10.contestResultsTemplate, 1, Pokemon_GetBoxPokemon(param0->unk_10.unk_00->contestMons[param2->contestantID])); break; - case 3: - StringTemplate_SetNumber(param0->unk_10.unk_B8, 0, param2->unk_04, 1, 0, 1); - StringTemplate_SetString(param0->unk_10.unk_B8, 1, param0->unk_00->unk_00.unk_D8[param2->unk_00], param0->unk_00->unk_00.unk_F8[param2->unk_00], 1, GAME_LANGUAGE); - StringTemplate_SetNickname(param0->unk_10.unk_B8, 2, Pokemon_GetBoxPokemon(param0->unk_10.unk_00->unk_00[param2->unk_00])); + case CONTEST_ANNOUNCER_MESSAGE_FORMATTING_WINNER_ANNOUNCEMENT: + StringTemplate_SetNumber(param0->unk_10.contestResultsTemplate, 0, param2->contestantEntryNum, 1, 0, 1); + StringTemplate_SetString(param0->unk_10.contestResultsTemplate, 1, param0->unk_00->unk_00.trainerNames[param2->contestantID], param0->unk_00->unk_00.trainerGenders[param2->contestantID], 1, GAME_LANGUAGE); + StringTemplate_SetNickname(param0->unk_10.contestResultsTemplate, 2, Pokemon_GetBoxPokemon(param0->unk_10.unk_00->contestMons[param2->contestantID])); break; default: GF_ASSERT(FALSE); @@ -235,38 +245,38 @@ static void ov17_022507F0(UnkStruct_ov17_0224FCA0 *param0, int param1, const Unk } } -static void ov17_022508E4(UnkStruct_ov17_0224FCA0 *param0, MessageLoader *param1, u32 param2, int param3, const UnkStruct_ov17_022508E4 *param4) +static void ov17_022508E4(UnkStruct_ov17_0224FCA0 *param0, MessageLoader *messageLoader, u32 messageID, enum ContestAnnouncerMessageFormatting messageFormatting, const UnkStruct_ov17_022508E4 *param4) { - String *v0; - int v1; + String *message; + int textRenderDelay; if (param0->unk_00->isLinkContest == FALSE) { - v1 = Options_TextFrameDelay(param0->unk_00->options); + textRenderDelay = Options_TextFrameDelay(param0->unk_00->options); } else { - v1 = TEXT_SPEED_FAST; + textRenderDelay = TEXT_SPEED_FAST; } - v0 = MessageLoader_GetNewString(param1, param2); - ov17_022507F0(param0, param3, param4); + message = MessageLoader_GetNewString(messageLoader, messageID); + FormatContestAnnouncerMessage(param0, messageFormatting, param4); - StringTemplate_Format(param0->unk_10.unk_B8, param0->unk_10.unk_BC, v0); + StringTemplate_Format(param0->unk_10.contestResultsTemplate, param0->unk_10.unk_BC, message); Window_FillTilemap(¶m0->unk_10.unk_24[0], 0xff); - param0->unk_10.unk_388 = Text_AddPrinterWithParams(¶m0->unk_10.unk_24[0], FONT_MESSAGE, param0->unk_10.unk_BC, 0, 0, v1, NULL); + param0->unk_10.unk_388 = Text_AddPrinterWithParams(¶m0->unk_10.unk_24[0], FONT_MESSAGE, param0->unk_10.unk_BC, 0, 0, textRenderDelay, NULL); - String_Free(v0); + String_Free(message); } -void ov17_02250968(UnkStruct_ov17_0224FCA0 *param0, u32 param1, const UnkStruct_ov17_022508E4 *param2) +void ov17_02250968(UnkStruct_ov17_0224FCA0 *param0, u32 announcerMessagesID, const UnkStruct_ov17_022508E4 *param2) { - u32 v0, v1; + u32 messageID, messageFormatting; - GF_ASSERT(param1 < NELEMS(Unk_ov17_02254C0C)); + GF_ASSERT(announcerMessagesID < NELEMS(sContestAnnouncerMessages)); - v0 = Unk_ov17_02254C0C[param1].unk_00; - v1 = Unk_ov17_02254C0C[param1].unk_02; + messageID = sContestAnnouncerMessages[announcerMessagesID].contestResultMessageID; + messageFormatting = sContestAnnouncerMessages[announcerMessagesID].messageFormatting; - ov17_022508E4(param0, param0->unk_10.unk_B4, v0, v1, param2); + ov17_022508E4(param0, param0->unk_10.contestResultsMessages, messageID, messageFormatting, param2); } int ov17_0225099C(UnkStruct_ov17_0224FCA0 *param0) @@ -335,11 +345,11 @@ void ov17_02250B00(UnkStruct_ov17_0224FCA0 *param0) for (v3 = 0; v3 < 4; v3++) { v4 = param0->unk_39A.unk_30[v3]; - Pokemon_GetValue(param0->unk_10.unk_00->unk_00[v4], MON_DATA_NICKNAME_STRING, v2); + Pokemon_GetValue(param0->unk_10.unk_00->contestMons[v4], MON_DATA_NICKNAME_STRING, v2); Window_FillTilemap(¶m0->unk_10.unk_24[1 + v3], 0x0); Window_FillTilemap(¶m0->unk_10.unk_24[5 + v3], 0x0); Text_AddPrinterWithParamsAndColor(¶m0->unk_10.unk_24[1 + v3], FONT_SYSTEM, v2, 0, 3, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL); - Text_AddPrinterWithParamsAndColor(¶m0->unk_10.unk_24[5 + v3], FONT_SYSTEM, param0->unk_00->unk_00.unk_D8[v4], 0, 3, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL); + Text_AddPrinterWithParamsAndColor(¶m0->unk_10.unk_24[5 + v3], FONT_SYSTEM, param0->unk_00->unk_00.trainerNames[v4], 0, 3, TEXT_SPEED_INSTANT, TEXT_COLOR(1, 2, 0), NULL); } String_Free(v2); @@ -401,14 +411,14 @@ void ov17_02250DB0(UnkStruct_ov17_0224FCA0 *param0) v0 = Unk_ov17_02254C5C; - for (v2 = 0; v2 < 4; v2++) { - SpriteSystem_LoadCharResObjAtEndWithHardwareMappingType(param0->unk_10.unk_18, param0->unk_10.unk_1C, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, Pokemon_IconSpriteIndex(param0->unk_00->unk_00.unk_00[v2]), FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 33002 + v2); + for (v2 = 0; v2 < CONTEST_NUM_PARTICIPANTS; v2++) { + SpriteSystem_LoadCharResObjAtEndWithHardwareMappingType(param0->unk_10.unk_18, param0->unk_10.unk_1C, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, Pokemon_IconSpriteIndex(param0->unk_00->unk_00.contestMons[v2]), FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 33002 + v2); v0.resources[0] = 33002 + v2; param0->unk_10.unk_128[v2] = SpriteSystem_NewSprite(param0->unk_10.unk_18, param0->unk_10.unk_1C, &v0); ManagedSprite_SetAnim(param0->unk_10.unk_128[v2], 1); - Sprite_SetExplicitPaletteOffsetAutoAdjust(param0->unk_10.unk_128[v2]->sprite, Pokemon_IconPaletteIndex(param0->unk_00->unk_00.unk_00[v2])); + Sprite_SetExplicitPaletteOffsetAutoAdjust(param0->unk_10.unk_128[v2]->sprite, Pokemon_IconPaletteIndex(param0->unk_00->unk_00.contestMons[v2])); ManagedSprite_TickFrame(param0->unk_10.unk_128[v2]); } @@ -516,19 +526,19 @@ static void ov17_02251070(UnkStruct_ov17_0224FCA0 *param0) v1->unk_00 = param0; v1->unk_04 = SpriteSystem_NewSprite(param0->unk_10.unk_18, param0->unk_10.unk_1C, &Unk_ov17_02254C28); - v2 = (sub_02094E98(param0->unk_00) & 0xff) + 20; - v3 = -16 + (sub_02094E98(param0->unk_00) % (96 - 32 - 16)); + v2 = (Contest_GetRNGNext(param0->unk_00) & 0xff) + 20; + v3 = -16 + (Contest_GetRNGNext(param0->unk_00) % (96 - 32 - 16)); v1->unk_08 = v2 * 0x100; v1->unk_0C = v3 * 0x100; ManagedSprite_SetPositionXY(v1->unk_04, v2, v3); - v1->unk_14 = (sub_02094E98(param0->unk_00) % 0x200) + 0x60; - v1->unk_18 = (sub_02094E98(param0->unk_00) % 0x300) + 0x100; - v1->unk_12 = (sub_02094E98(param0->unk_00) % 24) + 16; + v1->unk_14 = (Contest_GetRNGNext(param0->unk_00) % 0x200) + 0x60; + v1->unk_18 = (Contest_GetRNGNext(param0->unk_00) % 0x300) + 0x100; + v1->unk_12 = (Contest_GetRNGNext(param0->unk_00) % 24) + 16; - ManagedSprite_SetAnim(v1->unk_04, sub_02094E98(param0->unk_00) % 0x9); + ManagedSprite_SetAnim(v1->unk_04, Contest_GetRNGNext(param0->unk_00) % 0x9); ManagedSprite_TickFrame(v1->unk_04); SysTask_Start(ov17_02251140, v1, ((50000 + 10) + 1)); @@ -790,7 +800,7 @@ static void ov17_02251688(SysTask *param0, void *param1) } } -void ov17_02251718(UnkStruct_ov17_0224FCA0 *param0, int param1, int param2, u8 *param3) +void ov17_02251718(UnkStruct_ov17_0224FCA0 *param0, int contestantID, int param2, u8 *param3) { UnkStruct_ov17_02251718 *v0; @@ -799,7 +809,7 @@ void ov17_02251718(UnkStruct_ov17_0224FCA0 *param0, int param1, int param2, u8 * MI_CpuClear8(v0, sizeof(UnkStruct_ov17_02251718)); - v0->unk_00 = param0->unk_10.unk_08[param1]; + v0->unk_00 = param0->unk_10.unk_08[contestantID]; v0->unk_04 = param3; if (param2 == 0) { @@ -866,10 +876,10 @@ static void ov17_022517F0(SysTask *param0, void *param1) } } -static int ov17_02251860(UnkStruct_02095C48 *param0, int param1) +static int ov17_02251860(Contest *contest, int param1) { - switch (param0->unk_00.unk_111) { - case 0: + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_UNK0: switch (param1) { case 0: return 60 * 100; @@ -879,7 +889,7 @@ static int ov17_02251860(UnkStruct_02095C48 *param0, int param1) return 0; } break; - case 1: + case CONTEST_COMPETITION_UNK1: switch (param1) { case 0: return 70 * 100; @@ -889,7 +899,7 @@ static int ov17_02251860(UnkStruct_02095C48 *param0, int param1) return 0; } break; - case 2: + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: switch (param1) { case 0: return 3333; @@ -901,21 +911,21 @@ static int ov17_02251860(UnkStruct_02095C48 *param0, int param1) return 0; } break; - case 3: - case 4: + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: if (param1 == 0) { return 10000; } return 0; - case 5: - case 6: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: if (param1 == 1) { return 10000; } return 0; - case 7: - case 8: + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: if (param1 == 2) { return 10000; } @@ -925,7 +935,7 @@ static int ov17_02251860(UnkStruct_02095C48 *param0, int param1) } } -static int ov17_02251914(UnkStruct_02095C48 *param0, int param1) +static int ov17_02251914(Contest *param0, int param1) { int v0 = ov17_02251860(param0, param1); int v1 = (24 * 8) * v0; @@ -934,7 +944,7 @@ static int ov17_02251914(UnkStruct_02095C48 *param0, int param1) return v1; } -void ov17_02251930(UnkStruct_02095C48 *param0, int param1, s16 param2[]) +void ov17_02251930(Contest *param0, int param1, s16 param2[]) { int v0[4]; int v1[4]; @@ -992,30 +1002,30 @@ void ov17_02251A1C(UnkStruct_ov17_0224FCA0 *param0) { int v0; - switch (param0->unk_00->unk_00.unk_111) { - case 0: + switch (param0->unk_00->unk_00.competitionType) { + case CONTEST_COMPETITION_UNK0: ov17_02251930(param0->unk_00, 0, param0->unk_39A.unk_3A); ov17_02251930(param0->unk_00, 2, param0->unk_39A.unk_4A); break; - case 1: + case CONTEST_COMPETITION_UNK1: ov17_02251930(param0->unk_00, 0, param0->unk_39A.unk_3A); ov17_02251930(param0->unk_00, 1, param0->unk_39A.unk_42); break; - case 2: + case CONTEST_COMPETITION_LINK_OR_OFFICIAL: ov17_02251930(param0->unk_00, 0, param0->unk_39A.unk_3A); ov17_02251930(param0->unk_00, 1, param0->unk_39A.unk_42); ov17_02251930(param0->unk_00, 2, param0->unk_39A.unk_4A); break; - case 3: - case 4: + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_VISUAL: ov17_02251930(param0->unk_00, 0, param0->unk_39A.unk_3A); break; - case 5: - case 6: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_DANCE: ov17_02251930(param0->unk_00, 1, param0->unk_39A.unk_42); break; - case 7: - case 8: + case CONTEST_COMPETITION_PRACTICE_ACTING: + case CONTEST_COMPETITION_ACTING: ov17_02251930(param0->unk_00, 2, param0->unk_39A.unk_4A); break; } @@ -1105,7 +1115,7 @@ void ov17_02251A1C(UnkStruct_ov17_0224FCA0 *param0) for (v7 = 0; v7 < 4; v7++) { v5[v7] = v7; v6[v7] = param0->unk_39A.unk_7A[v7]; - v4[v7] = sub_02094E98(param0->unk_00); + v4[v7] = Contest_GetRNGNext(param0->unk_00); } for (v7 = 0; v7 < 4 - 1; v7++) { @@ -1126,9 +1136,9 @@ void ov17_02251A1C(UnkStruct_ov17_0224FCA0 *param0) } } - for (v7 = 0; v7 < 4; v7++) { + for (v7 = 0; v7 < CONTEST_NUM_PARTICIPANTS; v7++) { param0->unk_39A.unk_35[v7] = v5[v7]; - param0->unk_00->unk_00.unk_118[v5[v7]].unk_08 = v7; + param0->unk_00->unk_00.unk_118[v5[v7]].contestPlacement = v7; } } } diff --git a/src/overlay017/ov17_02251D6C.c b/src/overlay017/ov17_02251D6C.c index 42b52d57b0..21f64ff5e5 100644 --- a/src/overlay017/ov17_02251D6C.c +++ b/src/overlay017/ov17_02251D6C.c @@ -109,9 +109,9 @@ void ov17_02251D6C(UnkStruct_ov17_0224FCA0 *param0) v0.unk_00 = Unk_ov17_02254D18; v0.unk_04 = NELEMS(Unk_ov17_02254D18); - v0.unk_06 = param0->unk_00->unk_00.unk_113; + v0.playerContestantID = param0->unk_00->unk_00.playerContestantID; v0.unk_08 = param0->unk_00->unk_00.unk_10C; - v0.unk_07 = param0->unk_00->isLinkContest; + v0.isLinkContest = param0->unk_00->isLinkContest; ov17_0224F18C(¶m0->unk_85C, &v0); } @@ -391,7 +391,7 @@ static void ov17_02252224(UnkStruct_ov17_0224F30C *param0, void *param1, const U v2->unk_0C = param0; v2->unk_11 = v1->unk_00; v2->unk_14 = v1->unk_08; - v2->unk_1A = v1->unk_0E; + v2->announcerMessagesID = v1->announcerMessagesID; v2->unk_1D = v1->unk_11; v2->unk_1C = v1->unk_10; v2->unk_1B = v1->unk_0F; @@ -405,13 +405,13 @@ static void ov17_0225228C(SysTask *param0, void *param1) switch (v0->unk_10) { case 0: - if (v0->unk_1A != 0) { + if (v0->announcerMessagesID != 0) { if (v0->unk_1D == 0) { Window_DrawMessageBoxWithScrollCursor(&v0->unk_00->unk_10.unk_24[0], 1, 1, 14); Bg_ScheduleTilemapTransfer(v0->unk_00->unk_10.unk_20, 1); } - ov17_02250968(v0->unk_00, v0->unk_1A, &v0->unk_14); + ov17_02250968(v0->unk_00, v0->announcerMessagesID, &v0->unk_14); v0->unk_10++; } else { v0->unk_10 = 100; @@ -616,7 +616,7 @@ static void ov17_02252620(UnkStruct_ov17_0224F30C *param0, void *param1, const U v2->unk_00 = v0; v2->unk_04 = *param2; v2->unk_0C = param0; - v2->unk_11 = v1->unk_02; + v2->winningContestantID = v1->winningContestantID; SysTask_Start(ov17_0225266C, v2, 30000); } @@ -639,7 +639,7 @@ static void ov17_0225266C(SysTask *param0, void *param1) } break; case 2: - ov17_02251718(v0->unk_00, v0->unk_11, 0, &v0->unk_13); + ov17_02251718(v0->unk_00, v0->winningContestantID, 0, &v0->unk_13); v0->unk_10++; break; case 3: @@ -648,16 +648,14 @@ static void ov17_0225266C(SysTask *param0, void *param1) } break; case 4: { - int v1, v2; - - v1 = Pokemon_GetValue(v0->unk_00->unk_10.unk_00->unk_00[v0->unk_11], MON_DATA_SPECIES, NULL); - v2 = Pokemon_GetValue(v0->unk_00->unk_10.unk_00->unk_00[v0->unk_11], MON_DATA_FORM, NULL); - PlayCryWithParams(v0->unk_00->unk_00->unk_14C[v0->unk_11], 0, v1, v2, 0, 127, NULL, 24); + int species = Pokemon_GetValue(v0->unk_00->unk_10.unk_00->contestMons[v0->winningContestantID], MON_DATA_SPECIES, NULL); + int form = Pokemon_GetValue(v0->unk_00->unk_10.unk_00->contestMons[v0->winningContestantID], MON_DATA_FORM, NULL); + PlayCryWithParams(v0->unk_00->unk_00->chatotCry[v0->winningContestantID], POKECRY_NORMAL, species, form, 0, 127, NULL, HEAP_ID_24); } v0->unk_10++; break; case 5: - if (Sound_IsPokemonCryPlaying() == 0) { + if (Sound_IsPokemonCryPlaying() == FALSE) { v0->unk_10++; } break; diff --git a/src/overlay017/ov17_02252AB0.c b/src/overlay017/ov17_02252AB0.c index 28956a929a..d9dbb74c66 100644 --- a/src/overlay017/ov17_02252AB0.c +++ b/src/overlay017/ov17_02252AB0.c @@ -87,14 +87,14 @@ void ov17_02252BCC(UnkStruct_ov17_02252B48 *param0) Heap_Free(param0); } -void ov17_02252BF0(UnkStruct_ov17_02252B48 *param0, int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, fx32 param9) +void ov17_02252BF0(UnkStruct_ov17_02252B48 *param0, int touchScreenRectLeft1, int touchScreenRectTop1, int touchScreenRectRight1, int touchScreenRectTop2, int touchScreenRectLeft2, int touchScreenRectBottom1, int touchScreenRectRight2, int touchScreenRectBottom2, fx32 param9) { int v0; - ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[0], param1, param2, param9); - ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[1], param3, param4, param9); - ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[2], param5, param6, param9); - ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[3], param7, param8, param9); + ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[0], touchScreenRectLeft1, touchScreenRectTop1, param9); + ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[1], touchScreenRectRight1, touchScreenRectTop2, param9); + ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[2], touchScreenRectLeft2, touchScreenRectBottom1, param9); + ManagedSprite_SetPositionXYWithSubscreenOffset(param0->unk_00[3], touchScreenRectRight2, touchScreenRectBottom2, param9); ManagedSprite_SetAnim(param0->unk_00[0], 0); ManagedSprite_SetAnim(param0->unk_00[1], 1); @@ -106,17 +106,15 @@ void ov17_02252BF0(UnkStruct_ov17_02252B48 *param0, int param1, int param2, int } } -void ov17_02252C78(UnkStruct_ov17_02252B48 *param0, int param1, int param2, int param3, int param4, fx32 param5) +void ov17_02252C78(UnkStruct_ov17_02252B48 *param0, int touchScreenRectLeft, int touchScreenRectRight, int touchScreenRectTop, int touchScreenRectBottom, fx32 param5) { - ov17_02252BF0(param0, param1, param3, param2, param3, param1, param4, param2, param4, param5); + ov17_02252BF0(param0, touchScreenRectLeft, touchScreenRectTop, touchScreenRectRight, touchScreenRectTop, touchScreenRectLeft, touchScreenRectBottom, touchScreenRectRight, touchScreenRectBottom, param5); } void ov17_02252C9C(UnkStruct_ov17_02252B48 *param0) { - int v0; - - for (v0 = 0; v0 < 5; v0++) { - ManagedSprite_SetDrawFlag(param0->unk_00[v0], 0); + for (int i = 0; i < 5; i++) { + ManagedSprite_SetDrawFlag(param0->unk_00[i], FALSE); } } diff --git a/src/overlay017/ov17_02252CEC.c b/src/overlay017/ov17_02252CEC.c index befaae0dd7..91c88a1df5 100644 --- a/src/overlay017/ov17_02252CEC.c +++ b/src/overlay017/ov17_02252CEC.c @@ -3,8 +3,6 @@ #include #include -#include "struct_defs/struct_02095C48.h" - #include "overlay017/ov17_0224A0FC.h" #include "overlay017/struct_ov17_02246F24.h" #include "overlay017/struct_ov17_02247A48.h" @@ -13,9 +11,11 @@ #include "overlay017/struct_ov17_0224F30C.h" #include "overlay017/struct_ov17_0224FCA0.h" +#include "contest.h" + void ov17_02252CEC(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; UnkStruct_ov17_0224F30C *v1; if (v0->unk_154 == 0) { @@ -48,7 +48,7 @@ void ov17_02252CEC(int param0, int param1, void *param2, void *param3) void ov17_02252D7C(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; UnkStruct_ov17_0224DF54 *v1 = v0->unk_150; UnkStruct_ov17_0224EDE0 *v2 = param2; diff --git a/src/overlay022/ov22_02255D44.c b/src/overlay022/ov22_02255D44.c index fe91d0e663..715b27da99 100644 --- a/src/overlay022/ov22_02255D44.c +++ b/src/overlay022/ov22_02255D44.c @@ -10,8 +10,8 @@ #include "struct_defs/struct_02015958.h" #include "struct_defs/struct_02029C88.h" #include "struct_defs/struct_0203DA00.h" -#include "struct_defs/struct_02093BBC.h" #include "struct_defs/struct_02095C60.h" +#include "struct_defs/visual_competition_app_args.h" #include "overlay022/ov22_02254DE0.h" #include "overlay022/ov22_02255094.h" @@ -97,9 +97,9 @@ typedef struct { Window *unk_718; BOOL unk_71C; int unk_720; - int unk_724; + enum PokemonContestRank contestRank; int unk_728; - int unk_72C; + enum PokemonContestType contestType; int unk_730; UnkStruct_02095C60 *unk_734; const Options *options; @@ -156,7 +156,7 @@ static void ov22_02256DB8(UnkStruct_ov22_02255D44 *param0, BOOL *param1); static void ov22_02256DE0(SysTask *param0, void *param1); static BOOL ov22_02257098(UnkStruct_ov22_02256C48 *param0, int param1, int param2, int param3); static void ov22_02256F38(DressUpPhoto *photo, UnkStruct_ov22_02257964 *param1, const TrainerInfo *info); -static void ov22_02256FD8(UnkStruct_02029C88 *param0, UnkStruct_ov22_02257964 *param1, int param2, const TrainerInfo *param3); +static void ov22_02256FD8(UnkStruct_02029C88 *param0, UnkStruct_ov22_02257964 *param1, enum PokemonContestRank contestRank, const TrainerInfo *trainerInfo); static void ov22_02257104(UnkStruct_ov22_02255D44 *param0); static void ov22_0225718C(UnkStruct_ov22_02255D44 *param0); static void ov22_022571D4(UnkStruct_ov22_02255D44 *param0); @@ -178,7 +178,7 @@ static u32 ov22_022573EC(UnkStruct_ov22_02255D44 *param0, u32 param1); static void ov22_02257498(UnkStruct_ov22_02255D44 *param0); static void ov22_022574B0(UnkStruct_ov22_02255D44 *param0); static void ov22_02257564(UnkStruct_ov22_02255D44 *param0); -static int ov22_02257580(int param0); +static int ov22_02257580(enum PokemonContestRank contestRank); static void ov22_0225764C(UnkStruct_ov22_02256FD8 *param0); static void ov22_02257658(UnkStruct_ov22_02256FD8 *param0, UnkStruct_ov22_02259560 *param1, u32 param2); static void ov22_0225768C(UnkStruct_ov22_02256FD8 *param0); @@ -403,11 +403,11 @@ int ov22_02256098(ApplicationManager *appMan, int *param1) return 1; } -int ov22_02256174(ApplicationManager *appMan, int *param1) +int VisualCompetition_Init(ApplicationManager *appMan, int *param1) { UnkStruct_ov22_02255D44 *v0; u32 v1; - UnkStruct_02093BBC *v2; + VisualCompetitionAppArgs *appArgs; Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_13, 0x20000); Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_14, 0x40000); @@ -418,13 +418,13 @@ int ov22_02256174(ApplicationManager *appMan, int *param1) SetVBlankCallback(ov22_02256940, v0); DisableHBlank(); - v2 = ApplicationManager_Args(appMan); + appArgs = ApplicationManager_Args(appMan); - v0->unk_724 = v2->unk_0C; - v0->unk_728 = v2->unk_10; - v0->unk_72C = v2->unk_14; - v0->unk_730 = v2->unk_08; - v0->unk_734 = v2->unk_1C; + v0->contestRank = appArgs->contestRank; + v0->unk_728 = appArgs->competitionType; + v0->contestType = appArgs->contestType; + v0->unk_730 = appArgs->unk_08; + v0->unk_734 = appArgs->unk_1C; EnableTouchPad(); v1 = InitializeTouchPad(4); @@ -433,7 +433,7 @@ int ov22_02256174(ApplicationManager *appMan, int *param1) (void)0; } - ov22_0225894C(v2->fashionCase, &v0->unk_1E8); + ov22_0225894C(appArgs->fashionCase, &v0->unk_1E8); ov22_022566C0(v0); SpriteList_SetActive(v0->unk_00.unk_44, 0); @@ -444,19 +444,19 @@ int ov22_02256174(ApplicationManager *appMan, int *param1) ov22_02259484(&v0->unk_3C0, (700 + 1 + 18), HEAP_ID_13); v0->unk_3C8 = ov22_02254DE0(700, HEAP_ID_13); - v0->options = v2->options; + v0->options = appArgs->options; if (v0->unk_734->unk_16 == 0) { - v0->unk_720 = ov22_02257580(v2->unk_0C); + v0->unk_720 = ov22_02257580(appArgs->contestRank); } else { v0->unk_720 = 20; } - ov22_02256790(v0, v2->unk_00, v0->unk_720); + ov22_02256790(v0, appArgs->mon, v0->unk_720); ov22_022567FC(v0); ov22_02256948(v0, 0); ov22_02256A28(v0); - ov22_02256BF4(v0, v0->unk_720, v2->unk_08, v2->unk_1C, v2->options); + ov22_02256BF4(v0, v0->unk_720, appArgs->unk_08, appArgs->unk_1C, appArgs->options); ov22_022589E0(&v0->unk_4FC, &v0->unk_458, &v0->unk_3CC, &v0->unk_00, &v0->unk_5C4, 0); v0->unk_714 = sub_02015920(HEAP_ID_13); @@ -468,7 +468,7 @@ int ov22_02256174(ApplicationManager *appMan, int *param1) return 1; } -int ov22_022562EC(ApplicationManager *appMan, int *param1) +int VisualCompetition_Main(ApplicationManager *appMan, int *param1) { UnkStruct_ov22_02255D44 *v0 = ApplicationManager_Data(appMan); int v1 = 0; @@ -627,13 +627,13 @@ int ov22_022562EC(ApplicationManager *appMan, int *param1) return v1; } -int ov22_02256600(ApplicationManager *appMan, int *param1) +int VisualCompetition_Exit(ApplicationManager *appMan, int *param1) { UnkStruct_ov22_02255D44 *v0 = ApplicationManager_Data(appMan); u32 v1; - UnkStruct_02093BBC *v2 = ApplicationManager_Args(appMan); + VisualCompetitionAppArgs *appArgs = ApplicationManager_Args(appMan); - ov22_02256FD8(v2->unk_04, &v0->unk_458, v0->unk_724, v2->unk_24); + ov22_02256FD8(appArgs->unk_04, &v0->unk_458, v0->contestRank, appArgs->trainerInfo); sub_02015938(v0->unk_714); Windows_Delete(v0->unk_718, 1); @@ -689,7 +689,7 @@ static void ov22_022566F4(UnkStruct_ov22_02255D44 *param0) ov22_022550B4(); } -static void ov22_02256708(UnkStruct_ov22_02255D44 *param0, Pokemon *param1, int param2, BOOL param3) +static void ov22_02256708(UnkStruct_ov22_02255D44 *param0, Pokemon *mon, int param2, BOOL param3) { UnkStruct_ov22_0225B388 v0; @@ -709,9 +709,9 @@ static void ov22_02256708(UnkStruct_ov22_02255D44 *param0, Pokemon *param1, int PokemonSpriteTemplate v1; if (param3 == 0) { - ov22_02257998(¶m0->unk_458, param1, &v1, 14); + ov22_02257998(¶m0->unk_458, mon, &v1, 14); } else { - ov22_022579B4(¶m0->unk_458, param1, &v1, 14); + ov22_022579B4(¶m0->unk_458, mon, &v1, 14); } ov22_02259098(¶m0->unk_00, &v1); @@ -721,12 +721,12 @@ static void ov22_02256708(UnkStruct_ov22_02255D44 *param0, Pokemon *param1, int ov22_02257C88(¶m0->unk_458, 0, HEAP_ID_14); } -static void ov22_02256790(UnkStruct_ov22_02255D44 *param0, Pokemon *param1, int param2) +static void ov22_02256790(UnkStruct_ov22_02255D44 *param0, Pokemon *mon, int param2) { int v0, v1; UnkStruct_ov22_022596B0 v2; - ov22_02256708(param0, param1, param2, 1); + ov22_02256708(param0, mon, param2, 1); ov22_02259270(¶m0->unk_458.unk_2C.unk_4C, &v0, &v1); ov22_02259358(¶m0->unk_458.unk_2C.unk_4C, &v2); ov22_022591EC(¶m0->unk_458.unk_2C.unk_4C, 192, (16 + 129) - ((v1 / 2) - v2.unk_03) + -4); @@ -1168,25 +1168,25 @@ static void ov22_02256F38(DressUpPhoto *photo, UnkStruct_ov22_02257964 *param1, DressUpPhoto_SetLanguageAndMagic(photo); } -static void ov22_02256FD8(UnkStruct_02029C88 *param0, UnkStruct_ov22_02257964 *param1, int param2, const TrainerInfo *param3) +static void ov22_02256FD8(UnkStruct_02029C88 *param0, UnkStruct_ov22_02257964 *param1, enum PokemonContestRank contestRank, const TrainerInfo *trainerInfo) { int v0; int v1; UnkStruct_ov22_02256FD8 *v2; UnkStruct_ov22_02259560 *v3; - String *v4; - int v5; + String *name; + int gender; v2 = Heap_Alloc(HEAP_ID_13, sizeof(UnkStruct_ov22_02256FD8)); ov22_0225764C(v2); sub_0202A284(param0, param1->unk_2C.unk_4C.unk_0C, ¶m1->unk_2C.unk_4C); - if (param3) { - v4 = TrainerInfo_NameNewString(param3, 13); - v5 = TrainerInfo_Gender(param3); - sub_0202A4B4(param0, v4, v5); - String_Free(v4); + if (trainerInfo) { + name = TrainerInfo_NameNewString(trainerInfo, 13); + gender = TrainerInfo_Gender(trainerInfo); + sub_0202A4B4(param0, name, gender); + String_Free(name); } ov22_02257778(v2, ¶m1->unk_00.unk_14, 1); @@ -1204,7 +1204,7 @@ static void ov22_02256FD8(UnkStruct_02029C88 *param0, UnkStruct_ov22_02257964 *p } sub_0202A35C(param0, param1->unk_2C.unk_48); - sub_0202A378(param0, param2); + sub_0202A378(param0, contestRank); sub_0202A240(param0); Heap_Free(v2); } @@ -1453,21 +1453,21 @@ static void ov22_02257564(UnkStruct_ov22_02255D44 *param0) ov22_0225A6B8(¶m0->unk_5C4, v0); } -static int ov22_02257580(int param0) +static int ov22_02257580(enum PokemonContestRank contestRank) { int v0; - switch (param0) { - case 0: + switch (contestRank) { + case CONTEST_RANK_NORMAL: v0 = 5; break; - case 1: + case CONTEST_RANK_GREAT: v0 = 10; break; - case 2: + case CONTEST_RANK_ULTRA: v0 = 15; break; - case 3: + case CONTEST_RANK_MASTER: v0 = 20; break; default: diff --git a/src/overlay022/ov22_0225B660.c b/src/overlay022/ov22_0225B660.c index 947433b69c..7ed892b66c 100644 --- a/src/overlay022/ov22_0225B660.c +++ b/src/overlay022/ov22_0225B660.c @@ -316,7 +316,7 @@ static void ov22_0225BB00(UnkStruct_ov22_0225B85C *param0) static void ov22_0225BC18(UnkStruct_ov22_0225B85C *param0) { - int v0; + int contestRank; StringTemplate *v1; String *v2; String *v3; @@ -329,12 +329,12 @@ static void ov22_0225BC18(UnkStruct_ov22_0225B85C *param0) Sprite_SetAnim(param0->unk_1FC, param0->unk_08); - v0 = sub_0202A5D0(param0->unk_04); + contestRank = sub_0202A5D0(param0->unk_04); v1 = StringTemplate_Default(HEAP_ID_13); v2 = String_Init(200, HEAP_ID_13); StringTemplate_SetContestTypeName(v1, 0, Contest_GetContestTypeMessageID(param0->unk_08)); - StringTemplate_SetContestRankName(v1, 1, Contest_GetRankMessageID(v0)); + StringTemplate_SetContestRankName(v1, 1, Contest_GetRankMessageID(contestRank)); v4 = sub_0202A544(param0->unk_04); sub_0202A524(param0->unk_04, v2); diff --git a/src/pokemon.c b/src/pokemon.c index aae729853b..0af9f31652 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -510,7 +510,7 @@ void sub_02074088(Pokemon *mon, u16 monSpecies, u8 monLevel, u8 monIVs, u8 gende Pokemon_InitWith(mon, monSpecies, monLevel, monIVs, TRUE, monPersonality, OTID_NOT_SET, 0); } -u32 sub_02074128(u16 monSpecies, u8 param1, u8 param2) +u32 sub_02074128(u16 monSpecies, u8 gender, u8 param2) { u8 monGenderChance = SpeciesData_GetSpeciesValue(monSpecies, SPECIES_DATA_GENDER_RATIO); @@ -522,8 +522,7 @@ u32 sub_02074128(u16 monSpecies, u8 param1, u8 param2) result = param2; break; default: - // TODO gender enum value? - if (param1 == 0) { + if (gender == GENDER_MALE) { result = 25 * ((monGenderChance / 25) + 1); result += param2; } else { diff --git a/src/rankings.c b/src/rankings.c index 505f193780..748b981393 100644 --- a/src/rankings.c +++ b/src/rankings.c @@ -128,7 +128,7 @@ static u32 *GetRecordValues(SaveData *saveData, enum HeapID heapID) RECORD_CAUGHT_POKEMON, RECORD_EGGS_HATCHED, RECORD_CAUGHT_FISH, - RECORD_SUPER_CONTEST_WINS, + RECORD_OFFICIAL_CONTEST_WINS, RECORD_SUPER_CONTEST_PARTICIPATIONS, RECORD_RIBBONS_WON }; @@ -149,7 +149,7 @@ static u32 *GetRecordValues(SaveData *saveData, enum HeapID heapID) recordValues[i] = recordValue; break; case 10: - recordValue = GameRecords_GetRecordValue(gameRecords, RECORD_SUPER_CONTEST_WINS); + recordValue = GameRecords_GetRecordValue(gameRecords, RECORD_OFFICIAL_CONTEST_WINS); recordValue += GameRecords_GetRecordValue(gameRecords, RECORD_LINK_CONTEST_WINS); recordValues[i] = recordValue; break; diff --git a/src/scrcmd.c b/src/scrcmd.c index 7c4941408b..8e16b21c05 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -20,6 +20,7 @@ #include "generated/journal_location_events.h" #include "generated/movement_actions.h" #include "generated/movement_types.h" +#include "generated/pokemon_contest_ranks.h" #include "generated/save_types.h" #include "generated/signpost_commands.h" @@ -147,6 +148,7 @@ #include "scrcmd_berry.h" #include "scrcmd_catching_show.h" #include "scrcmd_coins.h" +#include "scrcmd_contests.h" #include "scrcmd_daycare.h" #include "scrcmd_dummy_23F_242.h" #include "scrcmd_fossil.h" @@ -191,7 +193,6 @@ #include "unk_02038FFC.h" #include "unk_020393C8.h" #include "unk_0203D1B8.h" -#include "unk_02046C7C.h" #include "unk_02048614.h" #include "unk_02048BD0.h" #include "unk_020494DC.h" @@ -413,7 +414,7 @@ static BOOL ScrCmd_0C3(ScriptContext *ctx); static BOOL ScrCmd_0C4(ScriptContext *ctx); static BOOL ScrCmd_0C5(ScriptContext *ctx); static BOOL sub_02042C80(ScriptContext *ctx); -static BOOL ScrCmd_0C6(ScriptContext *ctx); +static BOOL ScrCmd_ChangeIntoContestAttire(ScriptContext *ctx); static BOOL ScrCmd_CheckPlayerOnBike(ScriptContext *ctx); static BOOL ScrCmd_SetPlayerBike(ScriptContext *ctx); static BOOL ScrCmd_0C9(ScriptContext *ctx); @@ -532,8 +533,8 @@ static BOOL ScrCmd_GetBattleHallSelectedSlots(ScriptContext *ctx); static BOOL ScrCmd_2D4(ScriptContext *ctx); static BOOL ScrCmd_2DB(ScriptContext *ctx); static BOOL ScrCmd_OpenPartyMenuForTrade(ScriptContext *ctx); -static BOOL ScrCmd_196(ScriptContext *ctx); -static BOOL ScrCmd_197(ScriptContext *ctx); +static BOOL ScrCmd_SetMonSummary(ScriptContext *ctx); +static BOOL ScrCmd_GetMonPartySlot(ScriptContext *ctx); static BOOL ScrCmd_OpenSummaryScreenTeachMove(ScriptContext *ctx); static BOOL ScrCmd_GetSummarySelectedMoveSlot(ScriptContext *ctx); static BOOL ScrCmd_Dummy19E(ScriptContext *ctx); @@ -568,7 +569,7 @@ static BOOL ScrCmd_AddContestBackdrop(ScriptContext *ctx); static BOOL ScrCmd_CheckBackdrop(ScriptContext *ctx); static BOOL ScrCmd_OpenPartyMenuForUnionRoomBattle(ScriptContext *ctx); static BOOL ScrCmd_OpenPartyMenuForContest(ScriptContext *ctx); -static BOOL ScrCmd_195(ScriptContext *ctx); +static BOOL ScrCmd_TryEnterContestMon(ScriptContext *ctx); static BOOL ScrCmd_CheckLocalDexCompleted(ScriptContext *ctx); static BOOL ScrCmd_CheckNationalDexCompleted(ScriptContext *ctx); static BOOL ScrCmd_ShowDiplomaSinnoh(ScriptContext *ctx); @@ -690,7 +691,7 @@ static BOOL ScrCmd_2AB(ScriptContext *ctx); static BOOL ScrCmd_UnlockMysteryGift(ScriptContext *ctx); static BOOL ScrCmd_2AF(ScriptContext *ctx); static BOOL ScrCmd_2B0(ScriptContext *ctx); -static BOOL ScrCmd_2B1(ScriptContext *ctx); +static BOOL ScrCmd_DestroyNetworkIcon(ScriptContext *ctx); static BOOL ScrCmd_2B2(ScriptContext *ctx); static BOOL ScrCmd_LockLastTalked(ScriptContext *ctx); static BOOL ScrCmd_2B5(ScriptContext *ctx); @@ -963,7 +964,7 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_0C3, ScrCmd_0C4, ScrCmd_0C5, - ScrCmd_0C6, + ScrCmd_ChangeIntoContestAttire, ScrCmd_CheckPlayerOnBike, ScrCmd_SetPlayerBike, ScrCmd_0C9, @@ -1013,39 +1014,39 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_Unused_0F5, ScrCmd_StartLinkBattle, ScrCmd_Unused_0F7, - ScrCmd_0F8, - ScrCmd_0F9, - ScrCmd_0FA, - ScrCmd_0FB, - ScrCmd_0FC, - ScrCmd_0FD, - ScrCmd_0FE, - ScrCmd_0FF, - ScrCmd_100, - ScrCmd_101, - ScrCmd_102, - ScrCmd_103, - ScrCmd_104, - ScrCmd_105, - ScrCmd_106, - ScrCmd_107, - ScrCmd_108, - ScrCmd_109, - ScrCmd_10A, - ScrCmd_10B, - ScrCmd_10C, - ScrCmd_10D, - ScrCmd_10E, - ScrCmd_10F, - ScrCmd_110, - ScrCmd_111, - ScrCmd_112, - ScrCmd_113, - ScrCmd_114, - ScrCmd_115, + ScrCmd_StartContestCommSync, + ScrCmd_WaitForCommSyncState, + ScrCmd_NewContest, + ScrCmd_EndContest, + ScrCmd_BufferJudgeName, + ScrCmd_BufferContestantTrainerName, + ScrCmd_BufferContestantMonName, + ScrCmd_BufferContestRegistrationEntryNumber, + ScrCmd_WaitForLinkContestSetup, + ScrCmd_RunContestApplication, + ScrCmd_BufferContestRank, + ScrCmd_BufferContestType, + ScrCmd_BufferWinningContestantTrainerName, + ScrCmd_SetTrue, + ScrCmd_BufferWinningContestantMonName, + ScrCmd_GetPlayerContestPlacement, + ScrCmd_GetWinningContestantEntryNum, + ScrCmd_GetContestRegistrationEntryNum, + ScrCmd_GetContestantObjEventGFX, + ScrCmd_GetContestantMonContestFame, + ScrCmd_GetContestMode, + ScrCmd_CheckPlayerMonHasRibbon, + ScrCmd_SetRibbonName, + ScrCmd_GetFirstTimeVictoryAccessory, + ScrCmd_GetContestInfo, + ScrCmd_StartContestCameraFlashTask, + ScrCmd_WaitForContestCameraFlashTask, + ScrCmd_StopHBlank, + ScrCmd_StartHBlank, + ScrCmd_GetShouldSkipAwardCeremony, ScrCmd_ShowLinkContestRecords, ScrCmd_LockAutoScrollForLinkContests, - ScrCmd_118, + ScrCmd_LockTextSpeed, ScrCmd_CheckPartyPokerus, ScrCmd_GetPartyMonGender_Unused, ScrCmd_SetSpecialLocation, @@ -1170,9 +1171,9 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_OpenPartyMenuForUnionRoomBattle, ScrCmd_GetSelectedPartySlot, ScrCmd_OpenPartyMenuForContest, - ScrCmd_195, - ScrCmd_196, - ScrCmd_197, + ScrCmd_TryEnterContestMon, + ScrCmd_SetMonSummary, + ScrCmd_GetMonPartySlot, ScrCmd_GetPartyMonSpecies, ScrCmd_CheckIsPartyMonOutsider, ScrCmd_CountPartyNonEggs, @@ -1454,7 +1455,7 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_IsSequencePlaying, ScrCmd_2AF, ScrCmd_2B0, - ScrCmd_2B1, + ScrCmd_DestroyNetworkIcon, ScrCmd_2B2, ScrCmd_BufferBallSealName, ScrCmd_LockLastTalked, @@ -3458,7 +3459,7 @@ static BOOL ScrCmd_GetSelectedPartySlot(ScriptContext *ctx) *destVar = PartyMenu_GetSelectedSlot(*partySelect); if (*destVar == MAX_PARTY_SIZE + 1) { - *destVar = 0xff; + *destVar = PARTY_SLOT_NONE; } Heap_Free(*partySelect); @@ -3479,7 +3480,7 @@ static BOOL ScrCmd_GetBattleHallSelectedSlots(ScriptContext *ctx) int slot = PartyMenu_GetSelectedSlot(*partySelect); if (slot == MAX_PARTY_SIZE + 1) { - *selectedSlot1 = 0xff; + *selectedSlot1 = PARTY_SLOT_NONE; } else if (slot == MAX_PARTY_SIZE) { *selectedSlot1 = partyMenu->selectionOrder[0]; *selectedSlot1 -= 1; @@ -3509,7 +3510,7 @@ static BOOL ScrCmd_2D4(ScriptContext *ctx) int v1 = PartyMenu_GetSelectedSlot(*v2); if (v1 == MAX_PARTY_SIZE + 1) { - *v3 = 0xff; + *v3 = PARTY_SLOT_NONE; } else if (v1 == MAX_PARTY_SIZE) { *v3 = partyMenu->selectionOrder[0]; *v3 -= 1; @@ -3543,7 +3544,7 @@ static BOOL ScrCmd_2DB(ScriptContext *ctx) int v1 = PartyMenu_GetSelectedSlot(*v2); if (v1 == MAX_PARTY_SIZE + 1) { - *v3 = 0xff; + *v3 = PARTY_SLOT_NONE; } else if (v1 == MAX_PARTY_SIZE) { *v3 = partyMenu->selectionOrder[0]; *v3 -= 1; @@ -3566,68 +3567,68 @@ static BOOL ScrCmd_2DB(ScriptContext *ctx) static BOOL ScrCmd_OpenPartyMenuForContest(ScriptContext *ctx) { - void **pPartyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + void **partyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); u16 selectedPartySlot = ScriptContext_GetVar(ctx); u16 contestRank = ScriptContext_GetVar(ctx); u16 contestType = ScriptContext_GetVar(ctx); - u16 v4 = ScriptContext_GetVar(ctx); + u16 useDefaultContestRank = ScriptContext_GetVar(ctx); - *pPartyMenu = FieldSystem_OpenPartyMenu_SelectForContest(32, ctx->fieldSystem, contestType, contestRank, v4, selectedPartySlot); + *partyMenu = FieldSystem_OpenPartyMenu_SelectForContest(32, ctx->fieldSystem, contestType, contestRank, useDefaultContestRank, selectedPartySlot); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; } -static BOOL ScrCmd_195(ScriptContext *ctx) +static BOOL ScrCmd_TryEnterContestMon(ScriptContext *ctx) { - u16 *v1 = ScriptContext_GetVarPointer(ctx); - u16 *v2 = ScriptContext_GetVarPointer(ctx); - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + u16 *selectedSlot = ScriptContext_GetVarPointer(ctx); + u16 *menuSelection = ScriptContext_GetVarPointer(ctx); + void **partyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - GF_ASSERT(*v0 != 0); + GF_ASSERT(*partyMenu != 0); - *v1 = PartyMenu_GetSelectedSlot(*v0); + *selectedSlot = PartyMenu_GetSelectedSlot(*partyMenu); - if (*v1 == MAX_PARTY_SIZE + 1) { - *v1 = 0xff; + if (*selectedSlot == MAX_PARTY_SIZE + 1) { + *selectedSlot = PARTY_SLOT_NONE; } - *v2 = sub_0203D438(*v0); + *menuSelection = PartyMenu_GetMenuSelectionResult(*partyMenu); - if (*v2 == 1) { - *v2 = 1; + if (*menuSelection == 1) { + *menuSelection = 1; } else { - *v2 = 0; + *menuSelection = 0; } - Heap_Free(*v0); - *v0 = NULL; + Heap_Free(*partyMenu); + *partyMenu = NULL; return FALSE; } -static BOOL ScrCmd_196(ScriptContext *ctx) +static BOOL ScrCmd_SetMonSummary(ScriptContext *ctx) { - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - u16 v1 = ScriptContext_GetVar(ctx); + void **monSummary = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + u16 partySlot = ScriptContext_GetVar(ctx); - *v0 = sub_0203D5C8(32, ctx->fieldSystem, v1); + *monSummary = FieldSystem_GetContestMonSummary(32, ctx->fieldSystem, partySlot); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; } -static BOOL ScrCmd_197(ScriptContext *ctx) +static BOOL ScrCmd_GetMonPartySlot(ScriptContext *ctx) { - u16 *v1 = ScriptContext_GetVarPointer(ctx); - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + u16 *partySlot = ScriptContext_GetVarPointer(ctx); + void **monSummary = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - GF_ASSERT(*v0 != 0); + GF_ASSERT(*monSummary != 0); - *v1 = sub_0203D440(*v0); + *partySlot = PokemonSummary_GetPartySlot(*monSummary); - Heap_Free(*v0); - *v0 = NULL; + Heap_Free(*monSummary); + *monSummary = NULL; return FALSE; } @@ -4542,7 +4543,7 @@ static BOOL sub_02042C80(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_0C6(ScriptContext *ctx) +static BOOL ScrCmd_ChangeIntoContestAttire(ScriptContext *ctx) { ov5_021E0DD4(ctx->task); return TRUE; @@ -7150,10 +7151,10 @@ static BOOL ScrCmd_291(ScriptContext *ctx) *v1 = PartyMenu_GetSelectedSlot(*v0); if (*v1 == MAX_PARTY_SIZE + 1) { - *v1 = 0xff; + *v1 = PARTY_SLOT_NONE; } - *v2 = sub_0203D438(*v0); + *v2 = PartyMenu_GetMenuSelectionResult(*v0); if (*v2 == 1) { *v2 = 1; @@ -7327,7 +7328,7 @@ static BOOL ScrCmd_2B0(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_2B1(ScriptContext *ctx) +static BOOL ScrCmd_DestroyNetworkIcon(ScriptContext *ctx) { NetworkIcon_Destroy(); return FALSE; diff --git a/src/scrcmd_contests.c b/src/scrcmd_contests.c new file mode 100644 index 0000000000..b953686439 --- /dev/null +++ b/src/scrcmd_contests.c @@ -0,0 +1,400 @@ +#include "scrcmd_contests.h" + +#include +#include + +#include "struct_defs/contest_player_mon_dto.h" + +#include "field/field_system_sub2_t.h" +#include "overlay005/hblank_system.h" +#include "overlay006/link_contest_record_display.h" + +#include "contest.h" +#include "field_script_context.h" +#include "field_system.h" +#include "inlines.h" +#include "map_header.h" +#include "party.h" +#include "pokedex.h" +#include "pokemon.h" +#include "save_player.h" +#include "script_manager.h" +#include "string_gf.h" +#include "string_template.h" +#include "system_flags.h" +#include "trainer_info.h" +#include "unk_020298BC.h" +#include "vars_flags.h" + +static BOOL ResumeWhenContestSynced(ScriptContext *ctx); +static BOOL IsContestCommTaskDone(ScriptContext *ctx); +static BOOL IsContestCameraFlashTaskDone(ScriptContext *ctx); + +BOOL ScrCmd_StartContestCommSync(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 syncNo = ScriptContext_GetVar(ctx); + + Contest_StartCommSync(*contest, syncNo); + return FALSE; +} + +BOOL ScrCmd_WaitForCommSyncState(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 syncState = ScriptContext_GetVar(ctx); + + ctx->data[0] = syncState; + + ScriptContext_Pause(ctx, ResumeWhenContestSynced); + return TRUE; +} + +static BOOL ResumeWhenContestSynced(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + return Contest_IsSyncState(*contest, ctx->data[0]); +} + +BOOL ScrCmd_NewContest(ScriptContext *ctx) +{ + String *trainerName; + Pokemon *mon; + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + TrainerInfo *trainerInfo = SaveData_GetTrainerInfo(FieldSystem_GetSaveData(ctx->fieldSystem)); + u16 contestRank = ScriptContext_GetVar(ctx); + u16 contestType = ScriptContext_GetVar(ctx); + u16 competitionType = ScriptContext_GetVar(ctx); + u16 pokemonPartySlot = ScriptContext_GetVar(ctx); + PlayerMonContestDTO playerMonContestDTO; + + mon = Party_GetPokemonBySlotIndex(SaveData_GetParty(ctx->fieldSystem->saveData), pokemonPartySlot); + trainerName = TrainerInfo_NameNewString(trainerInfo, HEAP_ID_FIELD1); + + playerMonContestDTO.contestType = contestType; + playerMonContestDTO.contestRank = contestRank; + playerMonContestDTO.competitionType = competitionType; + playerMonContestDTO.isGameCompleted = SystemFlag_CheckGameCompleted(SaveData_GetVarsFlags(ctx->fieldSystem->saveData)); + playerMonContestDTO.isNatDexObtained = Pokedex_IsNationalDexObtained(SaveData_GetPokedex(ctx->fieldSystem->saveData)); + playerMonContestDTO.monPartySlot = pokemonPartySlot; + playerMonContestDTO.mon = mon; + playerMonContestDTO.trainerName = trainerName; + playerMonContestDTO.trainerInfo = trainerInfo; + playerMonContestDTO.imageClips = SaveData_GetImageClips(ctx->fieldSystem->saveData); + playerMonContestDTO.options = SaveData_GetOptions(ctx->fieldSystem->saveData); + playerMonContestDTO.saveData = ctx->fieldSystem->saveData; + playerMonContestDTO.chatotCry = SaveData_GetChatotCry(ctx->fieldSystem->saveData); + + *contest = Contest_Init(&playerMonContestDTO); + + String_Free(trainerName); + + return FALSE; +} + +BOOL ScrCmd_EndContest(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 unused = ScriptContext_GetVar(ctx); + u32 mapID = MapHeader_GetMapLabelTextID(ctx->fieldSystem->location->mapId); + + Contest_EndContest(*contest, ctx->fieldSystem->saveData, mapID, ctx->fieldSystem->journalEntry); + Contest_Free(*contest); + + return FALSE; +} + +BOOL ScrCmd_BufferJudgeName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 judgeID = ScriptContext_GetVar(ctx); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferJudgeName(*contest, judgeID, *strTemplate, idx); + + return FALSE; +} + +BOOL ScrCmd_BufferContestantTrainerName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTempalte = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 contestantEntryNum = ScriptContext_GetVar(ctx); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferContestantTrainerName(*contest, contestantEntryNum, *strTempalte, idx); + + return FALSE; +} + +BOOL ScrCmd_BufferContestantMonName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 contestantEntryNum = ScriptContext_GetVar(ctx); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferMonNickname(*contest, contestantEntryNum, *strTemplate, idx); + + return FALSE; +} + +BOOL ScrCmd_BufferContestRegistrationEntryNumber(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **str = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 entryNum = ScriptContext_GetVar(ctx); + u16 strNumIdx = ScriptContext_GetVar(ctx); + + StringTemplate_SetNumber(*str, strNumIdx, entryNum, 1, 0, 1); + return FALSE; +} + +BOOL ScrCmd_WaitForLinkContestSetup(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + Contest_SetUpLinkContest(*contest); + ScriptContext_Pause(ctx, IsContestCommTaskDone); + + return TRUE; +} + +static BOOL IsContestCommTaskDone(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + return Contest_IsCommTaskDone(*contest); +} + +BOOL ScrCmd_RunContestApplication(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + FieldTask_InitRunContestTask(ctx->task, *contest); + return TRUE; +} + +BOOL ScrCmd_BufferContestRank(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferContestRank(*contest, *strTemplate, idx); + return FALSE; +} + +BOOL ScrCmd_BufferContestType(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferContestType(*contest, *strTemplate, idx); + return FALSE; +} + +BOOL ScrCmd_BufferWinningContestantTrainerName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferWinningContestantTrainerName(*contest, *strTemplate, idx); + return FALSE; +} + +BOOL ScrCmd_SetTrue(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destTrue = ScriptContext_GetVarPointer(ctx); + + *destTrue = Contest_True(*contest); + return FALSE; +} + +BOOL ScrCmd_BufferWinningContestantMonName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_BufferWinningContestantMonName(*contest, *strTemplate, idx); + return FALSE; +} + +BOOL ScrCmd_GetPlayerContestPlacement(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destPlayerContestPlacement = ScriptContext_GetVarPointer(ctx); + + *destPlayerContestPlacement = Contest_GetPlayerContestPlacement(*contest); + return FALSE; +} + +BOOL ScrCmd_GetWinningContestantEntryNum(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destWinningContestantEntryNum = ScriptContext_GetVarPointer(ctx); + + *destWinningContestantEntryNum = Contest_GetWinningContestantEntryNum(*contest); + return FALSE; +} + +BOOL ScrCmd_GetContestRegistrationEntryNum(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destEntryNum = ScriptContext_GetVarPointer(ctx); + + *destEntryNum = Contest_GetPlayerContestantEntryNum(*contest); + return FALSE; +} + +BOOL ScrCmd_GetContestantObjEventGFX(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 contestantEntryNum = ScriptContext_GetVar(ctx); + u16 *destContestantObjEventGFX = ScriptContext_GetVarPointer(ctx); + + *destContestantObjEventGFX = Contest_GetContestantObjEventGFX(*contest, contestantEntryNum); + return FALSE; +} + +BOOL ScrCmd_GetContestantMonContestFame(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 entryNum = ScriptContext_GetVar(ctx); + u16 *destMonContestFame = ScriptContext_GetVarPointer(ctx); + + *destMonContestFame = Contest_GetContestantMonContestFame(*contest, entryNum); + return FALSE; +} + +BOOL ScrCmd_GetContestMode(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destContestMode = ScriptContext_GetVarPointer(ctx); + + *destContestMode = Contest_GetContestMode(*contest); + return FALSE; +} + +BOOL ScrCmd_GetContestInfo(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *contestRank = ScriptContext_GetVarPointer(ctx); + u16 *contestType = ScriptContext_GetVarPointer(ctx); + u16 *competitionType = ScriptContext_GetVarPointer(ctx); + u16 *monPartySlot = ScriptContext_GetVarPointer(ctx); + + Contest_GetContestInfo(*contest, contestRank, contestType, competitionType, monPartySlot); + return FALSE; +} + +BOOL ScrCmd_CheckPlayerMonHasRibbon(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destHasRibbon = ScriptContext_GetVarPointer(ctx); + + *destHasRibbon = Contest_CheckPlayerMonHasRibbon(*contest); + return FALSE; +} + +BOOL ScrCmd_SetRibbonName(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + StringTemplate **string = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); + u16 idx = ScriptContext_GetVar(ctx); + + Contest_SetRibbonName(*contest, *string, idx, 11); + return FALSE; +} + +BOOL ScrCmd_GetFirstTimeVictoryAccessory(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destAccessoryID = ScriptContext_GetVarPointer(ctx); + + *destAccessoryID = Contest_CalcFirstTimeVictoryAccessoryReward(*contest); + return FALSE; +} + +BOOL ScrCmd_LockAutoScrollForLinkContests(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + Contest_LockAutoScrollForLinkContests(*contest); + return FALSE; +} + +BOOL ScrCmd_LockTextSpeed(ScriptContext *ctx) +{ + void **unused = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + Contest_LockTextSpeed(*unused); + return FALSE; +} + +BOOL ScrCmd_StartContestCameraFlashTask(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 contestantEntryNum = ScriptContext_GetVar(ctx); + + Contest_StartCameraFlashTask(*contest, contestantEntryNum); + return FALSE; +} + +BOOL ScrCmd_WaitForContestCameraFlashTask(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + ScriptContext_Pause(ctx, IsContestCameraFlashTaskDone); + return TRUE; +} + +static BOOL IsContestCameraFlashTaskDone(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + + if (Contest_CameraFlashTaskDone(*contest) == TRUE) { + return TRUE; + } + + return FALSE; +} + +BOOL ScrCmd_StopHBlank(ScriptContext *ctx) +{ + HBlankSystem_Stop(ctx->fieldSystem->unk_04->hBlankSystem); + return FALSE; +} + +BOOL ScrCmd_StartHBlank(ScriptContext *ctx) +{ + HBlankSystem_Start(ctx->fieldSystem->unk_04->hBlankSystem); + return FALSE; +} + +BOOL ScrCmd_GetShouldSkipAwardCeremony(ScriptContext *ctx) +{ + void **contest = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_DATA_PTR); + u16 *destSkipAwardCeremony = ScriptContext_GetVarPointer(ctx); + int winningContestantEntryNum, isLinkContest, v4, isPracticeCompetition, v6; + + sub_02094BB4(*contest, &winningContestantEntryNum, &isLinkContest, &v4, &isPracticeCompetition, &v6); + + if (isLinkContest == TRUE || v4 == 1 || isPracticeCompetition == TRUE || v6 == 1) { + *destSkipAwardCeremony = TRUE; + } else { + *destSkipAwardCeremony = FALSE; + } + + return FALSE; +} + +BOOL ScrCmd_ShowLinkContestRecords(ScriptContext *ctx) +{ + FieldTask_LinkContestRecordDisplayInit(ctx->task); + return TRUE; +} diff --git a/src/scrcmd_tv_broadcast.c b/src/scrcmd_tv_broadcast.c index 511efc4753..7b5d050a2c 100644 --- a/src/scrcmd_tv_broadcast.c +++ b/src/scrcmd_tv_broadcast.c @@ -8,13 +8,13 @@ #include "struct_decls/struct_0202440C_decl.h" #include "struct_defs/image_clips.h" -#include "struct_defs/struct_0202E7D8.h" #include "struct_defs/struct_0202E7E4.h" #include "struct_defs/struct_0202E7F0.h" #include "struct_defs/struct_0202E7FC.h" #include "struct_defs/struct_0202E808.h" #include "struct_defs/struct_0202E810.h" #include "struct_defs/struct_0202E81C.h" +#include "struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h" #include "applications/poketch/poketch_system.h" #include "field/field_system.h" @@ -321,7 +321,7 @@ static BOOL sub_02049358(FieldSystem *fieldSystem) static BOOL sub_02049368(FieldSystem *fieldSystem) { - UnkStruct_0202E7D8 *v0 = sub_0202E7D8(SaveData_GetTVBroadcast(fieldSystem->saveData)); + TVEpisodeSegment_ContestHall_ShowcasedPokemon *v0 = TVBroadcast_GetShowcasedPokemon(SaveData_GetTVBroadcast(fieldSystem->saveData)); return v0->unk_00; } diff --git a/src/script_manager.c b/src/script_manager.c index 9f23cebfb5..c42ac5e227 100644 --- a/src/script_manager.c +++ b/src/script_manager.c @@ -40,7 +40,7 @@ Entry(SCRIPT_ID_OFFSET_FIELD_MOVES, scripts_field_moves, TEXT_BANK_FIELD_MOVES) \ Entry(SCRIPT_ID_OFFSET_POKEDEX_RATINGS, scripts_pokedex_ratings, TEXT_BANK_POKEDEX_RATINGS) \ Entry(9900, scripts_unk_0397, TEXT_BANK_COMMON_STRINGS) \ - Entry(SCRIPT_ID_OFFSET_CONTEST_REGISTRATION, scripts_contest_registration, TEXT_BANK_CONTEST_REGISTRATION) \ + Entry(SCRIPT_ID_OFFSET_CONTESTS, scripts_contests, TEXT_BANK_CONTEST_REGISTRATION) \ Entry(SCRIPT_ID_OFFSET_FOLLOWER_PARTNERS, scripts_follower_partners, TEXT_BANK_FOLLOWER_PARTNERS) \ Entry(SCRIPT_ID_OFFSET_INIT_NEW_GAME, scripts_init_new_game, TEXT_BANK_COMMON_STRINGS) \ Entry(SCRIPT_ID_OFFSET_DAY_CARE_COMMON, scripts_day_care_common, TEXT_BANK_DAY_CARE_COMMON) \ diff --git a/src/tv_episode_segment.c b/src/tv_episode_segment.c index 82289fcbc1..c31a4e36c4 100644 --- a/src/tv_episode_segment.c +++ b/src/tv_episode_segment.c @@ -16,7 +16,6 @@ #include "struct_defs/dress_up_photo.h" #include "struct_defs/image_clips.h" #include "struct_defs/special_encounter.h" -#include "struct_defs/struct_0202E7D8.h" #include "struct_defs/struct_0202E7E4.h" #include "struct_defs/struct_0202E7F0.h" #include "struct_defs/struct_0202E7FC.h" @@ -25,6 +24,7 @@ #include "struct_defs/struct_0202E81C.h" #include "struct_defs/struct_0202E828.h" #include "struct_defs/struct_0202E834.h" +#include "struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h" #include "applications/poketch/poketch_system.h" #include "field/field_system.h" @@ -252,7 +252,7 @@ typedef struct TVEpisodeSegment_ThePoketchWatch { } TVEpisodeSegment_ThePoketchWatch; typedef struct TVEpisodeSegment_ContestHall { - UnkStruct_0202E7D8 unk_00; + TVEpisodeSegment_ContestHall_ShowcasedPokemon showcasedPokemon; u16 customMessageWord; } TVEpisodeSegment_ContestHall; @@ -536,15 +536,15 @@ static void sub_0206CED0(enum HeapID heapID, Pokemon *mon, u8 *param2, u16 *para } } -void sub_0206CF14(TVBroadcast *broadcast, Pokemon *param1, int param2, int param3, int param4) +void TVBroadcast_SetContestHallShowInfo(TVBroadcast *broadcast, Pokemon *mon, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int contestPlacement) { - UnkStruct_0202E7D8 *v0 = sub_0202E7D8(broadcast); + TVEpisodeSegment_ContestHall_ShowcasedPokemon *showcasedPokemon = TVBroadcast_GetShowcasedPokemon(broadcast); - v0->unk_00 = 1; - TVEpisodeSegment_CopyPokemonValues(param1, &v0->unk_02, &v0->unk_04, &v0->language, &v0->unk_06); - v0->unk_08 = param2; - v0->unk_07 = param3; - v0->unk_09 = param4; + showcasedPokemon->unk_00 = 1; + TVEpisodeSegment_CopyPokemonValues(mon, &showcasedPokemon->species, &showcasedPokemon->gender, &showcasedPokemon->language, &showcasedPokemon->metGame); + showcasedPokemon->contestType = contestType; + showcasedPokemon->contestRank = contestRank; + showcasedPokemon->contestPlacement = contestPlacement; SaveData_SetChecksum(SAVE_TABLE_ENTRY_TV_BROADCAST); } @@ -1730,10 +1730,10 @@ void FieldSystem_SaveTVEpisodeSegment_ContestHall(FieldSystem *fieldSystem, u16 { TVEpisodeSegment segments; TVEpisodeSegment_ContestHall *contestHall = &segments.contestHall; - UnkStruct_0202E7D8 *v2 = sub_0202E7D8(SaveData_GetTVBroadcast(fieldSystem->saveData)); + TVEpisodeSegment_ContestHall_ShowcasedPokemon *showcasedPokemon = TVBroadcast_GetShowcasedPokemon(SaveData_GetTVBroadcast(fieldSystem->saveData)); - contestHall->unk_00 = *v2; - v2->unk_00 = 0; + contestHall->showcasedPokemon = *showcasedPokemon; + showcasedPokemon->unk_00 = 0; contestHall->customMessageWord = customMessageWord; SaveData_SetChecksum(SAVE_TABLE_ENTRY_TV_BROADCAST); @@ -1744,14 +1744,14 @@ static int TVEpisodeSegment_LoadMessage_ContestHall(FieldSystem *fieldSystem, St { TVEpisodeSegment_ContestHall *contestHall = ov6_02246498(param2); - TVEpisodeSegment_SetTemplatePokemonSpecies(template, 0, contestHall->unk_00.unk_02, contestHall->unk_00.unk_04, contestHall->unk_00.language, contestHall->unk_00.unk_06); - StringTemplate_SetContestTypeName(template, 1, Contest_GetContestTypeMessageID(contestHall->unk_00.unk_08)); - StringTemplate_SetContestRankName(template, 2, Contest_GetRankMessageID(contestHall->unk_00.unk_07)); - StringTemplate_SetNumber(template, 3, contestHall->unk_00.unk_09, 1, PADDING_MODE_NONE, CHARSET_MODE_EN); + TVEpisodeSegment_SetTemplatePokemonSpecies(template, 0, contestHall->showcasedPokemon.species, contestHall->showcasedPokemon.gender, contestHall->showcasedPokemon.language, contestHall->showcasedPokemon.metGame); + StringTemplate_SetContestTypeName(template, 1, Contest_GetContestTypeMessageID(contestHall->showcasedPokemon.contestType)); + StringTemplate_SetContestRankName(template, 2, Contest_GetRankMessageID(contestHall->showcasedPokemon.contestRank)); + StringTemplate_SetNumber(template, 3, contestHall->showcasedPokemon.contestPlacement, 1, PADDING_MODE_NONE, CHARSET_MODE_EN); TVEpisodeSegment_SetTemplateTrainerName(template, 4, param2); StringTemplate_SetCustomMessageWord(template, 5, contestHall->customMessageWord); - if (contestHall->unk_00.unk_09 == TRUE) { + if (contestHall->showcasedPokemon.contestPlacement == 1) { return TVProgramInterviews_Text_ContestHall_Win; } else { return TVProgramInterviews_Text_ContestHall_Lose; @@ -1761,7 +1761,7 @@ static int TVEpisodeSegment_LoadMessage_ContestHall(FieldSystem *fieldSystem, St static BOOL TVEpisodeSegment_IsEligible_ContestHall(FieldSystem *fieldSystem, UnkStruct_ov6_022465F4 *param1) { TVEpisodeSegment_ContestHall *contestHall = ov6_02246498(param1); - return Pokedex_HasSeenSpecies(SaveData_GetPokedex(fieldSystem->saveData), contestHall->unk_00.unk_02); + return Pokedex_HasSeenSpecies(SaveData_GetPokedex(fieldSystem->saveData), contestHall->showcasedPokemon.species); } void FieldSystem_SaveTVEpisodeSegment_RightOnPhotoCorner(FieldSystem *fieldSystem, u16 customMessageWord) diff --git a/src/unk_020298BC.c b/src/unk_020298BC.c index f7d1a24114..65ae808a11 100644 --- a/src/unk_020298BC.c +++ b/src/unk_020298BC.c @@ -6,6 +6,7 @@ #include "constants/accessories.h" #include "constants/charcode.h" #include "generated/backdrops.h" +#include "generated/pokemon_contest_types.h" #include "struct_defs/image_clips.h" #include "struct_defs/sentence.h" @@ -310,12 +311,12 @@ DressUpPhoto *ImageClips_GetDressUpPhoto(ImageClips *imageClips, int slot) return &imageClips->savedPhotos[slot]; } -UnkStruct_02029C88 *sub_02029CD0(ImageClips *imageClips, int param1) +UnkStruct_02029C88 *sub_02029CD0(ImageClips *imageClips, int contestType) { - GF_ASSERT(param1 < 5); - GF_ASSERT(inline_02029CD0(&imageClips->unk_4C8[param1])); + GF_ASSERT(contestType < CONTEST_TYPE_MAX); + GF_ASSERT(inline_02029CD0(&imageClips->unk_4C8[contestType])); - return &imageClips->unk_4C8[param1]; + return &imageClips->unk_4C8[contestType]; } FashionCase *ImageClips_GetFashionCase(ImageClips *imageClips) @@ -667,10 +668,10 @@ void sub_0202A35C(UnkStruct_02029C88 *param0, u8 param1) param0->unk_94 = param1; } -void sub_0202A378(UnkStruct_02029C88 *param0, u32 param1) +void sub_0202A378(UnkStruct_02029C88 *param0, enum PokemonContestRank contestRank) { GF_ASSERT(inline_02029CD0(param0)); - param0->unk_04 = param1; + param0->unk_04 = contestRank; } void sub_0202A390(UnkStruct_02029C88 *param0, const UnkStruct_02029C88 *param1) diff --git a/src/unk_0202E2CC.c b/src/unk_0202E2CC.c index e42c8626a3..63c747fa23 100644 --- a/src/unk_0202E2CC.c +++ b/src/unk_0202E2CC.c @@ -9,7 +9,6 @@ #include "struct_defs/struct_0202E4D4.h" #include "struct_defs/struct_0202E768.h" #include "struct_defs/struct_0202E794.h" -#include "struct_defs/struct_0202E7D8.h" #include "struct_defs/struct_0202E7E4.h" #include "struct_defs/struct_0202E7F0.h" #include "struct_defs/struct_0202E7FC.h" @@ -18,6 +17,7 @@ #include "struct_defs/struct_0202E81C.h" #include "struct_defs/struct_0202E828.h" #include "struct_defs/struct_0202E834.h" +#include "struct_defs/tv_episode_segment_contest_hall_showcased_pokemon.h" #include "inlines.h" #include "rtc.h" @@ -429,9 +429,9 @@ int sub_0202E7D0(int param0) return param0 | 0x80; } -UnkStruct_0202E7D8 *sub_0202E7D8(TVBroadcast *broadcast) +TVEpisodeSegment_ContestHall_ShowcasedPokemon *TVBroadcast_GetShowcasedPokemon(TVBroadcast *broadcast) { - return &broadcast->unk_AD4; + return &broadcast->showcasedPokemon; } UnkStruct_0202E7E4 *sub_0202E7E4(TVBroadcast *broadcast) diff --git a/src/unk_020363E8.c b/src/unk_020363E8.c index 4c94838c20..9070fa33a7 100644 --- a/src/unk_020363E8.c +++ b/src/unk_020363E8.c @@ -126,7 +126,7 @@ BOOL CommTiming_IsSyncState(u8 syncState) return FALSE; } -int sub_02036564(int netId) +int CommTool_GetSyncNo(int netId) { return sCommTool->syncNo[netId]; } diff --git a/src/unk_0203D1B8.c b/src/unk_0203D1B8.c index e9b8c6aedb..de4ca9a2d1 100644 --- a/src/unk_0203D1B8.c +++ b/src/unk_0203D1B8.c @@ -5,6 +5,7 @@ #include "constants/heap.h" #include "generated/game_records.h" +#include "generated/pokemon_contest_ranks.h" #include "generated/pokemon_contest_types.h" #include "generated/trainer_score_events.h" @@ -418,16 +419,14 @@ PartyMenu *FieldSystem_OpenPartyMenu_SelectForDaycare(int param0, FieldSystem *f return partyMenu; } -int sub_0203D438(void *param0) +int PartyMenu_GetMenuSelectionResult(PartyMenu *partyMenu) { - PartyMenu *partyMenu = param0; return partyMenu->menuSelectionResult; } -int sub_0203D440(void *param0) +int PokemonSummary_GetPartySlot(PokemonSummary *monSummary) { - PokemonSummary *v0 = param0; - return v0->monIndex; + return monSummary->monIndex; } static BOOL sub_0203D444(FieldTask *param0) @@ -496,17 +495,17 @@ PartyMenu *FieldSystem_OpenPartyMenu_SelectForUnionRoomBattle(FieldTask *taskMan return partyMenu; } -PartyMenu *FieldSystem_OpenPartyMenu_SelectForContest(int unused, FieldSystem *fieldSystem, enum PokemonContestType contestType, int contestRank, int param4, int selectedMonSlot) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForContest(int unused, FieldSystem *fieldSystem, enum PokemonContestType contestType, int contestRank, int useDefaultContestRank, int selectedMonSlot) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_CONTEST); partyMenu->selectedMonSlot = selectedMonSlot; partyMenu->unk_29 = 2; partyMenu->contestType = contestType; - if (param4 == 0) { + if (useDefaultContestRank == FALSE) { partyMenu->contestRank = contestRank; } else { - partyMenu->contestRank = 0; + partyMenu->contestRank = CONTEST_RANK_NORMAL; } FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu); @@ -514,27 +513,27 @@ PartyMenu *FieldSystem_OpenPartyMenu_SelectForContest(int unused, FieldSystem *f return partyMenu; } -void *sub_0203D5C8(int param0, FieldSystem *fieldSystem, int param2) +void *FieldSystem_GetContestMonSummary(int unused, FieldSystem *fieldSystem, int partySlot) { - PokemonSummary *v0 = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PokemonSummary)); + PokemonSummary *monSummary = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PokemonSummary)); - v0->monData = SaveData_GetParty(fieldSystem->saveData); - v0->options = SaveData_GetOptions(fieldSystem->saveData); - v0->dataType = SUMMARY_DATA_PARTY_MON; - v0->monIndex = param2; - v0->monMax = Party_GetCurrentCount(v0->monData); - v0->move = 0; - v0->mode = SUMMARY_MODE_NORMAL; - v0->specialRibbons = SaveData_GetRibbons(fieldSystem->saveData); - v0->dexMode = SaveData_GetDexMode(fieldSystem->saveData); - v0->showContest = PokemonSummaryScreen_ShowContestData(fieldSystem->saveData); - v0->chatotCry = NULL; + monSummary->monData = SaveData_GetParty(fieldSystem->saveData); + monSummary->options = SaveData_GetOptions(fieldSystem->saveData); + monSummary->dataType = SUMMARY_DATA_PARTY_MON; + monSummary->monIndex = partySlot; + monSummary->monMax = Party_GetCurrentCount(monSummary->monData); + monSummary->move = 0; + monSummary->mode = SUMMARY_MODE_NORMAL; + monSummary->specialRibbons = SaveData_GetRibbons(fieldSystem->saveData); + monSummary->dexMode = SaveData_GetDexMode(fieldSystem->saveData); + monSummary->showContest = PokemonSummaryScreen_ShowContestData(fieldSystem->saveData); + monSummary->chatotCry = NULL; - PokemonSummaryScreen_FlagVisiblePages(v0, gAllSummaryScreenPages); - PokemonSummaryScreen_SetPlayerProfile(v0, SaveData_GetTrainerInfo(fieldSystem->saveData)); - FieldSystem_StartChildProcess(fieldSystem, &gPokemonSummaryScreenApp, v0); + PokemonSummaryScreen_FlagVisiblePages(monSummary, gAllSummaryScreenPages); + PokemonSummaryScreen_SetPlayerProfile(monSummary, SaveData_GetTrainerInfo(fieldSystem->saveData)); + FieldSystem_StartChildProcess(fieldSystem, &gPokemonSummaryScreenApp, monSummary); - return v0; + return monSummary; } PartyMenu *FieldSystem_OpenPartyMenu_SelectForSpinTrade(FieldSystem *fieldSystem, int selectedMonSlot) diff --git a/src/unk_02046C7C.c b/src/unk_02046C7C.c deleted file mode 100644 index 2a102da9f5..0000000000 --- a/src/unk_02046C7C.c +++ /dev/null @@ -1,400 +0,0 @@ -#include -#include - -#include "struct_defs/struct_02093800.h" - -#include "field/field_system_sub2_t.h" -#include "overlay005/hblank_system.h" -#include "overlay006/link_contest_record_display.h" - -#include "chatot_cry.h" -#include "field_script_context.h" -#include "field_system.h" -#include "inlines.h" -#include "map_header.h" -#include "party.h" -#include "pokedex.h" -#include "pokemon.h" -#include "save_player.h" -#include "script_manager.h" -#include "string_gf.h" -#include "string_template.h" -#include "system_flags.h" -#include "trainer_info.h" -#include "unk_020298BC.h" -#include "unk_020933F8.h" -#include "vars_flags.h" - -static BOOL sub_02046CE0(ScriptContext *param0); -static BOOL sub_02046FDC(ScriptContext *param0); -static BOOL sub_02047404(ScriptContext *param0); - -BOOL ScrCmd_0F8(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v1 = ScriptContext_GetVar(param0); - - sub_02094754(*v0, v1); - return 0; -} - -BOOL ScrCmd_0F9(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v1 = ScriptContext_GetVar(param0); - - param0->data[0] = v1; - - ScriptContext_Pause(param0, sub_02046CE0); - return 1; -} - -static BOOL sub_02046CE0(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - return sub_0209476C(*v0, param0->data[0]); -} - -BOOL ScrCmd_0FA(ScriptContext *param0) -{ - String *v0; - Pokemon *v1; - void **v2 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - TrainerInfo *v3 = SaveData_GetTrainerInfo(FieldSystem_GetSaveData(param0->fieldSystem)); - u16 v4 = ScriptContext_GetVar(param0); - u16 v5 = ScriptContext_GetVar(param0); - u16 v6 = ScriptContext_GetVar(param0); - u16 v7 = ScriptContext_GetVar(param0); - UnkStruct_02093800 v8; - - v1 = Party_GetPokemonBySlotIndex(SaveData_GetParty(param0->fieldSystem->saveData), v7); - v0 = TrainerInfo_NameNewString(v3, 4); - - v8.unk_00 = v5; - v8.unk_01 = v4; - v8.unk_02 = v6; - v8.unk_03 = SystemFlag_CheckGameCompleted(SaveData_GetVarsFlags(param0->fieldSystem->saveData)); - v8.unk_04 = Pokedex_IsNationalDexObtained(SaveData_GetPokedex(param0->fieldSystem->saveData)); - v8.unk_05 = v7; - v8.unk_08 = v1; - v8.unk_0C = v0; - v8.unk_10 = v3; - v8.imageClips = SaveData_GetImageClips(param0->fieldSystem->saveData); - v8.options = SaveData_GetOptions(param0->fieldSystem->saveData); - v8.saveData = param0->fieldSystem->saveData; - v8.unk_20 = SaveData_GetChatotCry(param0->fieldSystem->saveData); - - *v2 = sub_02093800(&v8); - - String_Free(v0); - - return 0; -} - -BOOL ScrCmd_0FB(ScriptContext *param0) -{ - Pokemon *v0; - void **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v2 = ScriptContext_GetVar(param0); - u32 v3 = MapHeader_GetMapLabelTextID(param0->fieldSystem->location->mapId); - - sub_02094C44(*v1, param0->fieldSystem->saveData, v3, param0->fieldSystem->journalEntry); - sub_02093AD4(*v1); - - return 0; -} - -BOOL ScrCmd_0FC(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - u16 v3 = ScriptContext_GetVar(param0); - - sub_02094630(*v0, v2, *v1, v3); - - return 0; -} - -BOOL ScrCmd_0FD(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - u16 v3 = ScriptContext_GetVar(param0); - - sub_02094648(*v0, v2, *v1, v3); - - return 0; -} - -BOOL ScrCmd_0FE(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - u16 v3 = ScriptContext_GetVar(param0); - - sub_02094680(*v0, v2, *v1, v3); - - return 0; -} - -BOOL ScrCmd_0FF(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - u16 v3 = ScriptContext_GetVar(param0); - - StringTemplate_SetNumber(*v1, v3, v2, 1, 0, 1); - return 0; -} - -BOOL ScrCmd_100(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - sub_020943B0(*v0); - ScriptContext_Pause(param0, sub_02046FDC); - - return 1; -} - -static BOOL sub_02046FDC(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - return sub_020944CC(*v0); -} - -BOOL ScrCmd_101(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - sub_020933F8(param0->task, *v0); - return 1; -} - -BOOL ScrCmd_102(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - - sub_020946A4(*v0, *v1, v2); - return 0; -} - -BOOL ScrCmd_103(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - - sub_020946CC(*v0, *v1, v2); - return 0; -} - -BOOL ScrCmd_104(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - - sub_020946F0(*v0, *v1, v2); - return 0; -} - -BOOL ScrCmd_105(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_02094750(*v0); - return 0; -} - -BOOL ScrCmd_106(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - - sub_02094720(*v0, *v1, v2); - return 0; -} - -BOOL ScrCmd_107(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_02094790(*v0); - return 0; -} - -BOOL ScrCmd_108(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_020947A4(*v0); - return 0; -} - -BOOL ScrCmd_109(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_020947C8(*v0); - return 0; -} - -BOOL ScrCmd_10A(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v1 = ScriptContext_GetVar(param0); - u16 *v2 = ScriptContext_GetVarPointer(param0); - - *v2 = sub_020947D8(*v0, v1); - return 0; -} - -BOOL ScrCmd_10B(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v1 = ScriptContext_GetVar(param0); - u16 *v2 = ScriptContext_GetVarPointer(param0); - - *v2 = sub_020947F0(*v0, v1); - return 0; -} - -BOOL ScrCmd_10C(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_02094804(*v0); - return 0; -} - -BOOL ScrCmd_110(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - u16 *v2 = ScriptContext_GetVarPointer(param0); - u16 *v3 = ScriptContext_GetVarPointer(param0); - u16 *v4 = ScriptContext_GetVarPointer(param0); - - sub_02094828(*v0, v1, v2, v3, v4); - return 0; -} - -BOOL ScrCmd_10D(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_02094868(*v0); - return 0; -} - -BOOL ScrCmd_10E(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - StringTemplate **v1 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE); - u16 v2 = ScriptContext_GetVar(param0); - - sub_02094898(*v0, *v1, v2, 11); - return 0; -} - -BOOL ScrCmd_10F(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - - *v1 = sub_02094904(*v0); - return 0; -} - -BOOL ScrCmd_LockAutoScrollForLinkContests(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - LockAutoScrollForLinkContests(*v0); - return FALSE; -} - -BOOL ScrCmd_118(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - sub_02094860(*v0); - return 0; -} - -BOOL ScrCmd_111(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 v1 = ScriptContext_GetVar(param0); - - sub_02094A58(*v0, v1); - return 0; -} - -BOOL ScrCmd_112(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - ScriptContext_Pause(param0, sub_02047404); - return 1; -} - -static BOOL sub_02047404(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - - if (sub_02094B1C(*v0) == 1) { - return 1; - } - - return 0; -} - -BOOL ScrCmd_113(ScriptContext *param0) -{ - HBlankSystem_Stop(param0->fieldSystem->unk_04->hBlankSystem); - return 0; -} - -BOOL ScrCmd_114(ScriptContext *param0) -{ - HBlankSystem_Start(param0->fieldSystem->unk_04->hBlankSystem); - return 0; -} - -BOOL ScrCmd_115(ScriptContext *param0) -{ - void **v0 = FieldSystem_GetScriptMemberPtr(param0->fieldSystem, SCRIPT_MANAGER_DATA_PTR); - u16 *v1 = ScriptContext_GetVarPointer(param0); - int v2, isLinkContest, v4, v5, v6; - - sub_02094BB4(*v0, &v2, &isLinkContest, &v4, &v5, &v6); - - if (isLinkContest == TRUE || v4 == 1 || v5 == 1 || v6 == 1) { - *v1 = 1; - } else { - *v1 = 0; - } - - return 0; -} - -BOOL ScrCmd_ShowLinkContestRecords(ScriptContext *ctx) -{ - FieldTask_LinkContestRecordDisplayInit(ctx->task); - return TRUE; -} diff --git a/src/unk_0205A0D8.c b/src/unk_0205A0D8.c index 4c0597834d..72b663c02f 100644 --- a/src/unk_0205A0D8.c +++ b/src/unk_0205A0D8.c @@ -240,7 +240,7 @@ static BOOL sub_0205A2FC(void) v1 = CommSys_ConnectedCount(); for (v0 = 0; v0 < v1; v0++) { - if (sub_02036564(v0) == 94) { + if (CommTool_GetSyncNo(v0) == 94) { return 1; } } diff --git a/src/unk_020933F8.c b/src/unk_020933F8.c deleted file mode 100644 index e112033961..0000000000 --- a/src/unk_020933F8.c +++ /dev/null @@ -1,1671 +0,0 @@ -#include "unk_020933F8.h" - -#include -#include - -#include "constants/heap.h" -#include "generated/accessories.h" -#include "generated/game_records.h" -#include "generated/pokemon_contest_ranks.h" -#include "generated/trainer_score_events.h" - -#include "struct_decls/struct_0202440C_decl.h" -#include "struct_defs/image_clips.h" -#include "struct_defs/struct_02029C88.h" -#include "struct_defs/struct_02093800.h" -#include "struct_defs/struct_02093BBC.h" -#include "struct_defs/struct_02094A58.h" -#include "struct_defs/struct_02095C48.h" - -#include "field/field_system.h" -#include "overlay006/ov6_022489E4.h" -#include "overlay006/struct_ov6_02248DD8.h" -#include "overlay017/ov17_0223B140.h" -#include "overlay017/ov17_0223CB1C.h" -#include "overlay017/ov17_0223DAD0.h" -#include "overlay017/ov17_0224F4D4.h" -#include "overlay022/ov22_02255D44.h" -#include "savedata/save_table.h" - -#include "assert.h" -#include "brightness_controller.h" -#include "chatot_cry.h" -#include "communication_information.h" -#include "communication_system.h" -#include "field_task.h" -#include "field_transition.h" -#include "game_records.h" -#include "heap.h" -#include "journal.h" -#include "link_contest_records.h" -#include "math_util.h" -#include "party.h" -#include "pokedex.h" -#include "pokemon.h" -#include "ribbon.h" -#include "rtc.h" -#include "savedata.h" -#include "sound_playback.h" -#include "string_gf.h" -#include "string_template.h" -#include "sys_task.h" -#include "sys_task_manager.h" -#include "system_flags.h" -#include "trainer_info.h" -#include "tv_episode_segment.h" -#include "unk_020298BC.h" -#include "unk_020363E8.h" -#include "unk_02094EDC.h" -#include "unk_02095AF0.h" -#include "vars_flags.h" - -#include "constdata/const_020F55DC.h" -#include "constdata/const_020F55EC.h" -#include "constdata/const_020F560C.h" -#include "constdata/const_020F561C.h" - -FS_EXTERN_OVERLAY(overlay17); -FS_EXTERN_OVERLAY(overlay22); - -typedef struct { - UnkStruct_02095C48 *unk_00; - int unk_04; -} UnkStruct_020933F8; - -static UnkStruct_02095C48 *sub_020937C4(void); -static void sub_020937F8(UnkStruct_02095C48 *param0); -static void sub_02094E7C(UnkStruct_02095C48 *param0); -u16 sub_02094E98(UnkStruct_02095C48 *param0); -BOOL sub_020943B0(UnkStruct_02095C48 *param0); -BOOL sub_020944CC(UnkStruct_02095C48 *param0); -BOOL sub_020944D4(UnkStruct_02095C48 *param0); -static void sub_02093C6C(SysTask *param0, void *param1); -UnkStruct_02095C48 *sub_02093800(const UnkStruct_02093800 *param0); -void sub_02093AD4(UnkStruct_02095C48 *param0); -void sub_02094630(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -void sub_02094648(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -void sub_02094680(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3); -static BOOL sub_02093448(FieldTask *param0); -static BOOL sub_020935EC(FieldTask *param0); -void sub_02093BBC(UnkStruct_02095C48 *param0); -void sub_02093C54(UnkStruct_02095C48 *param0); -static void sub_020944E8(UnkStruct_02095C48 *param0); -static void sub_0209451C(SysTask *param0, void *param1); -static void sub_02094EB4(UnkStruct_02095C48 *param0, int param1, UnkStruct_ov6_02248DD8 *param2); -static void sub_02094B30(SysTask *param0, void *param1); -static int sub_02093B2C(Pokemon *param0, int param1); -static void sub_020939E0(UnkStruct_02095C48 *param0, int param1, int param2); - -const ApplicationManagerTemplate Unk_020F560C = { - ov17_0223B140, - ov17_0223B444, - ov17_0223B580, - FS_OVERLAY_ID(overlay17) -}; - -const ApplicationManagerTemplate Unk_020F561C = { - ov17_0223DAD0, - ov17_0223DDD4, - ov17_0223DF0C, - FS_OVERLAY_ID(overlay17) -}; - -const ApplicationManagerTemplate Unk_020F55EC = { - ov17_0223CB1C, - ov17_0223CDDC, - ov17_0223CF8C, - FS_OVERLAY_ID(overlay17) -}; - -const ApplicationManagerTemplate Unk_020F55DC = { - ov17_0224F4D4, - ov17_0224F754, - ov17_0224F86C, - FS_OVERLAY_ID(overlay17) -}; - -const ApplicationManagerTemplate Unk_020F55FC = { - ov22_02256174, - ov22_022562EC, - ov22_02256600, - FS_OVERLAY_ID(overlay22) -}; - -__attribute__((aligned(4))) static const u8 Unk_020F55B4[][3] = { - { 0x14, 0x14, 0xFF }, - { 0xF, 0x19, 0xFF } -}; - -__attribute__((aligned(4))) static const u8 Unk_020F55BC[][4] = { - { 0xA, 0xA, 0x1E, 0xFF }, - { 0xF, 0xF, 0xF, 0xFF } -}; - -__attribute__((aligned(4))) static const u8 Unk_020F55C4[][5] = { - { 0xA, 0x8, 0x14, 0x1C, 0xFF }, - { 0xF, 0xF, 0x8, 0x8, 0xFF } -}; - -__attribute__((aligned(4))) static const u8 Unk_020F55D0[][6] = { - { 0x8, 0x8, 0x8, 0x8, 0x1E, 0xFF }, - { 0xF, 0xF, 0x8, 0x8, 0x14, 0xFF } -}; - -void sub_020933F8(FieldTask *param0, UnkStruct_02095C48 *param1) -{ - UnkStruct_020933F8 *v0 = Heap_AllocAtEnd(HEAP_ID_FIELD2, sizeof(UnkStruct_020933F8)); - - MI_CpuClear8(v0, sizeof(UnkStruct_020933F8)); - v0->unk_00 = param1; - - switch (param1->unk_00.unk_111) { - case 0: - case 1: - case 2: - FieldTask_InitCall(param0, sub_02093448, v0); - break; - default: - FieldTask_InitCall(param0, sub_020935EC, v0); - break; - } -} - -static BOOL sub_02093448(FieldTask *param0) -{ - FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0); - UnkStruct_020933F8 *v1 = FieldTask_GetEnv(param0); - - switch (v1->unk_04) { - case 0: - FieldTransition_FinishMap(param0); - v1->unk_04++; - break; - case 1: - if (v1->unk_00->isLinkContest == FALSE || sub_020944D4(v1->unk_00) == 1) { - v1->unk_04++; - } - break; - case 2: - if (v1->unk_00->isLinkContest == TRUE) { - CommTiming_StartSync(0); - } - - v1->unk_04++; - break; - case 3: - if (v1->unk_00->isLinkContest == TRUE) { - if (CommTiming_IsSyncState(0) == 1) { - v1->unk_04++; - } - } else { - v1->unk_04++; - } - break; - case 4: - sub_02093BBC(v1->unk_00); - FieldTask_RunApplication(param0, &Unk_020F55FC, v1->unk_00->unk_199C); - v1->unk_04++; - break; - case 5: - sub_02093C54(v1->unk_00); - - if (v1->unk_00->isLinkContest == TRUE) { - sub_020944E8(v1->unk_00); - v1->unk_04++; - } else { - v1->unk_04 = 6; - } - break; - case 6: - if (v1->unk_00->isLinkContest == FALSE || sub_020944D4(v1->unk_00) == 1) { - v1->unk_04++; - } - break; - case 7: - FieldTask_RunApplication(param0, &Unk_020F55EC, v1->unk_00); - v1->unk_04++; - break; - case 8: - if ((v1->unk_00->unk_00.unk_111 == 1) || (v1->unk_00->unk_00.unk_111 == 2)) { - FieldTask_RunApplication(param0, &Unk_020F561C, v1->unk_00); - } - - v1->unk_04++; - break; - case 9: - if ((v1->unk_00->unk_00.unk_111 == 0) || (v1->unk_00->unk_00.unk_111 == 2)) { - FieldTask_RunApplication(param0, &Unk_020F560C, v1->unk_00); - } - - v1->unk_04++; - break; - case 10: - FieldTask_RunApplication(param0, &Unk_020F55DC, v1->unk_00); - v1->unk_04++; - break; - case 11: - v1->unk_04++; - break; - case 12: - FieldTransition_StartMap(param0); - v1->unk_04++; - break; - default: - GF_ASSERT(0); - case 13: - Heap_Free(v1); - return 1; - } - - return 0; -} - -static BOOL sub_020935EC(FieldTask *param0) -{ - FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0); - UnkStruct_020933F8 *v1 = FieldTask_GetEnv(param0); - - switch (v1->unk_04) { - case 0: - FieldTransition_FinishMap(param0); - v1->unk_04++; - break; - case 1: - switch (v1->unk_00->unk_00.unk_111) { - case 3: - case 4: - sub_02093BBC(v1->unk_00); - FieldTask_RunApplication(param0, &Unk_020F55FC, v1->unk_00->unk_199C); - break; - } - - v1->unk_04++; - break; - case 2: - switch (v1->unk_00->unk_00.unk_111) { - case 3: - case 4: - sub_02093C54(v1->unk_00); - break; - } - - v1->unk_04++; - break; - case 3: - v1->unk_04++; - break; - case 4: - switch (v1->unk_00->unk_00.unk_111) { - case 3: - case 4: - FieldTask_RunApplication(param0, &Unk_020F55EC, v1->unk_00); - break; - } - - v1->unk_04++; - break; - case 5: - switch (v1->unk_00->unk_00.unk_111) { - case 5: - case 6: - sub_02095338(v1->unk_00); - FieldTask_RunApplication(param0, &Unk_020F561C, v1->unk_00); - break; - } - - v1->unk_04++; - break; - case 6: - switch (v1->unk_00->unk_00.unk_111) { - case 7: - case 8: - FieldTask_RunApplication(param0, &Unk_020F560C, v1->unk_00); - break; - } - - v1->unk_04++; - break; - case 7: { - s32 v2[4]; - int v3, v4; - - switch (v1->unk_00->unk_00.unk_111) { - case 3: - case 4: - for (v3 = 0; v3 < 4; v3++) { - v2[v3] = sub_02095928(v1->unk_00, v3) - + sub_0209598C(v1->unk_00, v3); - } - break; - case 5: - case 6: - for (v3 = 0; v3 < 4; v3++) { - v2[v3] = v1->unk_00->unk_00.unk_118[v3].unk_04; - } - break; - case 7: - case 8: - for (v3 = 0; v3 < 4; v3++) { - v2[v3] = v1->unk_00->unk_00.unk_118[v3].unk_06; - } - break; - } - - v4 = 0; - - for (v3 = 1; v3 < 4; v3++) { - if (v2[0] < v2[v3]) { - v4++; - } - } - - v1->unk_00->unk_00.unk_118[0].unk_08 = v4; - } - v1->unk_04++; - break; - case 8: - FieldTransition_StartMap(param0); - v1->unk_04++; - break; - default: - GF_ASSERT(0); - case 9: - Heap_Free(v1); - return 1; - } - - return 0; -} - -static UnkStruct_02095C48 *sub_020937C4(void) -{ - UnkStruct_02095C48 *v0; - int v1; - - v0 = Heap_Alloc(HEAP_ID_20, sizeof(UnkStruct_02095C48)); - MI_CpuClear8(v0, sizeof(UnkStruct_02095C48)); - - v0->unk_00.unk_113 = 0; - v0->unk_00.unk_117 = 1; - v0->unk_00.unk_116 = 4 - 1; - - return v0; -} - -static void sub_020937F8(UnkStruct_02095C48 *param0) -{ - Heap_Free(param0); -} - -UnkStruct_02095C48 *sub_02093800(const UnkStruct_02093800 *param0) -{ - UnkStruct_02095C48 *v0; - int v1 = 4 - 1; - int v2; - - Heap_Create(HEAP_ID_FIELD2, HEAP_ID_20, 0x3000 + 0x1000); - - v0 = sub_020937C4(); - v0->unk_19A4 = LCRNG_GetSeed(); - - sub_02094E7C(v0); - - v0->unk_00.contestType = param0->unk_00; - v0->unk_00.contestRank = param0->unk_01; - v0->unk_00.unk_111 = param0->unk_02; - v0->unk_00.unk_112 = sub_02095A74(param0->unk_01, 0); - v0->unk_00.unk_10C = v0->unk_00.unk_113; - v0->unk_00.unk_115 = 110; - v0->unk_00.unk_10D = v0->unk_00.unk_115; - v0->unk_00.unk_10E = 1; - v0->imageClips = param0->imageClips; - v0->options = param0->options; - v0->saveData = param0->saveData; - v0->unk_1974 = param0->unk_08; - v0->unk_197C = param0->unk_05; - v0->unk_1978 = param0->unk_10; - v0->isGameCompleted = param0->unk_03; - v0->isNatDexObtained = param0->unk_04; - - for (v2 = 0; v2 < 4; v2++) { - v0->unk_00.unk_E8[v2] = sub_02029C88(HEAP_ID_20); - } - - sub_020954F0(v0, HEAP_ID_FIELD2, v0->unk_00.unk_10E, v0->unk_00.contestType, v0->unk_00.contestRank); - v0->unk_148 = Party_New(HEAP_ID_20); - - for (v2 = 0; v2 < 4; v2++) { - v0->unk_00.unk_00[v2] = Pokemon_New(HEAP_ID_20); - } - - for (v2 = 0; v2 < 4; v2++) { - v0->unk_14C[v2] = ChatotCry_New(HEAP_ID_20); - } - - ChatotCry_Copy(v0->unk_14C[0], param0->unk_20); - - { - Pokemon_Copy(param0->unk_08, v0->unk_00.unk_00[0]); - v0->unk_00.unk_D8[0] = String_Init(8, HEAP_ID_20); - String_Copy(v0->unk_00.unk_D8[0], param0->unk_0C); - - v0->unk_00.unk_F8[0] = TrainerInfo_Gender(param0->unk_10); - v0->unk_00.unk_FC[0] = 0; - v0->unk_00.unk_100[0] = sub_02093B2C(v0->unk_00.unk_00[0], v0->unk_00.contestType); - - if (sub_0209590C(v0) == 0) { - if (TrainerInfo_Gender(param0->unk_10) == 0) { - v0->unk_00.unk_104[0] = 0xba; - } else { - v0->unk_00.unk_104[0] = 0xbb; - } - } else { - if (TrainerInfo_Gender(param0->unk_10) == 0) { - v0->unk_00.unk_104[0] = 0x0; - } else { - v0->unk_00.unk_104[0] = 0x61; - } - } - } - - sub_020939E0(v0, param0->unk_03, param0->unk_04); - - if (sub_0209590C(v0) == 1) { - for (v2 = 0; v2 < 4; v2++) { - v0->unk_156[v2] = 4 - v2 - 1; - } - } else { - for (v2 = 0; v2 < 4; v2++) { - v0->unk_156[v2] = v2; - } - } - - return v0; -} - -static void sub_020939E0(UnkStruct_02095C48 *param0, int param1, int param2) -{ - int v0 = 4 - 1; - int v1; - - sub_02094F04(param0, HEAP_ID_FIELD2, v0, param0->unk_00.contestType, param0->unk_00.contestRank, param0->unk_00.unk_111, param1, param2); - - for (v1 = 1; v1 < 4; v1++) { - sub_02095380(¶m0->unk_00.unk_10[v1], param0->unk_00.unk_00[v1], HEAP_ID_20); - } - - for (v1 = 1; v1 < 4; v1++) { - if (param0->unk_00.unk_D8[v1] == NULL) { - param0->unk_00.unk_D8[v1] = String_Init(8, HEAP_ID_20); - } - - Pokemon_GetValue(param0->unk_00.unk_00[v1], MON_DATA_OT_NAME_STRING, param0->unk_00.unk_D8[v1]); - } - - for (v1 = 1; v1 < 4; v1++) { - param0->unk_00.unk_F8[v1] = param0->unk_00.unk_10[v1].unk_20_12; - } - - for (v1 = 1; v1 < 4; v1++) { - param0->unk_00.unk_FC[v1] = param0->unk_00.unk_10[v1].unk_20_14; - } - - for (v1 = 1; v1 < 4; v1++) { - param0->unk_00.unk_100[v1] = param0->unk_00.unk_10[v1].unk_2E; - } - - for (v1 = 1; v1 < 4; v1++) { - param0->unk_00.unk_104[v1] = param0->unk_00.unk_10[v1].unk_08; - } - - sub_020951B0(param0, 11); -} - -void sub_02093AD4(UnkStruct_02095C48 *param0) -{ - int v0; - - Heap_Free(param0->unk_148); - - for (v0 = 0; v0 < 4; v0++) { - Heap_Free(param0->unk_00.unk_00[v0]); - String_Free(param0->unk_00.unk_D8[v0]); - Heap_Free(param0->unk_00.unk_E8[v0]); - Heap_Free(param0->unk_14C[v0]); - } - - LCRNG_SetSeed(param0->unk_19A4); - sub_020937F8(param0); - Heap_Destroy(HEAP_ID_20); -} - -static int sub_02093B2C(Pokemon *param0, int param1) -{ - int v0, v1, v2; - - v0 = 1; - - for (v1 = 0; v1 <= 3; v1++) { - switch (param1) { - case 0: - v2 = Pokemon_GetValue(param0, MON_DATA_SUPER_COOL_RIBBON + v1, NULL); - break; - case 1: - v2 = Pokemon_GetValue(param0, MON_DATA_SUPER_BEAUTY_RIBBON + v1, NULL); - break; - case 2: - v2 = Pokemon_GetValue(param0, MON_DATA_SUPER_CUTE_RIBBON + v1, NULL); - break; - case 3: - v2 = Pokemon_GetValue(param0, MON_DATA_SUPER_SMART_RIBBON + v1, NULL); - break; - case 4: - v2 = Pokemon_GetValue(param0, MON_DATA_SUPER_TOUGH_RIBBON + v1, NULL); - break; - default: - GF_ASSERT(0); - break; - } - - if (v2 == 0) { - break; - } - - v0++; - } - - return v0; -} - -void sub_02093BBC(UnkStruct_02095C48 *param0) -{ - UnkStruct_02093BBC *v0; - - sub_0202A25C(param0->unk_00.unk_E8[param0->unk_00.unk_113]); - - v0 = Heap_Alloc(HEAP_ID_20, sizeof(UnkStruct_02093BBC)); - MI_CpuClear8(v0, sizeof(UnkStruct_02093BBC)); - - v0->unk_00 = param0->unk_00.unk_00[param0->unk_00.unk_113]; - v0->unk_04 = param0->unk_00.unk_E8[param0->unk_00.unk_113]; - v0->unk_08 = param0->unk_00.unk_112; - - if (param0->isLinkContest == TRUE) { - v0->unk_0C = CONTEST_RANK_LINK; - } else { - v0->unk_0C = param0->unk_00.contestRank; - } - - v0->unk_10 = param0->unk_00.unk_111; - v0->unk_14 = param0->unk_00.contestType; - v0->fashionCase = ImageClips_GetFashionCase(param0->imageClips); - v0->unk_1C = ¶m0->unk_1984; - v0->options = param0->options; - v0->unk_24 = param0->unk_1978; - - param0->unk_199C = v0; -} - -void sub_02093C54(UnkStruct_02095C48 *param0) -{ - Heap_Free(param0->unk_199C); - param0->unk_199C = NULL; -} - -static void sub_02093C6C(SysTask *param0, void *param1) -{ - UnkStruct_02095C48 *v0 = param1; - - switch (v0->unk_15A) { - case 0: - CommTiming_StartSync(5); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 1: - if (CommTiming_IsSyncState(5) == 1) { - v0->unk_15A++; - } - break; - case 2: - if (ov6_02248A64(v0) == 1) { - v0->unk_15A++; - } - break; - case 3: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 4: - CommTiming_StartSync(6); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 5: - if (CommTiming_IsSyncState(6) == 1) { - v0->unk_15A++; - } - break; - case 6: - if (ov6_02248AF0(v0, v0->unk_00.unk_113, v0->unk_00.unk_00[0]) == 1) { - v0->unk_15A++; - } - break; - case 7: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 8: - CommTiming_StartSync(7); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 9: - if (CommTiming_IsSyncState(7) == 1) { - v0->unk_15A++; - } - break; - case 10: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - if (ov6_02248B70(v0, v0->unk_00.unk_00) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 11: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 12: - CommTiming_StartSync(8); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 13: - if (CommTiming_IsSyncState(8) == 1) { - v0->unk_15A++; - } - break; - case 14: - if (ov6_02248BE8(v0, v0->unk_00.unk_113, &v0->unk_00.unk_10[0]) == 1) { - v0->unk_15A++; - } - break; - case 15: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 16: - CommTiming_StartSync(9); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 17: - if (CommTiming_IsSyncState(9) == 1) { - v0->unk_15A++; - } - break; - case 18: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - if (ov6_02248BE8(v0, v0->unk_15C, &v0->unk_00.unk_10[v0->unk_15C]) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 19: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15C++; - - if (v0->unk_15C < 4) { - v0->unk_15A--; - } else { - v0->unk_15C = 0; - v0->unk_15A++; - } - } - break; - case 20: - CommTiming_StartSync(10); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 21: - if (CommTiming_IsSyncState(10) == 1) { - v0->unk_15A++; - } - break; - case 22: - if (ov6_02248CE8(v0, v0->unk_00.unk_113, v0->unk_00.unk_D8[0]) == 1) { - v0->unk_15A++; - } - break; - case 23: - if (v0->unk_568 >= v0->unk_00.unk_117) { - { - int v1; - const TrainerInfo *v2; - - for (v1 = 0; v1 < v0->unk_00.unk_117; v1++) { - v2 = CommInfo_TrainerInfo(v1); - String_Clear(v0->unk_00.unk_D8[v1]); - TrainerInfo_NameString(v2, v0->unk_00.unk_D8[v1]); - } - } - - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 24: - CommTiming_StartSync(11); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 25: - if (CommTiming_IsSyncState(11) == 1) { - v0->unk_15A++; - } - break; - case 26: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - if (ov6_02248CE8(v0, v0->unk_15C, v0->unk_00.unk_D8[v0->unk_15C]) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 27: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15C++; - - if (v0->unk_15C < 4) { - v0->unk_15A--; - } else { - v0->unk_15C = 0; - v0->unk_15A++; - } - } - break; - case 28: - MI_CpuCopy8(v0->unk_14C[0], v0->unk_569, ChatotCry_SaveSize()); - CommTiming_StartSync(12); - - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 29: - if (CommTiming_IsSyncState(12) == 1) { - v0->unk_15A++; - } - break; - case 30: - if (ov6_02248D64(v0, v0->unk_00.unk_113, NULL) == 1) { - v0->unk_15A++; - } - break; - case 31: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 32: - CommTiming_StartSync(13); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 33: - if (CommTiming_IsSyncState(13) == 1) { - v0->unk_15A++; - } - break; - case 34: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - if (ov6_02248D64(v0, v0->unk_15C, v0->unk_14C[v0->unk_15C]) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 35: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15C++; - - if (v0->unk_15C < 4) { - v0->unk_15A--; - } else { - v0->unk_15C = 0; - v0->unk_15A++; - } - } - break; - case 36: - CommTiming_StartSync(14); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 37: - if (CommTiming_IsSyncState(14) == 1) { - v0->unk_15A++; - } - break; - case 38: { - UnkStruct_ov6_02248DD8 v3; - - sub_02094EB4(v0, 0, &v3); - - if (ov6_02248DD8(v0, v0->unk_00.unk_113, &v3) == 1) { - v0->unk_15A++; - } - } break; - case 39: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 40: - CommTiming_StartSync(15); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 41: - if (CommTiming_IsSyncState(15) == 1) { - v0->unk_15A++; - } - break; - case 42: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - UnkStruct_ov6_02248DD8 v4; - - sub_02094EB4(v0, v0->unk_15C, &v4); - - if (ov6_02248DD8(v0, v0->unk_15C, &v4) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 43: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15C++; - - if (v0->unk_15C < 4) { - v0->unk_15A--; - } else { - v0->unk_15C = 0; - v0->unk_15A++; - } - } - break; - case 44: - CommTiming_StartSync(16); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 45: - if (CommTiming_IsSyncState(16) == 1) { - v0->unk_15A++; - } - break; - case 46: - if (ov6_02248C68(v0, v0->unk_00.unk_113, v0->unk_00.unk_C0) == 1) { - v0->unk_15A++; - } - break; - case 47: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - default: { - int v5; - const TrainerInfo *v6; - - for (v5 = 0; v5 < v0->unk_00.unk_117; v5++) { - v6 = CommInfo_TrainerInfo(v5); - v0->unk_00.unk_F8[v5] = TrainerInfo_Gender(v6); - } - - for (; v5 < 4; v5++) { - v0->unk_00.unk_F8[v5] = v0->unk_00.unk_10[v5].unk_20_12; - } - } - - { - v0->unk_1984.unk_14 = v0->unk_00.unk_10C; - v0->unk_1984.unk_15 = v0->unk_00.unk_114; - v0->unk_1984.unk_16 = 1; - v0->unk_1984.unk_17 = v0->unk_00.unk_117; - } - - v0->unk_164 = NULL; - v0->unk_15A = 0; - - SysTask_Done(param0); - return; - } -} - -BOOL sub_020943B0(UnkStruct_02095C48 *param0) -{ - int connectionCount, netID; - - if (CommSys_IsInitialized() == FALSE) { - return FALSE; - } - - param0->isLinkContest = TRUE; - - connectionCount = CommSys_ConnectedCount(); - netID = CommSys_CurNetId(); - - { - int i; - TrainerInfo *connectedTrainerInfo; - - for (i = 0; i < connectionCount; i++) { - connectedTrainerInfo = CommInfo_TrainerInfo(i); - GF_ASSERT(connectedTrainerInfo != NULL); - - if (TrainerInfo_IsMainStoryCleared(connectedTrainerInfo) == FALSE) { - break; - } - } - - if (i != connectionCount) { - param0->isGameCompleted = FALSE; - } else { - param0->isGameCompleted = TRUE; - } - - for (i = 0; i < connectionCount; i++) { - connectedTrainerInfo = CommInfo_TrainerInfo(i); - GF_ASSERT(connectedTrainerInfo != NULL); - - if (TrainerInfo_HasNationalDex(connectedTrainerInfo) == FALSE) { - break; - } - } - - if (i != connectionCount) { - param0->isNatDexObtained = FALSE; - } else { - param0->isNatDexObtained = TRUE; - } - - sub_020939E0(param0, param0->isGameCompleted, param0->isNatDexObtained); - - for (i = 0; i < connectionCount; i++) { - connectedTrainerInfo = CommInfo_TrainerInfo(i); - - if (TrainerInfo_GameCode(connectedTrainerInfo) == 0) { - param0->unk_15B++; - } - } - } - - param0->unk_00.unk_114 = netID; - param0->unk_00.unk_116 = CONTEST_NUM_PARTICIPANTS - connectionCount; - param0->unk_00.unk_117 = connectionCount; - param0->unk_00.unk_113 = netID; - param0->unk_00.unk_115 = 110; - param0->unk_00.unk_112 = sub_02095A74(param0->unk_00.contestRank, TRUE); - - sub_02095AF0(param0); - - param0->unk_164 = SysTask_Start(sub_02093C6C, param0, 10); - - return TRUE; -} - -BOOL sub_020944CC(UnkStruct_02095C48 *param0) -{ - return sub_020944D4(param0); -} - -BOOL sub_020944D4(UnkStruct_02095C48 *param0) -{ - if (param0->unk_164 == NULL) { - return 1; - } - - return 0; -} - -static void sub_020944E8(UnkStruct_02095C48 *param0) -{ - GF_ASSERT(param0->unk_164 == NULL); - - param0->unk_15A = 0; - param0->unk_164 = SysTask_Start(sub_0209451C, param0, 10); -} - -static void sub_0209451C(SysTask *param0, void *param1) -{ - UnkStruct_02095C48 *v0 = param1; - - switch (v0->unk_15A) { - case 0: - CommTiming_StartSync(17); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 1: - if (CommTiming_IsSyncState(17) == 1) { - v0->unk_15A++; - } - break; - case 2: - if (sub_02095B5C(v0, v0->unk_00.unk_113, v0->unk_00.unk_E8[v0->unk_00.unk_113]) == 1) { - v0->unk_15A++; - } - break; - case 3: - if (v0->unk_568 >= v0->unk_00.unk_117) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - case 4: - CommTiming_StartSync(18); - v0->unk_568 = 0; - v0->unk_15A++; - break; - case 5: - if (CommTiming_IsSyncState(18) == 1) { - v0->unk_15A++; - } - break; - case 6: - if (v0->unk_00.unk_113 == v0->unk_00.unk_10C) { - if (sub_02095BEC(v0, v0->unk_00.unk_E8) == 1) { - v0->unk_15A++; - } - } else { - v0->unk_15A++; - } - break; - case 7: - if (v0->unk_568 > 0) { - v0->unk_568 = 0; - v0->unk_15A++; - } - break; - default: - v0->unk_164 = NULL; - v0->unk_15A = 0; - SysTask_Done(param0); - return; - } -} - -void sub_02094630(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3) -{ - StringTemplate_SetContestJudgeName(param2, param3, param0->unk_00.unk_C0[param1].unk_00); -} - -void sub_02094648(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3) -{ - int v0, v1; - - v1 = sub_02095904(param1); - StringTemplate_SetString(param2, param3, param0->unk_00.unk_D8[v1], param0->unk_00.unk_F8[v1], 1, GAME_LANGUAGE); -} - -void sub_02094680(UnkStruct_02095C48 *param0, int param1, StringTemplate *param2, u32 param3) -{ - BoxPokemon *v0; - int v1 = sub_02095904(param1); - v0 = Pokemon_GetBoxPokemon(param0->unk_00.unk_00[v1]); - - StringTemplate_SetNickname(param2, param3, v0); -} - -void sub_020946A4(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2) -{ - u32 v0 = sub_02095848(param0->unk_00.contestRank, param0->unk_00.unk_111, param0->isLinkContest); - StringTemplate_SetContestRankName(param1, param2, v0); -} - -void sub_020946CC(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2) -{ - u32 v0 = sub_020958C4(param0->unk_00.contestType, param0->unk_00.unk_111); - StringTemplate_SetContestTypeName(param1, param2, v0); -} - -void sub_020946F0(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2) -{ - int v0, v1; - int v2; - - for (v2 = 0; v2 < 4; v2++) { - if (param0->unk_00.unk_118[v2].unk_08 == 0) { - break; - } - } - - v0 = v2; - v1 = sub_020958FC(v0); - - sub_02094648(param0, v1, param1, param2); -} - -void sub_02094720(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2) -{ - int v0, v1; - int v2; - - for (v2 = 0; v2 < 4; v2++) { - if (param0->unk_00.unk_118[v2].unk_08 == 0) { - break; - } - } - - v0 = v2; - v1 = sub_020958FC(v0); - - sub_02094680(param0, v1, param1, param2); -} - -u32 sub_02094750(UnkStruct_02095C48 *param0) -{ - return 1; -} - -void sub_02094754(UnkStruct_02095C48 *param0, u8 param1) -{ - if (param0->isLinkContest == FALSE) { - return; - } - - CommTiming_StartSync(param1); -} - -BOOL sub_0209476C(UnkStruct_02095C48 *param0, u8 param1) -{ - if (param0->isLinkContest == FALSE) { - return TRUE; - } - - if (CommTiming_IsSyncState(param1) == 1) { - return TRUE; - } - - return FALSE; -} - -int sub_02094790(UnkStruct_02095C48 *param0) -{ - return param0->unk_00.unk_118[param0->unk_00.unk_113].unk_08; -} - -int sub_020947A4(UnkStruct_02095C48 *param0) -{ - int v0; - int v1; - - for (v1 = 0; v1 < 4; v1++) { - if (param0->unk_00.unk_118[v1].unk_08 == 0) { - return sub_020958FC(v1); - } - } - - return 0; -} - -int sub_020947C8(UnkStruct_02095C48 *param0) -{ - return sub_020958FC(param0->unk_00.unk_113); -} - -int sub_020947D8(UnkStruct_02095C48 *param0, int param1) -{ - int v0; - int v1; - - { - int v2; - - for (v2 = 0; v2 < 4; v2++) { - (void)0; - } - } - - v0 = sub_02095904(param1); - v1 = param0->unk_00.unk_104[v0]; - - return v1; -} - -int sub_020947F0(UnkStruct_02095C48 *param0, int param1) -{ - int v0 = sub_02095904(param1); - return param0->unk_00.unk_100[v0]; -} - -int sub_02094804(UnkStruct_02095C48 *param0) -{ - if (param0->isLinkContest == TRUE) { - return 1; - } - - if (sub_0209590C(param0) == 1) { - return 2; - } - - return 0; -} - -void sub_02094828(UnkStruct_02095C48 *param0, u16 *param1, u16 *param2, u16 *param3, u16 *param4) -{ - *param1 = param0->unk_00.contestRank; - *param2 = param0->unk_00.contestType; - *param3 = param0->unk_00.unk_111; - *param4 = param0->unk_197C; -} - -void LockAutoScrollForLinkContests(UnkStruct_02095C48 *param0) -{ - SetLockTextWithAutoScroll(param0->isLinkContest); -} - -void sub_02094860(UnkStruct_02095C48 *param0) -{ - LockTextSpeed(); -} - -BOOL sub_02094868(UnkStruct_02095C48 *param0) -{ - u32 v0 = CalcMonDataRibbon(param0->unk_00.contestRank, param0->unk_00.contestType); - - if (Pokemon_GetValue(param0->unk_1974, v0, NULL) == 0) { - return 0; - } - - return 1; -} - -void sub_02094898(UnkStruct_02095C48 *param0, StringTemplate *param1, u32 param2, int param3) -{ - u32 v0, v1; - - switch (param0->unk_00.contestType) { - case 0: - v0 = 33 + param0->unk_00.contestRank; - break; - case 1: - v0 = 37 + param0->unk_00.contestRank; - break; - case 2: - v0 = 41 + param0->unk_00.contestRank; - break; - case 3: - v0 = 45 + param0->unk_00.contestRank; - break; - case 4: - v0 = 49 + param0->unk_00.contestRank; - break; - default: - GF_ASSERT(0); - return; - } - - v1 = Ribbon_GetData(v0, RIBBON_DATA_NAME_ID); - StringTemplate_SetRibbonName(param1, param2, v1); -} - -u32 sub_02094904(UnkStruct_02095C48 *param0) -{ - u32 accessoryID = ACCESSORY_COUNT; - - if (param0->unk_00.unk_118[param0->unk_00.unk_113].unk_08 > 0) { - return 0xffff; - } - - switch (param0->unk_00.contestType) { - case CONTEST_TYPE_COOL: - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - accessoryID = ACCESSORY_RED_BARRETTE; - break; - case CONTEST_RANK_GREAT: - accessoryID = ACCESSORY_RED_BALLOONS; - break; - case CONTEST_RANK_ULTRA: - accessoryID = ACCESSORY_TOP_HAT; - break; - case CONTEST_RANK_MASTER: - accessoryID = ACCESSORY_GOLD_PEDESTAL; - break; - } - break; - case CONTEST_TYPE_BEAUTY: - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - accessoryID = ACCESSORY_BLUE_BARRETTE; - break; - case CONTEST_RANK_GREAT: - accessoryID = ACCESSORY_BLUE_BALLOONS; - break; - case CONTEST_RANK_ULTRA: - accessoryID = ACCESSORY_SILK_VEIL; - break; - case CONTEST_RANK_MASTER: - accessoryID = ACCESSORY_GLASS_STAGE; - break; - } - break; - case CONTEST_TYPE_CUTE: - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - accessoryID = ACCESSORY_PINK_BARRETTE; - break; - case CONTEST_RANK_GREAT: - accessoryID = ACCESSORY_PINK_BALLOON; - break; - case CONTEST_RANK_ULTRA: - accessoryID = ACCESSORY_LACE_HEADDRESS; - break; - case CONTEST_RANK_MASTER: - accessoryID = ACCESSORY_FLOWER_STAGE; - break; - } - break; - case CONTEST_TYPE_SMART: - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - accessoryID = ACCESSORY_GREEN_BARRETTE; - break; - case CONTEST_RANK_GREAT: - accessoryID = ACCESSORY_GREEN_BALLOONS; - break; - case CONTEST_RANK_ULTRA: - accessoryID = ACCESSORY_PROFESSOR_HAT; - break; - case CONTEST_RANK_MASTER: - accessoryID = ACCESSORY_CUBE_STAGE; - break; - } - break; - case CONTEST_TYPE_TOUGH: - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - accessoryID = ACCESSORY_YELLOW_BARRETTE; - break; - case CONTEST_RANK_GREAT: - accessoryID = ACCESSORY_YELLOW_BALLOONS; - break; - case CONTEST_RANK_ULTRA: - accessoryID = ACCESSORY_HEROIC_HEADBAND; - break; - case CONTEST_RANK_MASTER: - accessoryID = ACCESSORY_AWARD_PODIUM; - break; - } - break; - } - - GF_ASSERT(accessoryID != ACCESSORY_COUNT); - - ImageClips *imageClips = SaveData_GetImageClips(param0->saveData); - FashionCase *fashionCase = ImageClips_GetFashionCase(imageClips); - - if (!FashionCase_CanFitAccessoryCount(fashionCase, accessoryID, 1)) { - return 0xffff; - } - - return accessoryID; -} - -void sub_02094A58(UnkStruct_02095C48 *param0, int param1) -{ - UnkStruct_02094A58 *v0; - - GF_ASSERT(param0->unk_19A0 == NULL); - - v0 = Heap_AllocAtEnd(HEAP_ID_FIELD1, sizeof(UnkStruct_02094A58)); - MI_CpuClear8(v0, sizeof(UnkStruct_02094A58)); - v0->unk_0C = sub_02095904(param1); - - { - int v1; - - v1 = param0->unk_00.unk_FC[v0->unk_0C] & 1; - - if (param0->isLinkContest == TRUE) { - v0->unk_04 = Unk_020F55D0[v1]; - } else { - switch (param0->unk_00.contestRank) { - case CONTEST_RANK_NORMAL: - v0->unk_04 = Unk_020F55B4[v1]; - break; - case CONTEST_RANK_GREAT: - v0->unk_04 = Unk_020F55BC[v1]; - break; - case CONTEST_RANK_ULTRA: - v0->unk_04 = Unk_020F55C4[v1]; - break; - case CONTEST_RANK_MASTER: - default: - v0->unk_04 = Unk_020F55D0[v1]; - break; - } - } - } - - v0->unk_00 = SysTask_Start(sub_02094B30, param0, 100); - param0->unk_19A0 = v0; -} - -BOOL sub_02094B1C(UnkStruct_02095C48 *param0) -{ - if (param0->unk_19A0 == NULL) { - return 1; - } - - return 0; -} - -static void sub_02094B30(SysTask *param0, void *param1) -{ - UnkStruct_02095C48 *v0 = param1; - UnkStruct_02094A58 *v1 = v0->unk_19A0; - - if (BrightnessController_IsTransitionComplete(BRIGHTNESS_MAIN_SCREEN) == FALSE) { - return; - } - - switch (v1->unk_0B) { - case 0: - v1->unk_08++; - - if (v1->unk_08 > v1->unk_04[v1->unk_0A]) { - BrightnessController_StartTransition(6, 0, 4, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, BRIGHTNESS_MAIN_SCREEN); - Sound_PlayEffect(SEQ_SE_DP_CON_014); - v1->unk_0A++; - v1->unk_08 = 0; - - if (v1->unk_04[v1->unk_0A] == 0xff) { - v1->unk_0B++; - } - } - break; - default: - Heap_Free(v0->unk_19A0); - v0->unk_19A0 = NULL; - SysTask_Done(param0); - return; - } -} - -void sub_02094BB4(UnkStruct_02095C48 *param0, int *param1, BOOL *isLinkContest, int *param3, int *param4, int *param5) -{ - int v0; - int v1; - - for (v1 = 0; v1 < 4; v1++) { - if (param0->unk_00.unk_118[v1].unk_08 == 0) { - break; - } - } - - v0 = v1; - - *param1 = sub_020958FC(v0); - *isLinkContest = param0->isLinkContest; - - if (v0 >= param0->unk_00.unk_117) { - *param3 = 1; - } else { - *param3 = 0; - } - - *param4 = 0; - *param5 = 0; - - switch (param0->unk_00.unk_111) { - case 3: - case 5: - case 7: - *param4 = 1; - break; - case 4: - case 6: - case 8: - *param5 = 1; - break; - } -} - -void sub_02094C44(UnkStruct_02095C48 *param0, SaveData *saveData, u32 param2, JournalEntry *journalEntry) -{ - int v0 = 0; - - switch (param0->unk_00.unk_111) { - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - return; - } - - if (param0->isLinkContest == FALSE) { - VarsFlags *v1 = SaveData_GetVarsFlags(param0->saveData); - - if (param0->unk_00.unk_111 == 2 && param0->unk_00.contestRank >= 3 && sub_02094790(param0) == 0 - && SystemFlag_CheckContestMaster(v1, param0->unk_00.contestType) == 0) { - SystemFlag_SetContestMaster(v1, param0->unk_00.contestType); - } - - if (sub_02094790(param0) == 0) { - u8 v3 = 1; - int v2 = CalcMonDataRibbon(param0->unk_00.contestRank, param0->unk_00.contestType); - - if (Pokemon_GetValue(param0->unk_1974, v2, NULL) == 0) { - v0 = 1; - } - - Pokemon_SetValue(param0->unk_1974, v2, &v3); - sub_0206DDB8(param0->saveData, param0->unk_1974, v2); - } - - TVBroadcast *broadcast = SaveData_GetTVBroadcast(param0->saveData); - sub_0206CF14(broadcast, param0->unk_1974, param0->unk_00.contestType, param0->unk_00.contestRank, param0->unk_00.unk_118[param0->unk_00.unk_113].unk_08 + 1); - - GameRecords *v5 = SaveData_GetGameRecords(param0->saveData); - GameRecords_IncrementRecordValue(v5, RECORD_SUPER_CONTEST_PARTICIPATIONS); - - if (sub_02094790(param0) == 0) { - GameRecords_IncrementRecordValue(v5, RECORD_SUPER_CONTEST_WINS); - GameRecords_IncrementTrainerScore(v5, TRAINER_SCORE_EVENT_WIN_SUPER_CONTEST); - } - - if (v0 == 1) { - GameRecords_IncrementRecordValue(v5, RECORD_RIBBONS_WON); - } - - int i; - Pokedex *pokedex = SaveData_GetPokedex(param0->saveData); - - for (i = param0->unk_00.unk_117; i < 4; i++) { - Pokedex_Encounter(pokedex, param0->unk_00.unk_00[i]); - } - } else { - LinkContestRecords_IncrementSavaData(param0->saveData, param0->unk_00.contestType, param0->unk_00.unk_118[param0->unk_00.unk_113].unk_08); - - GameRecords *records = SaveData_GetGameRecords(param0->saveData); - GameRecords_IncrementRecordValue(records, RECORD_LINK_CONTEST_PARTICIPATIONS); - - if (sub_02094790(param0) == 0) { - GameRecords_IncrementRecordValue(records, RECORD_LINK_CONTEST_WINS); - GameRecords_IncrementTrainerScore(records, TRAINER_SCORE_EVENT_WIN_LINK_CONTEST); - } - - void *journalEntryOnlineEvent = JournalEntry_CreateEventPlacedInContest(param0->unk_00.unk_118[param0->unk_00.unk_113].unk_08 + 1, 11); - JournalEntry *unused = SaveData_GetJournal(param0->saveData); - - JournalEntry_SaveData(journalEntry, journalEntryOnlineEvent, JOURNAL_ONLINE_EVENT); - } - - if (sub_02094790(param0) == 0) { - ImageClips *imageClips = SaveData_GetImageClips(param0->saveData); - UnkStruct_02029C88 *v12 = sub_02029CD0(imageClips, param0->unk_00.contestType); - - sub_0202A25C(v12); - sub_0202A390(v12, param0->unk_00.unk_E8[param0->unk_00.unk_113]); - sub_0202A240(v12); - } - - if (sub_02094790(param0) == 0) { - Pokemon_UpdateFriendship(param0->unk_1974, FRIENDSHIP_EVENT_CONTEST_WIN, param2); - } -} - -static void sub_02094E7C(UnkStruct_02095C48 *param0) -{ - LCRNG_SetSeed((GetSecondsSinceMidnight() * (LCRNG_GetSeed() + 10)) & 0xffff); -} - -u16 sub_02094E98(UnkStruct_02095C48 *param0) -{ - return LCRNG_Next(); -} - -u16 sub_02094EA0(u32 param0, u32 *param1) -{ - u32 v0 = ARNG_Next(param0); - *param1 = v0; - - return v0 / LCRNG_DIVISOR; -} - -static void sub_02094EB4(UnkStruct_02095C48 *param0, int param1, UnkStruct_ov6_02248DD8 *param2) -{ - param2->unk_00 = param0->unk_00.unk_F8[param1]; - param2->unk_01 = param0->unk_00.unk_FC[param1]; - param2->unk_02 = param0->unk_00.unk_100[param1]; - param2->unk_04 = param0->unk_00.unk_104[param1]; -} diff --git a/src/unk_02094EDC.c b/src/unk_02094EDC.c index b07d4b234f..5d5b2cfb32 100644 --- a/src/unk_02094EDC.c +++ b/src/unk_02094EDC.c @@ -10,13 +10,13 @@ #include "struct_defs/struct_020951B0.h" #include "struct_defs/struct_020954F0.h" -#include "struct_defs/struct_02095C48.h" #include "struct_defs/struct_020F568C.h" #include "battle/pokemon_sprite_data.h" #include "overlay006/struct_ov6_02248BE8.h" #include "character_sprite.h" +#include "contest.h" #include "graphics.h" #include "heap.h" #include "math_util.h" @@ -27,7 +27,6 @@ #include "render_text.h" #include "string_gf.h" #include "unk_020298BC.h" -#include "unk_020933F8.h" #include "res/text/bank/contest_effects.h" #include "res/text/bank/contest_text.h" @@ -385,16 +384,16 @@ const UnkStruct_020F568C Unk_020F568C[CONTEST_EFFECT_MAX] = { }, }; -BOOL sub_02094EDC(UnkStruct_02095C48 *param0) +BOOL sub_02094EDC(Contest *contest) { - if (param0->isLinkContest == FALSE || (param0->isLinkContest == TRUE && param0->unk_00.unk_10C == param0->unk_00.unk_113)) { + if (contest->isLinkContest == FALSE || (contest->isLinkContest == TRUE && contest->unk_00.unk_10C == contest->unk_00.playerContestantID)) { return TRUE; } return FALSE; } -void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int param5, BOOL isGameCompleted, BOOL isNatDexObtained) +void sub_02094F04(Contest *contest, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank, int competitionType, BOOL isGameCompleted, BOOL isNatDexObtained) { int v0, v1; u8 *v2; @@ -402,24 +401,24 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en u16 v4; int v5 = 0; int v6; - int v7, v8; + int v7, isPracticeCompetiton; UnkStruct_ov6_02248BE8 *v9; int v10, v11; UnkStruct_ov6_02248BE8 v12; - v8 = 0; - v7 = 0; + isPracticeCompetiton = FALSE; + v7 = FALSE; - switch (param5) { - case 3: - case 5: - case 7: - v8 = 1; + switch (competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_PRACTICE_ACTING: + isPracticeCompetiton = TRUE; break; - case 4: - case 6: - case 8: - v7 = 1; + case CONTEST_COMPETITION_VISUAL: + case CONTEST_COMPETITION_DANCE: + case CONTEST_COMPETITION_ACTING: + v7 = TRUE; break; } @@ -446,7 +445,7 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en } } - if (v8 == 1) { + if (isPracticeCompetiton == TRUE) { if (v9[v0].unk_20_9 == 0) { continue; } @@ -483,7 +482,7 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en } if (v10 > 0) { - v11 = sub_02094E98(param0) % v10; + v11 = Contest_GetRNGNext(contest) % v10; for (v0 = 0; v0 < v3; v0++) { if (v9[v2[v0]].unk_20_10 == 3) { @@ -498,14 +497,14 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en } for (v0 = 4 - param2; v0 < 4; v0++) { - v4 = sub_02094E98(param0) % v3; + v4 = Contest_GetRNGNext(contest) % v3; if (v9[v2[v4]].unk_20_10 == 3) { v0--; continue; } - param0->unk_00.unk_10[v0] = v9[v2[v4]]; + contest->unk_00.unk_10[v0] = v9[v2[v4]]; for (v1 = v4; v2[v1] != 0xff; v1++) { v2[v1] = v2[v1 + 1]; @@ -516,14 +515,14 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en if (v10 > 0) { v4 = 4 - param2; - v4 += sub_02094E98(param0) % param2; - param0->unk_00.unk_10[v4] = v12; + v4 += Contest_GetRNGNext(contest) % param2; + contest->unk_00.unk_10[v4] = v12; } } else { GF_ASSERT(v3 >= 4); for (v0 = 0; v0 < 4; v0++) { - param0->unk_00.unk_10[v0] = v9[v2[v0]]; + contest->unk_00.unk_10[v0] = v9[v2[v0]]; } } @@ -531,64 +530,64 @@ void sub_02094F04(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en Heap_Free(v9); } -void sub_020951B0(UnkStruct_02095C48 *param0, enum HeapID heapID) +void sub_020951B0(Contest *contest, enum HeapID heapID) { - int v0, v1; + int i, v1; UnkStruct_020951B0 *v2; UnkStruct_020951B0 *v3; int v4; int v5; - v2 = LoadMemberFromNARC(NARC_INDEX_CONTEST__DATA__CONTEST_DATA, 2, FALSE, heapID, 1); + v2 = LoadMemberFromNARC(NARC_INDEX_CONTEST__DATA__CONTEST_DATA, 2, FALSE, heapID, TRUE); - switch (param0->unk_00.unk_111) { - case 4: - case 6: - case 8: + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_VISUAL: + case CONTEST_COMPETITION_DANCE: + case CONTEST_COMPETITION_ACTING: v4 = 0; break; default: - v4 = param0->unk_00.unk_117; + v4 = contest->unk_00.connectionCount; break; } - for (v0 = v4; v0 < 4; v0++) { - switch (param0->unk_00.unk_112) { + for (i = v4; i < CONTEST_NUM_PARTICIPANTS; i++) { + switch (contest->unk_00.unk_112) { case 0: - v5 = param0->unk_00.unk_10[v0].unk_22; + v5 = contest->unk_00.unk_10[i].unk_22; break; case 1: - v5 = param0->unk_00.unk_10[v0].unk_23; + v5 = contest->unk_00.unk_10[i].unk_23; break; case 2: - v5 = param0->unk_00.unk_10[v0].unk_24; + v5 = contest->unk_00.unk_10[i].unk_24; break; case 3: - v5 = param0->unk_00.unk_10[v0].unk_25; + v5 = contest->unk_00.unk_10[i].unk_25; break; case 4: - v5 = param0->unk_00.unk_10[v0].unk_26; + v5 = contest->unk_00.unk_10[i].unk_26; break; case 5: - v5 = param0->unk_00.unk_10[v0].unk_27; + v5 = contest->unk_00.unk_10[i].unk_27; break; case 6: - v5 = param0->unk_00.unk_10[v0].unk_28; + v5 = contest->unk_00.unk_10[i].unk_28; break; case 7: - v5 = param0->unk_00.unk_10[v0].unk_29; + v5 = contest->unk_00.unk_10[i].unk_29; break; case 8: - v5 = param0->unk_00.unk_10[v0].unk_2A; + v5 = contest->unk_00.unk_10[i].unk_2A; break; case 9: - v5 = param0->unk_00.unk_10[v0].unk_2B; + v5 = contest->unk_00.unk_10[i].unk_2B; break; case 10: - v5 = param0->unk_00.unk_10[v0].unk_2C; + v5 = contest->unk_00.unk_10[i].unk_2C; break; case 11: - v5 = param0->unk_00.unk_10[v0].unk_2D; + v5 = contest->unk_00.unk_10[i].unk_2D; break; default: GF_ASSERT(FALSE); @@ -598,77 +597,70 @@ void sub_020951B0(UnkStruct_02095C48 *param0, enum HeapID heapID) v3 = &v2[v5]; - sub_0202A25C(param0->unk_00.unk_E8[v0]); - sub_0202A3B0(param0->unk_00.unk_E8[v0], param0->unk_00.unk_00[v0], v3->unk_51); + sub_0202A25C(contest->unk_00.unk_E8[i]); + sub_0202A3B0(contest->unk_00.unk_E8[i], contest->unk_00.contestMons[i], v3->unk_51); for (v1 = 0; v1 < v3->unk_50; v1++) { - sub_0202A3EC(param0->unk_00.unk_E8[v0], v1, v3->unk_00[v1].unk_00, v3->unk_00[v1].unk_01, v3->unk_00[v1].unk_02, v3->unk_00[v1].unk_03); + sub_0202A3EC(contest->unk_00.unk_E8[i], v1, v3->unk_00[v1].unk_00, v3->unk_00[v1].unk_01, v3->unk_00[v1].unk_02, v3->unk_00[v1].unk_03); } - sub_0202A35C(param0->unk_00.unk_E8[v0], v3->unk_52); - sub_0202A378(param0->unk_00.unk_E8[v0], param0->unk_00.contestRank); + sub_0202A35C(contest->unk_00.unk_E8[i], v3->unk_52); + sub_0202A378(contest->unk_00.unk_E8[i], contest->unk_00.contestRank); } Heap_Free(v2); } -void sub_02095338(UnkStruct_02095C48 *param0) +void sub_02095338(Contest *contest) { int i; for (i = 0; i < CONTEST_NUM_PARTICIPANTS; i++) { - sub_0202A25C(param0->unk_00.unk_E8[i]); - sub_0202A3B0(param0->unk_00.unk_E8[i], param0->unk_00.unk_00[i], -1); - sub_0202A35C(param0->unk_00.unk_E8[i], 0); - sub_0202A378(param0->unk_00.unk_E8[i], param0->unk_00.contestRank); + sub_0202A25C(contest->unk_00.unk_E8[i]); + sub_0202A3B0(contest->unk_00.unk_E8[i], contest->unk_00.contestMons[i], -1); + sub_0202A35C(contest->unk_00.unk_E8[i], 0); + sub_0202A378(contest->unk_00.unk_E8[i], contest->unk_00.contestRank); } } -void sub_02095380(const UnkStruct_ov6_02248BE8 *param0, Pokemon *param1, enum HeapID heapID) +void sub_02095380(const UnkStruct_ov6_02248BE8 *param0, Pokemon *mon, enum HeapID heapID) { int i; u16 v1; - u32 v2 = sub_02074128(param0->unk_14, param0->unk_20_12, 0); - Pokemon_InitWith(param1, param0->unk_14, 10, INIT_IVS_RANDOM, TRUE, v2, OTID_NOT_SHINY, 0xf0f0f0f); + u32 personality = sub_02074128(param0->unk_14, param0->unk_20_12, 0); + Pokemon_InitWith(mon, param0->unk_14, 10, INIT_IVS_RANDOM, TRUE, personality, OTID_NOT_SHINY, 0xf0f0f0f); for (i = 0; i < LEARNED_MOVES_MAX; i++) { v1 = param0->unk_0C[i]; - Pokemon_SetValue(param1, MON_DATA_MOVE1 + i, &v1); + Pokemon_SetValue(mon, MON_DATA_MOVE1 + i, &v1); } - { - String *v3, *v4; - MessageLoader *contestOpponentNames; + MessageLoader *contestOpponentNames = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_OPPONENT_NAMES, heapID); + String *monNickname = MessageLoader_GetNewString(contestOpponentNames, param0->unk_16); + String *monOTName = MessageLoader_GetNewString(contestOpponentNames, param0->unk_18); - contestOpponentNames = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_CONTEST_OPPONENT_NAMES, heapID); - v3 = MessageLoader_GetNewString(contestOpponentNames, param0->unk_16); - v4 = MessageLoader_GetNewString(contestOpponentNames, param0->unk_18); + Pokemon_SetValue(mon, MON_DATA_NICKNAME_STRING, monNickname); + Pokemon_SetValue(mon, MON_DATA_OT_NAME_STRING, monOTName); - Pokemon_SetValue(param1, MON_DATA_NICKNAME_STRING, v3); - Pokemon_SetValue(param1, MON_DATA_OT_NAME_STRING, v4); + String_Free(monNickname); + String_Free(monOTName); + MessageLoader_Free(contestOpponentNames); - String_Free(v3); - String_Free(v4); - MessageLoader_Free(contestOpponentNames); - } + u8 cool, beauty, cute, smart, tough, sheen; - { - u8 cool, beauty, cute, smart, tough, sheen; + cool = param0->cool; + beauty = param0->beauty; + cute = param0->cute; + smart = param0->smart; + tough = param0->tough; + sheen = param0->sheen; - cool = param0->unk_1A; - beauty = param0->unk_1B; - cute = param0->unk_1C; - smart = param0->unk_1D; - tough = param0->unk_1E; - sheen = param0->unk_1F; - - Pokemon_SetValue(param1, MON_DATA_COOL, &cool); - Pokemon_SetValue(param1, MON_DATA_BEAUTY, &beauty); - Pokemon_SetValue(param1, MON_DATA_CUTE, &cute); - Pokemon_SetValue(param1, MON_DATA_SMART, &smart); - Pokemon_SetValue(param1, MON_DATA_TOUGH, &tough); - Pokemon_SetValue(param1, MON_DATA_SHEEN, &sheen); - } + Pokemon_SetValue(mon, MON_DATA_COOL, &cool); + Pokemon_SetValue(mon, MON_DATA_BEAUTY, &beauty); + Pokemon_SetValue(mon, MON_DATA_CUTE, &cute); + Pokemon_SetValue(mon, MON_DATA_SMART, &smart); + Pokemon_SetValue(mon, MON_DATA_TOUGH, &tough); + Pokemon_SetValue(mon, MON_DATA_SHEEN, &sheen); } PokemonSprite *sub_02095484(PokemonSpriteManager *param0, int param1, Pokemon *param2, int param3, PokemonSpriteData *pokemonSpriteData, enum HeapID heapID, int param6, int param7, int param8) @@ -692,7 +684,7 @@ PokemonSprite *sub_02095484(PokemonSpriteManager *param0, int param1, Pokemon *p return v1; } -void sub_020954F0(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank) +void sub_020954F0(Contest *contest, enum HeapID heapID, int param2, enum PokemonContestType contestType, enum PokemonContestRank contestRank) { int v0, v1; u8 v2 = 0, v3 = 0; @@ -750,20 +742,20 @@ void sub_020954F0(UnkStruct_02095C48 *param0, enum HeapID heapID, int param2, en GF_ASSERT(v2 >= 2); for (v0 = 0; v0 < 2; v0++) { - param0->unk_00.unk_C0[v0] = v6[v7[v0]]; + contest->unk_00.unk_C0[v0] = v6[v7[v0]]; } GF_ASSERT(v3 >= 1); - v4 = sub_02094E98(param0) % v3; - param0->unk_00.unk_C0[2] = v6[v8[v4]]; + v4 = Contest_GetRNGNext(contest) % v3; + contest->unk_00.unk_C0[2] = v6[v8[v4]]; { UnkStruct_020954F0 v9; - param0->unk_00.unk_10E = param2; - v9 = param0->unk_00.unk_C0[param2]; - param0->unk_00.unk_C0[param2] = param0->unk_00.unk_C0[2]; - param0->unk_00.unk_C0[2] = v9; + contest->unk_00.unk_10E = param2; + v9 = contest->unk_00.unk_C0[param2]; + contest->unk_00.unk_C0[param2] = contest->unk_00.unk_C0[2]; + contest->unk_00.unk_C0[2] = v9; } Heap_Free(v8); @@ -777,7 +769,7 @@ s8 sub_02095734(enum ContestEffects contestEffect) return Unk_020F568C[contestEffect].unk_04; } -void LoadTwoLineContestEffectMessages(int moveContestEffectID, u32 *lineOneEffectMessageID, u32 *lineTwoEffectMessageID) +void Contest_LoadTwoLineContestEffectMessages(int moveContestEffectID, u32 *lineOneEffectMessageID, u32 *lineTwoEffectMessageID) { GF_ASSERT(moveContestEffectID < (NELEMS(Unk_020F568C))); @@ -791,36 +783,36 @@ u32 sub_0209577C(int param0) return 46 + (param0 - 1); } -void sub_02095790(int param0, int param1, u32 *destMessageID, u32 *param3) +void sub_02095790(int contestMoveEffect, int param1, u32 *destMessageID, u32 *param3) { - GF_ASSERT(param0 < (NELEMS(Unk_020F568C))); + GF_ASSERT(contestMoveEffect < (NELEMS(Unk_020F568C))); switch (param1) { case 0: default: - *destMessageID = Unk_020F568C[param0].unk_06; - *param3 = Unk_020F568C[param0].unk_08; + *destMessageID = Unk_020F568C[contestMoveEffect].unk_06; + *param3 = Unk_020F568C[contestMoveEffect].unk_08; break; case 1: - *destMessageID = Unk_020F568C[param0].unk_0A; - *param3 = Unk_020F568C[param0].unk_0C; + *destMessageID = Unk_020F568C[contestMoveEffect].unk_0A; + *param3 = Unk_020F568C[contestMoveEffect].unk_0C; break; case 2: - *destMessageID = Unk_020F568C[param0].unk_0E; - *param3 = Unk_020F568C[param0].unk_10; + *destMessageID = Unk_020F568C[contestMoveEffect].unk_0E; + *param3 = Unk_020F568C[contestMoveEffect].unk_10; break; case 3: - *destMessageID = Unk_020F568C[param0].unk_12; - *param3 = Unk_020F568C[param0].unk_14; + *destMessageID = Unk_020F568C[contestMoveEffect].unk_12; + *param3 = Unk_020F568C[contestMoveEffect].unk_14; break; case 4: - *destMessageID = Unk_020F568C[param0].unk_16; - *param3 = Unk_020F568C[param0].unk_18; + *destMessageID = Unk_020F568C[contestMoveEffect].unk_16; + *param3 = Unk_020F568C[contestMoveEffect].unk_18; break; } } -u32 sub_02095848(enum PokemonContestRank contestRank, int param1, BOOL isLinkContest) +u32 Contest_GetContestRankTitleMessageID(enum PokemonContestRank contestRank, int competitionType, BOOL isLinkContest) { u32 messageID; @@ -828,10 +820,10 @@ u32 sub_02095848(enum PokemonContestRank contestRank, int param1, BOOL isLinkCon return Contest_Text_Link; } - switch (param1) { - case 3: - case 5: - case 7: + switch (competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_PRACTICE_ACTING: return Contest_Text_Practice; } @@ -880,16 +872,16 @@ u32 Contest_GetRankMessageID(enum PokemonContestRank contestRank) return messageID; } -u32 Contest_GetContestTypeMessageID(int contestType) +u32 Contest_GetContestTypeMessageID(enum PokemonContestType contestType) { - return sub_020958C4(contestType, 2); + return Contest_GetFullContestTypeMessageID(contestType, 2); } -u32 sub_020958C4(enum PokemonContestType contestType, int param1) +u32 Contest_GetFullContestTypeMessageID(enum PokemonContestType contestType, int competitionType) { u32 messageID; - if (param1 == 5) { + if (competitionType == CONTEST_COMPETITION_PRACTICE_DANCE) { return Contest_Text_Contest; } @@ -915,29 +907,29 @@ u32 sub_020958C4(enum PokemonContestType contestType, int param1) return messageID; } -int sub_020958FC(int param0) +int Contest_ContestantIDToContestantEntryNum(int contestantID) { - return 4 - param0 - 1; + return CONTEST_NUM_PARTICIPANTS - contestantID - 1; } -int sub_02095904(int param0) +int Contest_ContestantEntryNumToContestantID(int contestantEntryNum) { - return 4 - param0 - 1; + return CONTEST_NUM_PARTICIPANTS - contestantEntryNum - 1; } -BOOL sub_0209590C(UnkStruct_02095C48 *param0) +BOOL Contest_IsPracticeCompetition(Contest *contest) { - switch (param0->unk_00.unk_111) { - case 3: - case 5: - case 7: - return 1; + switch (contest->unk_00.competitionType) { + case CONTEST_COMPETITION_PRACTICE_VISUAL: + case CONTEST_COMPETITION_PRACTICE_DANCE: + case CONTEST_COMPETITION_PRACTICE_ACTING: + return TRUE; } - return 0; + return FALSE; } -int sub_02095928(UnkStruct_02095C48 *param0, int param1) +int sub_02095928(Contest *contest, int param1) { int v0, v1, v2; const u16 *v3; @@ -950,12 +942,12 @@ int sub_02095928(UnkStruct_02095C48 *param0, int param1) }; v0 = 0; - v1 = param0->unk_00.unk_118[param1].unk_00; + v1 = contest->unk_00.unk_118[param1].unk_00; - if (param0->isLinkContest == TRUE) { + if (contest->isLinkContest == TRUE) { v3 = v4[CONTEST_RANK_LINK]; } else { - v3 = v4[param0->unk_00.contestRank]; + v3 = v4[contest->unk_00.contestRank]; } for (v2 = 0; v2 < 8; v2++) { @@ -969,7 +961,7 @@ int sub_02095928(UnkStruct_02095C48 *param0, int param1) return v0; } -int sub_0209598C(UnkStruct_02095C48 *param0, int param1) +int sub_0209598C(Contest *contest, int param1) { int v0, v1, v2; const u8 *v3; @@ -982,16 +974,16 @@ int sub_0209598C(UnkStruct_02095C48 *param0, int param1) }; v0 = 0; - v1 = param0->unk_00.unk_118[param1].unk_02; + v1 = contest->unk_00.unk_118[param1].unk_02; if (v1 == 0) { return 0; } - if (param0->isLinkContest == TRUE) { + if (contest->isLinkContest == TRUE) { v3 = v4[CONTEST_RANK_LINK]; } else { - v3 = v4[param0->unk_00.contestRank]; + v3 = v4[contest->unk_00.contestRank]; } v0 = 1; diff --git a/src/unk_02095AF0.c b/src/unk_02095AF0.c index 87ff8a1401..558ed6aa96 100644 --- a/src/unk_02095AF0.c +++ b/src/unk_02095AF0.c @@ -6,7 +6,6 @@ #include "struct_defs/struct_02029C88.h" #include "struct_defs/struct_02039A58.h" #include "struct_defs/struct_02095B28.h" -#include "struct_defs/struct_02095C48.h" #include "struct_defs/struct_02095C60.h" #include "overlay006/ov6_022489E4.h" @@ -14,6 +13,7 @@ #include "overlay017/struct_ov17_0224EDE0.h" #include "communication_system.h" +#include "contest.h" #include "heap.h" #include "unk_020298BC.h" #include "unk_02032798.h" @@ -54,7 +54,7 @@ void sub_02095AF0(void *param0) static u8 *sub_02095B04(int param0, void *param1, int param2) { - UnkStruct_02095C48 *v0 = param1; + Contest *v0 = param1; GF_ASSERT(param2 < 1024); return v0->unk_969[param0]; @@ -77,7 +77,7 @@ static void sub_02095B2C(int param0, int param1, void *param2, void *param3) static void sub_02095B30(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1; int v2; u8 *v3; @@ -91,7 +91,7 @@ static void sub_02095B30(int param0, int param1, void *param2, void *param3) v0->unk_568++; } -BOOL sub_02095B5C(UnkStruct_02095C48 *param0, int param1, const UnkStruct_02029C88 *param2) +BOOL sub_02095B5C(Contest *param0, int param1, const UnkStruct_02029C88 *param2) { u8 *v0; int v1; @@ -114,7 +114,7 @@ BOOL sub_02095B5C(UnkStruct_02095C48 *param0, int param1, const UnkStruct_02029C static void sub_02095B9C(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; int v1, v2; u8 *v3; int v4; @@ -132,7 +132,7 @@ static void sub_02095B9C(int param0, int param1, void *param2, void *param3) v0->unk_568++; } -BOOL sub_02095BEC(UnkStruct_02095C48 *param0, UnkStruct_02029C88 **param1) +BOOL sub_02095BEC(Contest *param0, UnkStruct_02029C88 **param1) { u8 *v0; int v1, v2; @@ -161,7 +161,7 @@ BOOL sub_02095BEC(UnkStruct_02095C48 *param0, UnkStruct_02029C88 **param1) static void sub_02095C48(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; MI_CpuCopy8(param2, &v0->unk_1984.unk_00, param1); } @@ -187,7 +187,7 @@ BOOL sub_02095C60(UnkStruct_02095C60 *param0, u32 param1) static void sub_02095C98(int param0, int param1, void *param2, void *param3) { - UnkStruct_02095C48 *v0 = param3; + Contest *v0 = param3; UnkStruct_02095B28 *v1 = param2; v0->unk_1984.unk_10[param0] = v1->unk_04; }