From cc882e5de2ffa56d30febf4c00a262190a70f19b Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 18 Jan 2026 01:00:03 -0500 Subject: [PATCH 1/7] Added more descriptive names for Match Call text flags --- src/pokenav_match_call_data.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 3f47550f17..06bc6111f7 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -28,8 +28,8 @@ enum typedef struct MatchCallTextDataStruct { const u8 *text; - u16 flag; - u16 flag2; + u16 availabilityFlag; + u16 flagToSetOnCompletion; } match_call_text_data_t; struct MatchCallStructCommon { @@ -993,12 +993,12 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *textDa i--; while (i) { - if (textData[i].flag != 0xFFFF && FlagGet(textData[i].flag) == TRUE) + if (textData[i].availabilityFlag != 0xFFFF && FlagGet(textData[i].flag) == TRUE) break; i--; } - if (textData[i].flag2 != 0xFFFF) - FlagSet(textData[i].flag2); + if (textData[i].flagToSetOnCompletion != 0xFFFF) + FlagSet(textData[i].flagToSetOnCompletion); StringExpandPlaceholders(dest, textData[i].text); } @@ -1007,17 +1007,17 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d u32 i; for (i = 0; textData[i].text != NULL; i++) { - if (textData[i].flag == 0xFFFE) + if (textData[i].availabilityFlag == 0xFFFE) break; - if (textData[i].flag != 0xFFFF && !FlagGet(textData[i].flag)) + if (textData[i].availabilityFlag != 0xFFFF && !FlagGet(textData[i].flag)) break; } - if (textData[i].flag != 0xFFFE) + if (textData[i].availabilityFlag != 0xFFFE) { if (i) i--; - if (textData[i].flag2 != 0xFFFF) - FlagSet(textData[i].flag2); + if (textData[i].flagToSetOnCompletion != 0xFFFF) + FlagSet(textData[i].flagToSetOnCompletion); StringExpandPlaceholders(dest, textData[i].text); } else From 509f652ac62384239ebaab3859a8fd78b5840259 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 18 Jan 2026 01:08:12 -0500 Subject: [PATCH 2/7] Added defines for 0xFFFF --- src/pokenav_match_call_data.c | 265 +++++++++++++++++----------------- 1 file changed, 134 insertions(+), 131 deletions(-) diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 06bc6111f7..9a27058e2c 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -157,21 +157,24 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *, u8 * static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_data_t *, u16, u8 *); static void MatchCall_GetNameAndDescByRematchIdx(u32, const u8 **, const u8 **); +#define ALWAYS_AVAILABLE 0xFFFF +#define NO_FLAG_TO_SET 0xFFFF + // .rodata static const match_call_text_data_t sMrStoneTextScripts[] = { - { MatchCall_Text_MrStone1, 0xFFFF, FLAG_ENABLE_MR_STONE_POKENAV }, - { MatchCall_Text_MrStone2, FLAG_ENABLE_MR_STONE_POKENAV, 0xFFFF }, - { MatchCall_Text_MrStone3, FLAG_DELIVERED_STEVEN_LETTER, 0xFFFF }, - { MatchCall_Text_MrStone4, FLAG_RECEIVED_EXP_SHARE, 0xFFFF }, - { MatchCall_Text_MrStone5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF }, - { MatchCall_Text_MrStone6, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF }, - { MatchCall_Text_MrStone7, FLAG_RECEIVED_CASTFORM, 0xFFFF }, - { MatchCall_Text_MrStone8, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF }, - { MatchCall_Text_MrStone9, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF }, - { MatchCall_Text_MrStone10, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF }, - { MatchCall_Text_MrStone11, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_MrStone1, ALWAYS_AVAILABLE, FLAG_ENABLE_MR_STONE_POKENAV }, + { MatchCall_Text_MrStone2, FLAG_ENABLE_MR_STONE_POKENAV, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone3, FLAG_DELIVERED_STEVEN_LETTER, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone4, FLAG_RECEIVED_EXP_SHARE, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone6, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone7, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone8, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone9, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone10, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_MrStone11, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructNPC sMrStoneMatchCallHeader = @@ -185,16 +188,16 @@ static const struct MatchCallStructNPC sMrStoneMatchCallHeader = }; static const match_call_text_data_t sNormanTextScripts[] = { - { MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, 0xFFFF }, - { MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF }, - { MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF }, - { MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF }, - { MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF }, - { MatchCall_Text_Norman6, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Norman1, FLAG_ENABLE_NORMAN_MATCH_CALL, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman4, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman5, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman6, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sNormanMatchCallHeader = @@ -218,10 +221,10 @@ static const struct MatchCallBirch sProfBirchMatchCallHeader = }; static const match_call_text_data_t sMomTextScripts[] = { - { MatchCall_Text_Mom1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Mom2, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF }, - { MatchCall_Text_Mom3, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Mom1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Mom2, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Mom3, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructNPC sMomMatchCallHeader = @@ -235,14 +238,14 @@ static const struct MatchCallStructNPC sMomMatchCallHeader = }; static const match_call_text_data_t sStevenTextScripts[] = { - { MatchCall_Text_Steven1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Steven2, FLAG_RUSTURF_TUNNEL_OPENED, 0xFFFF }, - { MatchCall_Text_Steven3, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF }, - { MatchCall_Text_Steven4, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF }, - { MatchCall_Text_Steven5, FLAG_DEFEATED_MOSSDEEP_GYM, 0xFFFF }, - { MatchCall_Text_Steven6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF }, - { MatchCall_Text_Steven7, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF }, + { MatchCall_Text_Steven1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven2, FLAG_RUSTURF_TUNNEL_OPENED, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven3, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven4, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven5, FLAG_DEFEATED_MOSSDEEP_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, + { MatchCall_Text_Steven7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, }; static const struct MatchCallStructNPC sStevenMatchCallHeader = @@ -256,22 +259,22 @@ static const struct MatchCallStructNPC sStevenMatchCallHeader = }; static const match_call_text_data_t sMayTextScripts[] = { - { MatchCall_Text_May1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_May2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF }, - { MatchCall_Text_May3, FLAG_DELIVERED_DEVON_GOODS, 0xFFFF }, - { MatchCall_Text_May4, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF }, - { MatchCall_Text_May5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF }, - { MatchCall_Text_May6, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF }, - { MatchCall_Text_May7, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF }, - { MatchCall_Text_May8, FLAG_RECEIVED_CASTFORM, 0xFFFF }, - { MatchCall_Text_May9, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF }, - { MatchCall_Text_May10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF }, - { MatchCall_Text_May11, FLAG_MET_TEAM_AQUA_HARBOR, 0xFFFF }, - { MatchCall_Text_May12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF }, - { MatchCall_Text_May13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF }, - { MatchCall_Text_May14, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF }, - { MatchCall_Text_May15, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_May1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_May2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_May3, FLAG_DELIVERED_DEVON_GOODS, NO_FLAG_TO_SET }, + { MatchCall_Text_May4, FLAG_HIDE_MAUVILLE_CITY_WALLY, NO_FLAG_TO_SET }, + { MatchCall_Text_May5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET }, + { MatchCall_Text_May6, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_May7, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_May8, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET }, + { MatchCall_Text_May9, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_May10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET }, + { MatchCall_Text_May11, FLAG_MET_TEAM_AQUA_HARBOR, NO_FLAG_TO_SET }, + { MatchCall_Text_May12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, + { MatchCall_Text_May13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, + { MatchCall_Text_May14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_May15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallRival sMayMatchCallHeader = @@ -285,22 +288,22 @@ static const struct MatchCallRival sMayMatchCallHeader = }; static const match_call_text_data_t sBrendanTextScripts[] = { - { MatchCall_Text_Brendan1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Brendan2, FLAG_DEFEATED_DEWFORD_GYM, 0xFFFF }, - { MatchCall_Text_Brendan3, FLAG_DELIVERED_DEVON_GOODS, 0xFFFF }, - { MatchCall_Text_Brendan4, FLAG_HIDE_MAUVILLE_CITY_WALLY, 0xFFFF }, - { MatchCall_Text_Brendan5, FLAG_RECEIVED_HM_STRENGTH, 0xFFFF }, - { MatchCall_Text_Brendan6, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF }, - { MatchCall_Text_Brendan7, FLAG_DEFEATED_PETALBURG_GYM, 0xFFFF }, - { MatchCall_Text_Brendan8, FLAG_RECEIVED_CASTFORM, 0xFFFF }, - { MatchCall_Text_Brendan9, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF }, - { MatchCall_Text_Brendan10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF }, - { MatchCall_Text_Brendan11, FLAG_MET_TEAM_AQUA_HARBOR, 0xFFFF }, - { MatchCall_Text_Brendan12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF }, - { MatchCall_Text_Brendan13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF }, - { MatchCall_Text_Brendan14, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF }, - { MatchCall_Text_Brendan15, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Brendan1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan2, FLAG_DEFEATED_DEWFORD_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan3, FLAG_DELIVERED_DEVON_GOODS, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan4, FLAG_HIDE_MAUVILLE_CITY_WALLY, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan5, FLAG_RECEIVED_HM_STRENGTH, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan6, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan7, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan8, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan9, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan10, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan11, FLAG_MET_TEAM_AQUA_HARBOR, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan12, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Brendan15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallRival sBrendanMatchCallHeader = @@ -314,14 +317,14 @@ static const struct MatchCallRival sBrendanMatchCallHeader = }; static const match_call_text_data_t sWallyTextScripts[] = { - { MatchCall_Text_Wally1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Wally2, FLAG_RUSTURF_TUNNEL_OPENED, 0xFFFF }, - { MatchCall_Text_Wally3, FLAG_DEFEATED_LAVARIDGE_GYM, 0xFFFF }, - { MatchCall_Text_Wally4, FLAG_RECEIVED_CASTFORM, 0xFFFF }, - { MatchCall_Text_Wally5, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, 0xFFFF }, - { MatchCall_Text_Wally6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, 0xFFFF }, - { MatchCall_Text_Wally7, FLAG_DEFEATED_WALLY_VICTORY_ROAD, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Wally1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally2, FLAG_RUSTURF_TUNNEL_OPENED, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally3, FLAG_DEFEATED_LAVARIDGE_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally4, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally5, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, + { MatchCall_Text_Wally7, FLAG_DEFEATED_WALLY_VICTORY_ROAD, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallLocationOverride sWallyLocationData[] = { @@ -343,14 +346,14 @@ static const struct MatchCallWally sWallyMatchCallHeader = }; static const match_call_text_data_t sScottTextScripts[] = { - { MatchCall_Text_Scott1, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Scott2, FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, 0xFFFF }, - { MatchCall_Text_Scott3, FLAG_RECEIVED_CASTFORM, 0xFFFF }, - { MatchCall_Text_Scott4, FLAG_RECEIVED_RED_OR_BLUE_ORB, 0xFFFF }, - { MatchCall_Text_Scott5, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, 0xFFFF }, - { MatchCall_Text_Scott6, FLAG_DEFEATED_SOOTOPOLIS_GYM, 0xFFFF }, - { MatchCall_Text_Scott7, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Scott1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott2, FLAG_DEFEATED_EVIL_TEAM_MT_CHIMNEY, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott3, FLAG_RECEIVED_CASTFORM, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott4, FLAG_RECEIVED_RED_OR_BLUE_ORB, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott5, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott6, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, + { MatchCall_Text_Scott7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; @@ -365,11 +368,11 @@ static const struct MatchCallStructNPC sScottMatchCallHeader = }; static const match_call_text_data_t sRoxanneTextScripts[] = { - { MatchCall_Text_Roxanne1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Roxanne2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Roxanne3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Roxanne1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sRoxanneMatchCallHeader = @@ -384,11 +387,11 @@ static const struct MatchCallStructTrainer sRoxanneMatchCallHeader = }; static const match_call_text_data_t sBrawlyTextScripts[] = { - { MatchCall_Text_Brawly1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Brawly2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Brawly3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Brawly1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sBrawlyMatchCallHeader = @@ -403,11 +406,11 @@ static const struct MatchCallStructTrainer sBrawlyMatchCallHeader = }; static const match_call_text_data_t sWattsonTextScripts[] = { - { MatchCall_Text_Wattson1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Wattson2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Wattson3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Wattson1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sWattsonMatchCallHeader = @@ -422,11 +425,11 @@ static const struct MatchCallStructTrainer sWattsonMatchCallHeader = }; static const match_call_text_data_t sFlanneryTextScripts[] = { - { MatchCall_Text_Flannery1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Flannery2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Flannery3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Flannery1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sFlanneryMatchCallHeader = @@ -441,11 +444,11 @@ static const struct MatchCallStructTrainer sFlanneryMatchCallHeader = }; static const match_call_text_data_t sWinonaTextScripts[] = { - { MatchCall_Text_Winona1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Winona2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Winona3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Winona1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sWinonaMatchCallHeader = @@ -460,11 +463,11 @@ static const struct MatchCallStructTrainer sWinonaMatchCallHeader = }; static const match_call_text_data_t sTateLizaTextScripts[] = { - { MatchCall_Text_TateLiza1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_TateLiza2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_TateLiza3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_TateLiza1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sTateLizaMatchCallHeader = @@ -479,11 +482,11 @@ static const struct MatchCallStructTrainer sTateLizaMatchCallHeader = }; static const match_call_text_data_t sJuanTextScripts[] = { - { MatchCall_Text_Juan1, 0xFFFE, 0xFFFF }, - { MatchCall_Text_Juan2, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Juan3, 0xFFFF, 0xFFFF }, - { MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Juan1, 0xFFFE, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sJuanMatchCallHeader = @@ -498,8 +501,8 @@ static const struct MatchCallStructTrainer sJuanMatchCallHeader = }; static const match_call_text_data_t sSidneyTextScripts[] = { - { MatchCall_Text_Sidney, 0xFFFF, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Sidney, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sSidneyMatchCallHeader = @@ -514,8 +517,8 @@ static const struct MatchCallStructTrainer sSidneyMatchCallHeader = }; static const match_call_text_data_t sPhoebeTextScripts[] = { - { MatchCall_Text_Phoebe, 0xFFFF, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Phoebe, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sPhoebeMatchCallHeader = @@ -530,8 +533,8 @@ static const struct MatchCallStructTrainer sPhoebeMatchCallHeader = }; static const match_call_text_data_t sGlaciaTextScripts[] = { - { MatchCall_Text_Glacia, 0xFFFF, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Glacia, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sGlaciaMatchCallHeader = @@ -546,8 +549,8 @@ static const struct MatchCallStructTrainer sGlaciaMatchCallHeader = }; static const match_call_text_data_t sDrakeTextScripts[] = { - { MatchCall_Text_Drake, 0xFFFF, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Drake, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sDrakeMatchCallHeader = @@ -562,8 +565,8 @@ static const struct MatchCallStructTrainer sDrakeMatchCallHeader = }; static const match_call_text_data_t sWallaceTextScripts[] = { - { MatchCall_Text_Wallace, 0xFFFF, 0xFFFF }, - { NULL, 0xFFFF, 0xFFFF } + { MatchCall_Text_Wallace, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } }; static const struct MatchCallStructTrainer sWallaceMatchCallHeader = @@ -993,11 +996,11 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *textDa i--; while (i) { - if (textData[i].availabilityFlag != 0xFFFF && FlagGet(textData[i].flag) == TRUE) + if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && FlagGet(textData[i].flag) == TRUE) break; i--; } - if (textData[i].flagToSetOnCompletion != 0xFFFF) + if (textData[i].flagToSetOnCompletion != NO_FLAG_TO_SET) FlagSet(textData[i].flagToSetOnCompletion); StringExpandPlaceholders(dest, textData[i].text); } @@ -1009,14 +1012,14 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d { if (textData[i].availabilityFlag == 0xFFFE) break; - if (textData[i].availabilityFlag != 0xFFFF && !FlagGet(textData[i].flag)) + if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && !FlagGet(textData[i].flag)) break; } if (textData[i].availabilityFlag != 0xFFFE) { if (i) i--; - if (textData[i].flagToSetOnCompletion != 0xFFFF) + if (textData[i].flagToSetOnCompletion != NO_FLAG_TO_SET) FlagSet(textData[i].flagToSetOnCompletion); StringExpandPlaceholders(dest, textData[i].text); } From 294a1b88a2da1dee97a0830825257bec298ce0f3 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 18 Jan 2026 01:16:36 -0500 Subject: [PATCH 3/7] Replaced two more instances of flag --- src/pokenav_match_call_data.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 9a27058e2c..1ac672ffa6 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -996,7 +996,7 @@ static void MatchCall_BufferCallMessageText(const match_call_text_data_t *textDa i--; while (i) { - if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && FlagGet(textData[i].flag) == TRUE) + if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && FlagGet(textData[i].availabilityFlag) == TRUE) break; i--; } @@ -1012,7 +1012,7 @@ static void MatchCall_BufferCallMessageTextByRematchTeam(const match_call_text_d { if (textData[i].availabilityFlag == 0xFFFE) break; - if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && !FlagGet(textData[i].flag)) + if (textData[i].availabilityFlag != ALWAYS_AVAILABLE && !FlagGet(textData[i].availabilityFlag)) break; } if (textData[i].availabilityFlag != 0xFFFE) From 902a37ef238018cb0a7fe96aef17aec3c6dc8dda Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 18 Jan 2026 01:23:19 -0500 Subject: [PATCH 4/7] Added MATCH_CALL_TEXT_END define --- src/pokenav_match_call_data.c | 41 ++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 1ac672ffa6..708da31b56 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -159,6 +159,7 @@ static void MatchCall_GetNameAndDescByRematchIdx(u32, const u8 **, const u8 **); #define ALWAYS_AVAILABLE 0xFFFF #define NO_FLAG_TO_SET 0xFFFF +#define MATCH_CALL_TEXT_END {NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET} // .rodata @@ -174,7 +175,7 @@ static const match_call_text_data_t sMrStoneTextScripts[] = { { MatchCall_Text_MrStone9, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, { MatchCall_Text_MrStone10, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_MrStone11, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructNPC sMrStoneMatchCallHeader = @@ -197,7 +198,7 @@ static const match_call_text_data_t sNormanTextScripts[] = { { MatchCall_Text_Norman7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, { MatchCall_Text_Norman8, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, { MatchCall_Text_Norman9, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sNormanMatchCallHeader = @@ -224,7 +225,7 @@ static const match_call_text_data_t sMomTextScripts[] = { { MatchCall_Text_Mom1, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Mom2, FLAG_DEFEATED_PETALBURG_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_Mom3, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructNPC sMomMatchCallHeader = @@ -245,7 +246,7 @@ static const match_call_text_data_t sStevenTextScripts[] = { { MatchCall_Text_Steven5, FLAG_DEFEATED_MOSSDEEP_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_Steven6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, { MatchCall_Text_Steven7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, + MATCH_CALL_TEXT_END, }; static const struct MatchCallStructNPC sStevenMatchCallHeader = @@ -274,7 +275,7 @@ static const match_call_text_data_t sMayTextScripts[] = { { MatchCall_Text_May13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, { MatchCall_Text_May14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_May15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallRival sMayMatchCallHeader = @@ -303,7 +304,7 @@ static const match_call_text_data_t sBrendanTextScripts[] = { { MatchCall_Text_Brendan13, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, { MatchCall_Text_Brendan14, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_Brendan15, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallRival sBrendanMatchCallHeader = @@ -324,7 +325,7 @@ static const match_call_text_data_t sWallyTextScripts[] = { { MatchCall_Text_Wally5, FLAG_GROUDON_AWAKENED_MAGMA_HIDEOUT, NO_FLAG_TO_SET }, { MatchCall_Text_Wally6, FLAG_KYOGRE_ESCAPED_SEAFLOOR_CAVERN, NO_FLAG_TO_SET }, { MatchCall_Text_Wally7, FLAG_DEFEATED_WALLY_VICTORY_ROAD, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallLocationOverride sWallyLocationData[] = { @@ -353,7 +354,7 @@ static const match_call_text_data_t sScottTextScripts[] = { { MatchCall_Text_Scott5, FLAG_TEAM_AQUA_ESCAPED_IN_SUBMARINE, NO_FLAG_TO_SET }, { MatchCall_Text_Scott6, FLAG_DEFEATED_SOOTOPOLIS_GYM, NO_FLAG_TO_SET }, { MatchCall_Text_Scott7, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; @@ -372,7 +373,7 @@ static const match_call_text_data_t sRoxanneTextScripts[] = { { MatchCall_Text_Roxanne2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Roxanne3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Roxanne4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sRoxanneMatchCallHeader = @@ -391,7 +392,7 @@ static const match_call_text_data_t sBrawlyTextScripts[] = { { MatchCall_Text_Brawly2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Brawly3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Brawly4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sBrawlyMatchCallHeader = @@ -410,7 +411,7 @@ static const match_call_text_data_t sWattsonTextScripts[] = { { MatchCall_Text_Wattson2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Wattson3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Wattson4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sWattsonMatchCallHeader = @@ -429,7 +430,7 @@ static const match_call_text_data_t sFlanneryTextScripts[] = { { MatchCall_Text_Flannery2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Flannery3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Flannery4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sFlanneryMatchCallHeader = @@ -448,7 +449,7 @@ static const match_call_text_data_t sWinonaTextScripts[] = { { MatchCall_Text_Winona2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Winona3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Winona4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sWinonaMatchCallHeader = @@ -467,7 +468,7 @@ static const match_call_text_data_t sTateLizaTextScripts[] = { { MatchCall_Text_TateLiza2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_TateLiza3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_TateLiza4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sTateLizaMatchCallHeader = @@ -486,7 +487,7 @@ static const match_call_text_data_t sJuanTextScripts[] = { { MatchCall_Text_Juan2, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Juan3, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, { MatchCall_Text_Juan4, FLAG_SYS_GAME_CLEAR, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sJuanMatchCallHeader = @@ -502,7 +503,7 @@ static const struct MatchCallStructTrainer sJuanMatchCallHeader = static const match_call_text_data_t sSidneyTextScripts[] = { { MatchCall_Text_Sidney, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sSidneyMatchCallHeader = @@ -518,7 +519,7 @@ static const struct MatchCallStructTrainer sSidneyMatchCallHeader = static const match_call_text_data_t sPhoebeTextScripts[] = { { MatchCall_Text_Phoebe, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sPhoebeMatchCallHeader = @@ -534,7 +535,7 @@ static const struct MatchCallStructTrainer sPhoebeMatchCallHeader = static const match_call_text_data_t sGlaciaTextScripts[] = { { MatchCall_Text_Glacia, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sGlaciaMatchCallHeader = @@ -550,7 +551,7 @@ static const struct MatchCallStructTrainer sGlaciaMatchCallHeader = static const match_call_text_data_t sDrakeTextScripts[] = { { MatchCall_Text_Drake, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sDrakeMatchCallHeader = @@ -566,7 +567,7 @@ static const struct MatchCallStructTrainer sDrakeMatchCallHeader = static const match_call_text_data_t sWallaceTextScripts[] = { { MatchCall_Text_Wallace, ALWAYS_AVAILABLE, NO_FLAG_TO_SET }, - { NULL, ALWAYS_AVAILABLE, NO_FLAG_TO_SET } + MATCH_CALL_TEXT_END }; static const struct MatchCallStructTrainer sWallaceMatchCallHeader = From 064ca5c24314780fed46ba8e291d73107bd5b7d7 Mon Sep 17 00:00:00 2001 From: Frank DeBlasio <35279583+fdeblasio@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:08:20 -0500 Subject: [PATCH 5/7] Added macro for Surf/Muddy Water's animation (#2232) --- asm/macros/battle_anim_script.inc | 4 ++++ data/battle_anim_scripts.s | 4 ++-- include/constants/battle_anim.h | 4 ++++ src/battle_anim_water.c | 7 +++++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index d46638949b..e6bb3d6705 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -579,3 +579,7 @@ .macro shake_battle_platforms priority=2, x_offset:req, y_offset:req, shakes:req, delay:req createvisualtask AnimTask_ShakeBattlePlatforms, \priority, \x_offset, \y_offset, \shakes, \delay .endm + + .macro create_surf_wave priority=2, palette:req + createvisualtask AnimTask_CreateSurfWave, \priority, \palette + .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 884360034c..4fc244acba 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -6296,7 +6296,7 @@ Move_CRABHAMMER: end Move_SURF: - createvisualtask AnimTask_CreateSurfWave, 2, FALSE + create_surf_wave palette=ANIM_SURF_PAL_SURF delay 24 panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 waitforvisualfinish @@ -8594,7 +8594,7 @@ ArmThrustLeft: Move_MUDDY_WATER: panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 - createvisualtask AnimTask_CreateSurfWave, 2, TRUE + create_surf_wave palette=ANIM_SURF_PAL_MUDDY_WATER waitforvisualfinish end diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 9e63874312..b293890eca 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -420,6 +420,10 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 +// Surf wave palettes +#define ANIM_SURF_PAL_SURF 0 +#define ANIM_SURF_PAL_MUDDY_WATER 1 + // Flags given to various functions to indicate which palettes to consider. // Handled by UnpackSelectedBattlePalettes #define F_PAL_BG (1 << 0) diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index 883cf5825e..1518d7e988 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "battle_anim.h" +#include "battle_anim_internal.h" #include "gpu_regs.h" #include "graphics.h" #include "palette.h" @@ -514,7 +515,7 @@ static void AnimRainDrop_Step(struct Sprite *sprite) if (++sprite->data[0] <= 13) { // - // Make the raindrop fall, but only until it reaches the + // Make the raindrop fall, but only until it reaches the // impact/splash frames of its animation. // sprite->x2++; @@ -812,6 +813,8 @@ static void AnimSmallBubblePair_Step(struct Sprite *sprite) void AnimTask_CreateSurfWave(u8 taskId) { + CMD_ARGS(palette); + struct BattleAnimBgData animBg; u8 taskId2; u16 *x; @@ -838,7 +841,7 @@ void AnimTask_CreateSurfWave(u8 taskId) AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, TRUE); } AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset); - if (gBattleAnimArgs[0] == 0) + if (cmd->palette == ANIM_SURF_PAL_SURF) LoadCompressedPalette(gBattleAnimBgPalette_Surf, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); else LoadCompressedPalette(gBattleAnimBackgroundImageMuddyWater_Pal, BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP); From 86a159a1eb56d6f5e85b47c33ff176784117cc69 Mon Sep 17 00:00:00 2001 From: Kildemal <206095739+izrofid@users.noreply.github.com> Date: Sun, 15 Feb 2026 20:33:12 +0530 Subject: [PATCH 6/7] chore(linker): add dwarf5 line number section to ld script (#2235) --- ld_script_modern.ld | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ld_script_modern.ld b/ld_script_modern.ld index 788a5736f0..b0eab17c73 100644 --- a/ld_script_modern.ld +++ b/ld_script_modern.ld @@ -150,6 +150,9 @@ SECTIONS { .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } + /* DWARF 5*/ + .debug_line_str 0 : { *(.debug_line_str) } + /* Discard everything not specifically mentioned above. */ /DISCARD/ : { From 25ffb2c12c069ac6b2040f9238b2978f1de72e3f Mon Sep 17 00:00:00 2001 From: Marky <143505183+HashtagMarky@users.noreply.github.com> Date: Fri, 20 Feb 2026 06:17:42 +0000 Subject: [PATCH 7/7] Add enum for Elevations (#2233) --- include/global.fieldmap.h | 9 +++++++++ src/decoration.c | 4 ++-- src/event_object_movement.c | 12 ++++++------ src/field_control_avatar.c | 10 +++++----- src/field_effect_helpers.c | 2 +- src/field_player_avatar.c | 8 ++++---- src/field_specials.c | 2 +- src/overworld.c | 2 +- src/trainer_hill.c | 4 ++-- 9 files changed, 31 insertions(+), 22 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index eb4a190d01..a3b992db9a 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -11,6 +11,15 @@ #define MAPGRID_COLLISION_SHIFT 10 #define MAPGRID_ELEVATION_SHIFT 12 +enum +{ + ELEVATION_TRANSITION = 0, + ELEVATION_SURF = 1, + ELEVATION_DEFAULT = 3, + ELEVATION_MULTI_LEVEL = 15, + ELEVATION_INVALID = 0xFFFF +}; + #define PACK_METATILE(metatileId) PACK(metatileId, MAPGRID_METATILE_ID_SHIFT, MAPGRID_METATILE_ID_MASK) #define PACK_COLLISION(collision) PACK(collision, MAPGRID_COLLISION_SHIFT, MAPGRID_COLLISION_MASK) #define PACK_ELEVATION(elevation) PACK(elevation, MAPGRID_ELEVATION_SHIFT, MAPGRID_ELEVATION_MASK) diff --git a/src/decoration.c b/src/decoration.c index 2bb97893e1..2399015ab5 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1191,7 +1191,7 @@ static void WarpToInitialPosition(u8 taskId) static u16 GetDecorationElevation(u8 decoration, u8 tileIndex) { - u16 elevation = -1; + u16 elevation = ELEVATION_INVALID; switch (decoration) { case DECOR_STAND: @@ -1234,7 +1234,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, overlapsWall = 0; elevation = GetDecorationElevation(gDecorations[decoration].id, j * decWidth + i); - if (elevation != 0xFFFF) + if (elevation != ELEVATION_INVALID) MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag | elevation); else MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6997f0b40a..d9ca50faa4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2208,7 +2208,7 @@ u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation) static bool8 ObjectEventDoesElevationMatch(struct ObjectEvent *objectEvent, u8 elevation) { - if (objectEvent->currentElevation != 0 && elevation != 0 && objectEvent->currentElevation != elevation) + if (objectEvent->currentElevation != ELEVATION_TRANSITION && elevation != ELEVATION_TRANSITION && objectEvent->currentElevation != elevation) return FALSE; return TRUE; @@ -7708,12 +7708,12 @@ static bool8 IsElevationMismatchAt(u8 elevation, s16 x, s16 y) { u8 mapElevation; - if (elevation == 0) + if (elevation == ELEVATION_TRANSITION) return FALSE; mapElevation = MapGridGetElevationAt(x, y); - if (mapElevation == 0 || mapElevation == 15) + if (mapElevation == ELEVATION_TRANSITION || mapElevation == ELEVATION_MULTI_LEVEL) return FALSE; if (mapElevation != elevation) @@ -7761,12 +7761,12 @@ void ObjectEventUpdateElevation(struct ObjectEvent *objEvent) u8 curElevation = MapGridGetElevationAt(objEvent->currentCoords.x, objEvent->currentCoords.y); u8 prevElevation = MapGridGetElevationAt(objEvent->previousCoords.x, objEvent->previousCoords.y); - if (curElevation == 15 || prevElevation == 15) + if (curElevation == ELEVATION_MULTI_LEVEL || prevElevation == ELEVATION_MULTI_LEVEL) return; objEvent->currentElevation = curElevation; - if (curElevation != 0 && curElevation != 15) + if (curElevation != ELEVATION_TRANSITION && curElevation != ELEVATION_MULTI_LEVEL) objEvent->previousElevation = curElevation; } @@ -7790,7 +7790,7 @@ static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sp static bool8 AreElevationsCompatible(u8 a, u8 b) { - if (a == 0 || b == 0) + if (a == ELEVATION_TRANSITION || b == ELEVATION_TRANSITION) return TRUE; if (a != b) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 8ddeda77ac..ed96a87725 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -203,10 +203,10 @@ static void GetInFrontOfPlayerPosition(struct MapPosition *position) GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y); PlayerGetDestCoords(&x, &y); - if (MapGridGetElevationAt(x, y) != 0) + if (MapGridGetElevationAt(x, y) != ELEVATION_TRANSITION) position->elevation = PlayerGetElevation(); else - position->elevation = 0; + position->elevation = ELEVATION_TRANSITION; } static u16 GetPlayerCurMetatileBehavior(int runningState) @@ -867,7 +867,7 @@ static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 e { if ((u16)warpEvent->x == x && (u16)warpEvent->y == y) { - if (warpEvent->elevation == elevation || warpEvent->elevation == 0) + if (warpEvent->elevation == elevation || warpEvent->elevation == ELEVATION_TRANSITION) return i; } } @@ -904,7 +904,7 @@ static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 { if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y) { - if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0) + if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == ELEVATION_TRANSITION) { const u8 *script = TryRunCoordEventScript(&coordEvents[i]); if (script != NULL) @@ -930,7 +930,7 @@ static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapH { if ((u16)bgEvents[i].x == x && (u16)bgEvents[i].y == y) { - if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == 0) + if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == ELEVATION_TRANSITION) return &bgEvents[i]; } } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 320bfea578..a5320be456 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1094,7 +1094,7 @@ void SynchronizeSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->sPrevX, y = sprite->sPrevY) { MoveCoords(i, &x, &y); - if (MapGridGetElevationAt(x, y) == 3) + if (MapGridGetElevationAt(x, y) == ELEVATION_DEFAULT) { // While dismounting the surf blob bobs at a slower rate sprite->sIntervalIdx++; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 3cf6523596..5b22ff74c3 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -729,8 +729,8 @@ static u8 CheckForObjectEventStaticCollision(struct ObjectEvent *objectEvent, s1 static bool8 CanStopSurfing(s16 x, s16 y, u8 direction) { if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) - && MapGridGetElevationAt(x, y) == 3 - && GetObjectEventIdByPosition(x, y, 3) == OBJECT_EVENTS_COUNT) + && MapGridGetElevationAt(x, y) == ELEVATION_DEFAULT + && GetObjectEventIdByPosition(x, y, ELEVATION_DEFAULT) == OBJECT_EVENTS_COUNT) { CreateStopSurfingTask(direction); return TRUE; @@ -1327,7 +1327,7 @@ bool8 IsPlayerFacingSurfableFishableWater(void) MoveCoords(playerObjEvent->facingDirection, &x, &y); if (GetCollisionAtCoords(playerObjEvent, x, y, playerObjEvent->facingDirection) == COLLISION_ELEVATION_MISMATCH - && PlayerGetElevation() == 3 + && PlayerGetElevation() == ELEVATION_DEFAULT && MetatileBehavior_IsSurfableFishableWater(MapGridGetMetatileBehaviorAt(x, y))) return TRUE; else @@ -1388,7 +1388,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) playerObjEventTemplate.graphicsId = GetPlayerAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, gender); playerObjEventTemplate.x = x - MAP_OFFSET; playerObjEventTemplate.y = y - MAP_OFFSET; - playerObjEventTemplate.elevation = 0; + playerObjEventTemplate.elevation = ELEVATION_TRANSITION; playerObjEventTemplate.movementType = MOVEMENT_TYPE_PLAYER; playerObjEventTemplate.movementRangeX = 0; playerObjEventTemplate.movementRangeY = 0; diff --git a/src/field_specials.c b/src/field_specials.c index 002e4fb811..3c9326e510 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1255,7 +1255,7 @@ void SpawnCameraObject(void) LOCALID_CAMERA, gSaveBlock1Ptr->pos.x + MAP_OFFSET, gSaveBlock1Ptr->pos.y + MAP_OFFSET, - 3); // elevation + ELEVATION_DEFAULT); gObjectEvents[obj].invisible = TRUE; CameraObjectSetFollowedSpriteId(gObjectEvents[obj].spriteId); } diff --git a/src/overworld.c b/src/overworld.c index 87a833ac74..05f5bc5f12 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2753,7 +2753,7 @@ static const u8 *TryInteractWithPlayer(struct CableClubPlayer *player) otherPlayerPos = player->pos; otherPlayerPos.x += gDirectionToVectors[player->facing].x; otherPlayerPos.y += gDirectionToVectors[player->facing].y; - otherPlayerPos.elevation = 0; + otherPlayerPos.elevation = ELEVATION_TRANSITION; linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y); if (linkPlayerId != MAX_LINK_PLAYERS) diff --git a/src/trainer_hill.c b/src/trainer_hill.c index f2037b20d8..99df44bb08 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -250,7 +250,7 @@ static const u8 *const sModeStrings[NUM_TRAINER_HILL_MODES] = static const struct ObjectEventTemplate sTrainerObjectEventTemplate = { .graphicsId = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL, - .elevation = 3, + .elevation = ELEVATION_DEFAULT, .movementType = MOVEMENT_TYPE_LOOK_AROUND, .movementRangeX = 1, .movementRangeY = 1, @@ -677,7 +677,7 @@ static u16 GetMapDataForFloor(u8 floorId, u32 x, u32 y, u32 floorWidth) // floor impassable = (sHillData->floors[floorId].map.collisionData[y] >> (15 - x) & 1); metatileId = sHillData->floors[floorId].map.metatileData[floorWidth * y + x] + NUM_METATILES_IN_PRIMARY; - elevation = PACK_ELEVATION(3); + elevation = PACK_ELEVATION(ELEVATION_DEFAULT); return PACK_COLLISION(impassable) | elevation | PACK_METATILE(metatileId); }