From 12ba0405de2debcd1668dcda166f2cd159be6a11 Mon Sep 17 00:00:00 2001 From: Rachel Date: Tue, 2 Sep 2025 21:35:07 -0700 Subject: [PATCH] Clean up primary entry-points and document associated script commands --- asm/macros/scrcmd.inc | 27 +++++++--- include/applications/party_menu/defs.h | 6 +-- include/unk_0203D1B8.h | 22 ++++---- .../scripts_eterna_city_condominiums_1f.s | 4 +- .../scripts_oreburgh_city_north_house_1f.s | 4 +- res/field/scripts/scripts_route_226_house.s | 4 +- .../scripts_snowpoint_city_west_house.s | 4 +- res/field/scripts/scripts_union_room.s | 6 +-- res/field/scripts/scripts_unk_0212.s | 25 ++++----- res/field/scripts/scripts_unk_0501.s | 2 +- src/applications/party_menu/main.c | 2 +- src/item_use_functions.c | 20 +++----- src/overlay104/ov104_02239C58.c | 8 +-- src/scrcmd.c | 51 +++++++++---------- src/start_menu.c | 31 +++++------ src/unk_0203D1B8.c | 44 +++++++--------- src/unk_0204F13C.c | 4 +- src/unk_0204FAB4.c | 4 +- src/unk_0205003C.c | 4 +- src/unk_0205A0D8.c | 6 +-- src/unk_0206B9D8.c | 2 +- src/unk_020989DC.c | 4 +- src/unk_0209C194.c | 4 +- 23 files changed, 137 insertions(+), 151 deletions(-) diff --git a/asm/macros/scrcmd.inc b/asm/macros/scrcmd.inc index a667a0a6cc..ffff1ee260 100644 --- a/asm/macros/scrcmd.inc +++ b/asm/macros/scrcmd.inc @@ -2252,20 +2252,25 @@ .short 401 .endm - .macro ScrCmd_192 + .macro OpenPartyMenuForUnionRoomBattle .short 402 .endm + .macro SelectPokemonForUnionRoomBattle + OpenPartyMenuForUnionRoomBattle + ReturnToField + .endm + .macro GetSelectedPartySlot destVar .short 403 .short \destVar .endm - .macro ScrCmd_194 arg0, arg1, arg2, arg3 + .macro OpenPartyMenuForContest partySlot, contestRank, contestType, arg3 .short 404 - .short \arg0 - .short \arg1 - .short \arg2 + .short \partySlot + .short \contestRank + .short \contestType .short \arg3 .endm @@ -3769,9 +3774,9 @@ .short \arg0 .endm - .macro ScrCmd_290 arg0 + .macro OpenPartyMenuForDaycare partySlot .short 656 - .short \arg0 + .short \partySlot .endm .macro ScrCmd_291 arg0, arg1 @@ -3886,10 +3891,16 @@ .short \arg0 .endm - .macro ScrCmd_2A5 + .macro OpenPartyMenuForTrade .short 677 .endm + .macro SelectPokemonToTrade + OpenPartyMenuForTrade + GetSelectedPartySlot VAR_RESULT + ReturnToField + .endm + .macro GetGameCornerPrizeData index, item, price .short 678 .short \index diff --git a/include/applications/party_menu/defs.h b/include/applications/party_menu/defs.h index ac5a89cc99..1b970c6225 100644 --- a/include/applications/party_menu/defs.h +++ b/include/applications/party_menu/defs.h @@ -135,11 +135,11 @@ typedef struct PartyMenu { u16 usedItemID; u16 learnedMove; u8 selectedMoveSlot; - u8 unk_29; // These three fields (unk_29, unk_2A, unk_2B) are used exactly once in the code (sub_0203D578) which is itself only used once. - u8 contestType; // sub_0203D578 is used by ScrCmd_194 which is contest related so these fields are likely contest related too. + u8 unk_29; + u8 contestType; u8 contestRank; u8 selectionOrder[MAX_PARTY_SIZE]; // 0 is unselected, 1-6 are 1 + the selection order for the party slot - u8 unk_32_0 : 4; + u8 minSelectionSlots : 4; u8 maxSelectionSlots : 4; u8 reqLevel; int unk_34; diff --git a/include/unk_0203D1B8.h b/include/unk_0203D1B8.h index 09fb45167a..44628f4710 100644 --- a/include/unk_0203D1B8.h +++ b/include/unk_0203D1B8.h @@ -1,6 +1,8 @@ #ifndef POKEPLATINUM_UNK_0203D1B8_H #define POKEPLATINUM_UNK_0203D1B8_H +#include "constants/heap.h" +#include "generated/items.h" #include "generated/pokemon_contest_types.h" #include "struct_decls/struct_0209747C_decl.h" @@ -36,17 +38,20 @@ u16 sub_0203D2C4(void *param0); void sub_0203D2E4(FieldSystem *fieldSystem, void *param1); void sub_0203D30C(FieldSystem *fieldSystem, void *param1); void FieldSystem_OpenSummaryScreen(FieldSystem *fieldSystem, void *appArgs); -void *sub_0203D390(FieldSystem *fieldSystem, FieldMoveContext *param1, u8 param2); -void *FieldSystem_SelectMoveTutorPokemon(int unused, FieldSystem *fieldSystem); -void *sub_0203D3E4(int param0, FieldSystem *fieldSystem); -int PartyMenu_GetSelectedSlot(PartyMenu *partyMan); -void *sub_0203D410(int param0, FieldSystem *fieldSystem, int param2); + +PartyMenu *FieldSystem_OpenPartyMenu(FieldSystem *fieldSystem, FieldMoveContext *fieldMoveCtx, u8 selectedMonSlot); +PartyMenu *FieldSystem_OpenPartyMenu_SelectPokemon(int unused, FieldSystem *fieldSystem); +PartyMenu *FieldSystem_OpenPartyMenu_SelectForTrade(int unused, FieldSystem *fieldSystem); +PartyMenu *FieldSystem_OpenPartyMenu_SelectForDaycare(int unused, FieldSystem *fieldSystem, int selectedMonSlot); +PartyMenu *FieldSystem_OpenPartyMenu_SelectForUnionRoomBattle(FieldTask *taskMan, enum HeapID heapID); +PartyMenu *FieldSystem_OpenPartyMenu_SelectForContest(int unused, FieldSystem *fieldSystem, enum PokemonContestType contestType, int contestRank, int param4, int selectedMonSlot); +PartyMenu *FieldSystem_OpenPartyMenu_SelectForSpinTrade(FieldSystem *fieldSystem, int selectedMonSlot); +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_0203D50C(FieldTask *taskMan, int heapID); -void *sub_0203D578(int param0, FieldSystem *fieldSystem, enum PokemonContestType contestType, int param3, int param4, int param5); void *sub_0203D5C8(int param0, FieldSystem *fieldSystem, int param2); -void *sub_0203D644(FieldSystem *fieldSystem, int param1); PokemonSummary *sub_0203D670(FieldSystem *fieldSystem, int heapID, int mode); void *FieldSystem_OpenSummaryScreenSelectMove(enum HeapID heapID, FieldSystem *fieldSystem, u8 partyIndex); int PokemonSummary_GetSelectedMoveSlot(void *summary); @@ -98,7 +103,6 @@ void sub_0203E414(FieldTask *task, int slotMachineID); void AccessoryShop_Init(FieldTask *task); void *sub_0203E53C(FieldSystem *fieldSystem, int heapID, int param2); void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, int heapID); -PartyMenu *sub_0203E598(FieldSystem *fieldSystem, int heapID, int param2); void *sub_0203E608(FieldSystem *fieldSystem, int heapID); void *FieldSystem_OpenSummaryScreenTeachMove(int unused, FieldSystem *fieldSystem, u16 partySlot, u16 move); void sub_0203E6C0(FieldSystem *fieldSystem, int param1, int param2); diff --git a/res/field/scripts/scripts_eterna_city_condominiums_1f.s b/res/field/scripts/scripts_eterna_city_condominiums_1f.s index bb77df8cc7..15ac9833f0 100644 --- a/res/field/scripts/scripts_eterna_city_condominiums_1f.s +++ b/res/field/scripts/scripts_eterna_city_condominiums_1f.s @@ -106,9 +106,7 @@ _0168: CloseMessage FadeScreenOut WaitFadeScreen - ScrCmd_2A5 - GetSelectedPartySlot VAR_RESULT - ReturnToField + SelectPokemonToTrade FadeScreenIn WaitFadeScreen GoToIfEq VAR_RESULT, 0xFF, _01D9 diff --git a/res/field/scripts/scripts_oreburgh_city_north_house_1f.s b/res/field/scripts/scripts_oreburgh_city_north_house_1f.s index 7ba190c012..047c2851b3 100644 --- a/res/field/scripts/scripts_oreburgh_city_north_house_1f.s +++ b/res/field/scripts/scripts_oreburgh_city_north_house_1f.s @@ -21,9 +21,7 @@ _003B: CloseMessage FadeScreenOut WaitFadeScreen - ScrCmd_2A5 - GetSelectedPartySlot VAR_RESULT - ReturnToField + SelectPokemonToTrade FadeScreenIn WaitFadeScreen GoToIfEq VAR_RESULT, 0xFF, _00AC diff --git a/res/field/scripts/scripts_route_226_house.s b/res/field/scripts/scripts_route_226_house.s index e4ebdb5b6c..4bac5d6a7f 100644 --- a/res/field/scripts/scripts_route_226_house.s +++ b/res/field/scripts/scripts_route_226_house.s @@ -36,9 +36,7 @@ _0060: CloseMessage FadeScreenOut WaitFadeScreen - ScrCmd_2A5 - GetSelectedPartySlot VAR_RESULT - ReturnToField + SelectPokemonToTrade FadeScreenIn WaitFadeScreen GoToIfEq VAR_RESULT, 0xFF, _00D1 diff --git a/res/field/scripts/scripts_snowpoint_city_west_house.s b/res/field/scripts/scripts_snowpoint_city_west_house.s index cb32ee4d8b..eec8a69f3c 100644 --- a/res/field/scripts/scripts_snowpoint_city_west_house.s +++ b/res/field/scripts/scripts_snowpoint_city_west_house.s @@ -38,9 +38,7 @@ _0060: CloseMessage FadeScreenOut WaitFadeScreen - ScrCmd_2A5 - GetSelectedPartySlot VAR_RESULT - ReturnToField + SelectPokemonToTrade FadeScreenIn WaitFadeScreen GoToIfEq VAR_RESULT, 0xFF, _00D1 diff --git a/res/field/scripts/scripts_union_room.s b/res/field/scripts/scripts_union_room.s index 9fec2afd07..69f1e85e31 100644 --- a/res/field/scripts/scripts_union_room.s +++ b/res/field/scripts/scripts_union_room.s @@ -153,8 +153,7 @@ _02A4: CloseMessage FadeScreenOut WaitFadeScreen - ScrCmd_192 - ReturnToField + SelectPokemonForUnionRoomBattle FadeScreenIn WaitFadeScreen Message 202 @@ -580,8 +579,7 @@ _095C: ScrCmd_139 6 FadeScreenOut WaitFadeScreen - ScrCmd_192 - ReturnToField + SelectPokemonForUnionRoomBattle FadeScreenIn WaitFadeScreen Message 202 diff --git a/res/field/scripts/scripts_unk_0212.s b/res/field/scripts/scripts_unk_0212.s index 2faa2cdd25..4c9d70df71 100644 --- a/res/field/scripts/scripts_unk_0212.s +++ b/res/field/scripts/scripts_unk_0212.s @@ -1,6 +1,7 @@ #include "macros/scrcmd.inc" #include "res/text/bank/unk_0217.h" #include "constants/map_object.h" +#include "generated/pokemon_contest_types.h" ScriptEntry _0036 @@ -374,27 +375,27 @@ _04A8: End _051C: - SetVar VAR_0x8005, 0 + SetVar VAR_0x8005, CONTEST_TYPE_COOL GoTo _0562 End _052A: - SetVar VAR_0x8005, 1 + SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY GoTo _0562 End _0538: - SetVar VAR_0x8005, 2 + SetVar VAR_0x8005, CONTEST_TYPE_CUTE GoTo _0562 End _0546: - SetVar VAR_0x8005, 3 + SetVar VAR_0x8005, CONTEST_TYPE_SMART GoTo _0562 End _0554: - SetVar VAR_0x8005, 4 + SetVar VAR_0x8005, CONTEST_TYPE_TOUGH GoTo _0562 End @@ -408,7 +409,7 @@ _0562: CallIfEq VAR_MAP_LOCAL_3, 1, _0608 SetVar VAR_RESULT, 0 _0596: - ScrCmd_194 VAR_RESULT, VAR_0x8004, VAR_0x8005, VAR_MAP_LOCAL_4 + 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 @@ -1109,27 +1110,27 @@ _103A: End _10AE: - SetVar VAR_0x8005, 0 + SetVar VAR_0x8005, CONTEST_TYPE_COOL GoTo _1101 End _10BC: - SetVar VAR_0x8005, 1 + SetVar VAR_0x8005, CONTEST_TYPE_BEAUTY GoTo _1101 End _10CA: - SetVar VAR_0x8005, 2 + SetVar VAR_0x8005, CONTEST_TYPE_CUTE GoTo _1101 End _10D8: - SetVar VAR_0x8005, 3 + SetVar VAR_0x8005, CONTEST_TYPE_SMART GoTo _1101 End _10E6: - SetVar VAR_0x8005, 4 + SetVar VAR_0x8005, CONTEST_TYPE_TOUGH GoTo _1101 End @@ -1147,7 +1148,7 @@ _1101: WaitFadeScreen SetVar VAR_RESULT, 0 _111B: - ScrCmd_194 VAR_RESULT, VAR_0x8004, VAR_0x8005, 0 + 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 diff --git a/res/field/scripts/scripts_unk_0501.s b/res/field/scripts/scripts_unk_0501.s index ae217cd830..746b61050f 100644 --- a/res/field/scripts/scripts_unk_0501.s +++ b/res/field/scripts/scripts_unk_0501.s @@ -128,7 +128,7 @@ _017E: WaitFadeScreen SetVar VAR_RESULT, 0 _01B9: - ScrCmd_290 VAR_RESULT + OpenPartyMenuForDaycare VAR_RESULT ScrCmd_291 VAR_0x8000, VAR_RESULT GoToIfEq VAR_RESULT, 0, _01DE ScrCmd_196 VAR_0x8000 diff --git a/src/applications/party_menu/main.c b/src/applications/party_menu/main.c index b54e83eb4f..d0a995a90a 100644 --- a/src/applications/party_menu/main.c +++ b/src/applications/party_menu/main.c @@ -2094,7 +2094,7 @@ static int HandleGameWindowEvent(PartyMenuApplication *application) { u8 v0; - for (v0 = 0; v0 < application->partyMenu->unk_32_0; v0++) { + for (v0 = 0; v0 < application->partyMenu->minSelectionSlots; v0++) { if (application->partyMenu->selectionOrder[v0] == 0) { switch (application->partyMenu->maxSelectionSlots) { case 2: diff --git a/src/item_use_functions.c b/src/item_use_functions.c index e83863e9e3..d740701289 100644 --- a/src/item_use_functions.c +++ b/src/item_use_functions.c @@ -34,6 +34,7 @@ #include "heap.h" #include "item.h" #include "item_use_functions.h" +#include "items.h" #include "mail.h" #include "map_header.h" #include "map_header_data.h" @@ -117,7 +118,7 @@ static void *sub_02068B9C(void *some_param); static void *sub_02068708(void *some_param); static void *sub_02068A28(void *some_param); static void *sub_020691CC(void *some_param); -static void *sub_02069228(void *some_param); +static void *OpenPartyMenuForGracidea(void *fieldSystem); static u32 CanUseBicycle(const ItemUseContext *usageContext); static u32 CanUseExplorerKit(const ItemUseContext *usageContext); static u32 CanUseBerry(const ItemUseContext *usageContext); @@ -1027,27 +1028,22 @@ static void *sub_020691CC(void *some_param) static void UseGracideaFromMenu(ItemMenuUseContext *usageContext, const ItemUseContext *additionalContext) { - FieldSystem *fieldSystem; - StartMenu *menu; - PartyMenu *partyMenu; // unused - - fieldSystem = FieldTask_GetFieldSystem(usageContext->fieldTask); - menu = FieldTask_GetEnv(usageContext->fieldTask); - - menu->taskData = sub_0203E598(fieldSystem, HEAP_ID_FIELD2, 466); + FieldSystem *fieldSystem = FieldTask_GetFieldSystem(usageContext->fieldTask); + StartMenu *menu = FieldTask_GetEnv(usageContext->fieldTask); + menu->taskData = FieldSystem_OpenPartyMenu_SelectForItemUsage(fieldSystem, HEAP_ID_FIELD2, ITEM_GRACIDEA); sub_0203B674(menu, sub_0203B7C0); } static BOOL UseGracideaInField(ItemFieldUseContext *usageContext) { - RegisteredItem_CreateGoToAppTask(usageContext, sub_02069228); + RegisteredItem_CreateGoToAppTask(usageContext, OpenPartyMenuForGracidea); return TRUE; } -static void *sub_02069228(void *some_param) +static void *OpenPartyMenuForGracidea(void *fieldSystem) { - return sub_0203E598(some_param, HEAP_ID_FIELD2, 466); + return FieldSystem_OpenPartyMenu_SelectForItemUsage(fieldSystem, HEAP_ID_FIELD2, ITEM_GRACIDEA); } BOOL sub_02069238(FieldSystem *fieldSystem) diff --git a/src/overlay104/ov104_02239C58.c b/src/overlay104/ov104_02239C58.c index 1b90dbb100..c6cca37ec0 100644 --- a/src/overlay104/ov104_02239C58.c +++ b/src/overlay104/ov104_02239C58.c @@ -137,19 +137,19 @@ static void ov104_02239D1C(UnkStruct_0209B75C *param0, UnkStruct_0209BBA4 *param } if (param1->unk_A0 == 1) { - param1->unk_A8->unk_32_0 = 2; + param1->unk_A8->minSelectionSlots = 2; param1->unk_A8->maxSelectionSlots = 2; param1->unk_A8->reqLevel = 100; } else if (param1->unk_A0 == 5) { - param1->unk_A8->unk_32_0 = 1; + param1->unk_A8->minSelectionSlots = 1; param1->unk_A8->maxSelectionSlots = 1; param1->unk_A8->reqLevel = 30; } else if (param1->unk_A0 == 4) { - param1->unk_A8->unk_32_0 = 2; + param1->unk_A8->minSelectionSlots = 2; param1->unk_A8->maxSelectionSlots = 2; param1->unk_A8->reqLevel = 100; } else if (param1->unk_A0 == 6) { - param1->unk_A8->unk_32_0 = 2; + param1->unk_A8->minSelectionSlots = 2; param1->unk_A8->maxSelectionSlots = 2; param1->unk_A8->reqLevel = 100; } else { diff --git a/src/scrcmd.c b/src/scrcmd.c index f46f35c41c..e6461866e0 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -537,7 +537,7 @@ static BOOL ScrCmd_GetSelectedPartySlot(ScriptContext *ctx); static BOOL ScrCmd_2D0(ScriptContext *ctx); static BOOL ScrCmd_2D4(ScriptContext *ctx); static BOOL ScrCmd_2DB(ScriptContext *ctx); -static BOOL ScrCmd_2A5(ScriptContext *ctx); +static BOOL ScrCmd_OpenPartyMenuForTrade(ScriptContext *ctx); static BOOL ScrCmd_196(ScriptContext *ctx); static BOOL ScrCmd_197(ScriptContext *ctx); static BOOL ScrCmd_OpenSummaryScreenTeachMove(ScriptContext *ctx); @@ -572,8 +572,8 @@ static BOOL ScrCmd_CanFitAccessory(ScriptContext *ctx); static BOOL ScrCmd_Unused_1D4(ScriptContext *ctx); static BOOL ScrCmd_1D5(ScriptContext *ctx); static BOOL ScrCmd_CheckBackdrop(ScriptContext *ctx); -static BOOL ScrCmd_192(ScriptContext *ctx); -static BOOL ScrCmd_194(ScriptContext *ctx); +static BOOL ScrCmd_OpenPartyMenuForUnionRoomBattle(ScriptContext *ctx); +static BOOL ScrCmd_OpenPartyMenuForContest(ScriptContext *ctx); static BOOL ScrCmd_195(ScriptContext *ctx); static BOOL ScrCmd_CheckLocalDexCompleted(ScriptContext *ctx); static BOOL ScrCmd_CheckNationalDexCompleted(ScriptContext *ctx); @@ -681,7 +681,7 @@ static BOOL ScrCmd_28E(ScriptContext *ctx); static BOOL sub_02041FF8(ScriptContext *ctx); static BOOL ScrCmd_28F(ScriptContext *ctx); static BOOL ScrCmd_292(ScriptContext *ctx); -static BOOL ScrCmd_290(ScriptContext *ctx); +static BOOL ScrCmd_OpenPartyMenuForDaycare(ScriptContext *ctx); static BOOL ScrCmd_291(ScriptContext *ctx); static BOOL ScrCmd_29E(ScriptContext *ctx); static BOOL ScrCmd_GetUndergroundTalkCounter(ScriptContext *ctx); @@ -1173,9 +1173,9 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_18F, ScrCmd_WaitABPressTime, ScrCmd_SelectMoveTutorPokemon, - ScrCmd_192, + ScrCmd_OpenPartyMenuForUnionRoomBattle, ScrCmd_GetSelectedPartySlot, - ScrCmd_194, + ScrCmd_OpenPartyMenuForContest, ScrCmd_195, ScrCmd_196, ScrCmd_197, @@ -1427,7 +1427,7 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_28D, ScrCmd_28E, ScrCmd_28F, - ScrCmd_290, + ScrCmd_OpenPartyMenuForDaycare, ScrCmd_291, ScrCmd_292, ScrCmd_GetUndergroundTalkCounter, @@ -1448,7 +1448,7 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_TrySetUnusedUndergroundField, ScrCmd_2A3, ScrCmd_2A4, - ScrCmd_2A5, + ScrCmd_OpenPartyMenuForTrade, ScrCmd_GetGameCornerPrizeData, ScrCmd_2A7, ScrCmd_SubstractCoinsFromVar, @@ -3431,25 +3431,25 @@ static BOOL ScrCmd_GetPartyMonForm(ScriptContext *ctx) static BOOL ScrCmd_SelectMoveTutorPokemon(ScriptContext *ctx) { void **partyData = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - *partyData = FieldSystem_SelectMoveTutorPokemon(32, ctx->fieldSystem); + *partyData = FieldSystem_OpenPartyMenu_SelectPokemon(32, ctx->fieldSystem); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; } -static BOOL ScrCmd_2A5(ScriptContext *ctx) +static BOOL ScrCmd_OpenPartyMenuForTrade(ScriptContext *ctx) { - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - *v0 = sub_0203D3E4(32, ctx->fieldSystem); + void **pPartyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + *pPartyMenu = FieldSystem_OpenPartyMenu_SelectForTrade(32, ctx->fieldSystem); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; } -static BOOL ScrCmd_192(ScriptContext *ctx) +static BOOL ScrCmd_OpenPartyMenuForUnionRoomBattle(ScriptContext *ctx) { - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - *v0 = sub_0203D50C(ctx->fieldSystem->task, HEAP_ID_FIELD3); + void **pPartyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + *pPartyMenu = FieldSystem_OpenPartyMenu_SelectForUnionRoomBattle(ctx->fieldSystem->task, HEAP_ID_FIELD3); return TRUE; } @@ -3572,15 +3572,15 @@ static BOOL ScrCmd_2DB(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_194(ScriptContext *ctx) +static BOOL ScrCmd_OpenPartyMenuForContest(ScriptContext *ctx) { - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - u16 v1 = ScriptContext_GetVar(ctx); - u16 v2 = ScriptContext_GetVar(ctx); - u16 v3 = ScriptContext_GetVar(ctx); + void **pPartyMenu = 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); - *v0 = sub_0203D578(32, ctx->fieldSystem, v3, v2, v4, v1); + *pPartyMenu = FieldSystem_OpenPartyMenu_SelectForContest(32, ctx->fieldSystem, contestType, contestRank, v4, selectedPartySlot); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; @@ -7137,12 +7137,11 @@ static BOOL ScrCmd_28F(ScriptContext *ctx) return TRUE; } -static BOOL ScrCmd_290(ScriptContext *ctx) +static BOOL ScrCmd_OpenPartyMenuForDaycare(ScriptContext *ctx) { - u16 v1 = ScriptContext_GetVar(ctx); - - void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); - *v0 = sub_0203D410(32, ctx->fieldSystem, v1); + u16 selectedPartySlot = ScriptContext_GetVar(ctx); + void **pPartyMenu = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA); + *pPartyMenu = FieldSystem_OpenPartyMenu_SelectForDaycare(32, ctx->fieldSystem, selectedPartySlot); ScriptContext_Pause(ctx, ScriptContext_WaitForApplicationExit); return TRUE; diff --git a/src/start_menu.c b/src/start_menu.c index 6089a4bc2b..c094fc84b1 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -922,9 +922,9 @@ static void StartMenu_ApplicationRun(FieldTask *taskMan) menu->callback(taskMan); } -void sub_0203B674(StartMenu *menu, void *param1) +void sub_0203B674(StartMenu *menu, void *callback) { - menu->callback = param1; + menu->callback = callback; menu->state = START_MENU_STATE_APP_RUN; } @@ -999,7 +999,7 @@ static BOOL sub_0203B78C(FieldTask *taskMan) FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan); StartMenu *menu = FieldTask_GetEnv(taskMan); - menu->taskData = sub_0203D390(fieldSystem, &menu->fieldMoveContext, 0); + menu->taskData = FieldSystem_OpenPartyMenu(fieldSystem, &menu->fieldMoveContext, 0); menu->callback = sub_0203B7C0; return 0; @@ -1260,9 +1260,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan) sub_0203C2D8(taskMan, BagSystem_GetItem(v2)); break; case 2: { - PartyMenu *partyMenu; - - partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); + PartyMenu *partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); memset(partyMenu, 0, sizeof(PartyMenu)); partyMenu->party = SaveData_GetParty(fieldSystem->saveData); @@ -1296,9 +1294,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan) menu->unk_260 = sub_0203C540(item, 0, (u8)v9); sub_0203B674(menu, sub_0203C558); } else { - PartyMenu *partyMenu; - - partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); + PartyMenu *partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); memset(partyMenu, 0, sizeof(PartyMenu)); partyMenu->party = party; @@ -1308,7 +1304,7 @@ static BOOL sub_0203BC5C(FieldTask *taskMan) partyMenu->fieldMoveContext = &menu->fieldMoveContext; partyMenu->type = PARTY_MENU_TYPE_BASIC; partyMenu->usedItemID = BagSystem_GetItem(v2); - partyMenu->selectedMonSlot = (u8)v9; + partyMenu->selectedMonSlot = v9; // Maybe selected slot? partyMenu->fieldSystem = fieldSystem; if (partyMenu->usedItemID == ITEM_NONE) { @@ -1552,11 +1548,8 @@ static BOOL sub_0203C1C8(FieldTask *taskMan) switch (v2->mode) { case SUMMARY_MODE_SELECT_MOVE: { - PartyMenu *partyMenu; - UnkStruct_0203C1C8 *v4; - - partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); - v4 = (UnkStruct_0203C1C8 *)menu->unk_260; + PartyMenu *partyMenu = Heap_Alloc(HEAP_ID_FIELD2, sizeof(PartyMenu)); + UnkStruct_0203C1C8 *v4 = menu->unk_260; memset(partyMenu, 0, sizeof(PartyMenu)); @@ -1587,7 +1580,7 @@ static BOOL sub_0203C1C8(FieldTask *taskMan) sub_0203B674(menu, sub_0203B7C0); } break; default: - menu->taskData = sub_0203D390(fieldSystem, &menu->fieldMoveContext, v2->monIndex); + menu->taskData = FieldSystem_OpenPartyMenu(fieldSystem, &menu->fieldMoveContext, v2->monIndex); sub_0203B674(menu, sub_0203B7C0); } @@ -1673,7 +1666,7 @@ BOOL sub_0203C434(FieldTask *taskMan) if (!(v2->unk_10)) { Heap_FreeExplicit(HEAP_ID_FIELD2, menu->taskData); - menu->taskData = sub_0203D390(fieldSystem, &menu->fieldMoveContext, v3); + menu->taskData = FieldSystem_OpenPartyMenu(fieldSystem, &menu->fieldMoveContext, v3); sub_0203B674(menu, sub_0203B7C0); } else { Pokemon *mon; @@ -1734,7 +1727,7 @@ BOOL sub_0203C558(FieldTask *taskMan) break; case 2: sub_02097770(menu->taskData); - menu->taskData = sub_0203D390(fieldSystem, &menu->fieldMoveContext, v2->unk_02); + menu->taskData = FieldSystem_OpenPartyMenu(fieldSystem, &menu->fieldMoveContext, v2->unk_02); sub_0203B674(menu, sub_0203B7C0); break; case 0: @@ -1742,7 +1735,7 @@ BOOL sub_0203C558(FieldTask *taskMan) sub_0203C668(fieldSystem, menu, 12); } else { sub_02097770(menu->taskData); - menu->taskData = sub_0203D390(fieldSystem, &menu->fieldMoveContext, v2->unk_02); + menu->taskData = FieldSystem_OpenPartyMenu(fieldSystem, &menu->fieldMoveContext, v2->unk_02); sub_0203B674(menu, sub_0203B7C0); } break; diff --git a/src/unk_0203D1B8.c b/src/unk_0203D1B8.c index 6ad4429434..2b8ce1050c 100644 --- a/src/unk_0203D1B8.c +++ b/src/unk_0203D1B8.c @@ -3,6 +3,7 @@ #include #include +#include "constants/heap.h" #include "generated/game_records.h" #include "generated/pokemon_contest_types.h" #include "generated/trainer_score_events.h" @@ -385,19 +386,17 @@ static PartyMenu *PartyMenu_New(int heapID, FieldSystem *fieldSystem, int type, return partyMenu; } -void *sub_0203D390(FieldSystem *fieldSystem, FieldMoveContext *param1, u8 param2) +PartyMenu *FieldSystem_OpenPartyMenu(FieldSystem *fieldSystem, FieldMoveContext *fieldMoveCtx, u8 selectedMonSlot) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_FIELD); - - partyMenu->fieldMoveContext = param1; - partyMenu->selectedMonSlot = param2; + partyMenu->fieldMoveContext = fieldMoveCtx; + partyMenu->selectedMonSlot = selectedMonSlot; FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu); - return partyMenu; } -void *FieldSystem_SelectMoveTutorPokemon(int unused, FieldSystem *fieldSystem) +PartyMenu *FieldSystem_OpenPartyMenu_SelectPokemon(int unused, FieldSystem *fieldSystem) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_SELECT_NO_PROMPT); @@ -405,7 +404,7 @@ void *FieldSystem_SelectMoveTutorPokemon(int unused, FieldSystem *fieldSystem) return partyMenu; } -void *sub_0203D3E4(int param0, FieldSystem *fieldSystem) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForTrade(int unused, FieldSystem *fieldSystem) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_NPC_TRADE); @@ -418,13 +417,12 @@ int PartyMenu_GetSelectedSlot(PartyMenu *partyMenu) return partyMenu->selectedMonSlot; } -void *sub_0203D410(int param0, FieldSystem *fieldSystem, int param2) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForDaycare(int param0, FieldSystem *fieldSystem, int selectedMonSlot) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_DAYCARE); + partyMenu->selectedMonSlot = selectedMonSlot; - partyMenu->selectedMonSlot = param2; FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu); - return partyMenu; } @@ -487,16 +485,15 @@ static BOOL sub_0203D444(FieldTask *param0) return 0; } -void *sub_0203D50C(FieldTask *taskMan, int heapID) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForUnionRoomBattle(FieldTask *taskMan, enum HeapID heapID) { - UnkStruct_0203D444 *v0; - PartyMenu *partyMenu; FieldSystem *fieldSystem = FieldTask_GetFieldSystem(taskMan); - v0 = Heap_Alloc(heapID, sizeof(UnkStruct_0203D444)); + UnkStruct_0203D444 *v0 = Heap_Alloc(heapID, sizeof(UnkStruct_0203D444)); v0->heapID = heapID; - partyMenu = PartyMenu_New(heapID, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_SELECT_CONFIRM); - partyMenu->unk_32_0 = 2; + + PartyMenu *partyMenu = PartyMenu_New(heapID, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_SELECT_CONFIRM); + partyMenu->minSelectionSlots = 2; partyMenu->maxSelectionSlots = 2; partyMenu->reqLevel = 30; partyMenu->battleRegulation = NULL; @@ -507,11 +504,10 @@ void *sub_0203D50C(FieldTask *taskMan, int heapID) return partyMenu; } -void *sub_0203D578(int param0, FieldSystem *fieldSystem, enum PokemonContestType contestType, int contestRank, int param4, int param5) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForContest(int unused, FieldSystem *fieldSystem, enum PokemonContestType contestType, int contestRank, int param4, int selectedMonSlot) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_CONTEST); - - partyMenu->selectedMonSlot = param5; + partyMenu->selectedMonSlot = selectedMonSlot; partyMenu->unk_29 = 2; partyMenu->contestType = contestType; @@ -549,13 +545,12 @@ void *sub_0203D5C8(int param0, FieldSystem *fieldSystem, int param2) return v0; } -void *sub_0203D644(FieldSystem *fieldSystem, int param1) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForSpinTrade(FieldSystem *fieldSystem, int selectedMonSlot) { PartyMenu *partyMenu = PartyMenu_New(HEAP_ID_FIELD2, fieldSystem, PARTY_MENU_TYPE_BASIC, PARTY_MENU_MODE_SELECT_EGG); + partyMenu->selectedMonSlot = selectedMonSlot; - partyMenu->selectedMonSlot = param1; FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu); - return partyMenu; } @@ -1709,7 +1704,7 @@ void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, i return v0; } -PartyMenu *sub_0203E598(FieldSystem *fieldSystem, int heapID, int param2) +PartyMenu *FieldSystem_OpenPartyMenu_SelectForItemUsage(FieldSystem *fieldSystem, enum HeapID heapID, enum Item item) { PartyMenu *partyMenu = Heap_Alloc(heapID, sizeof(PartyMenu)); memset(partyMenu, 0, sizeof(PartyMenu)); @@ -1722,12 +1717,11 @@ PartyMenu *sub_0203E598(FieldSystem *fieldSystem, int heapID, int param2) partyMenu->fieldMoveContext = NULL; partyMenu->type = PARTY_MENU_TYPE_BASIC; partyMenu->mode = PARTY_MENU_MODE_USE_ITEM; - partyMenu->usedItemID = param2; + partyMenu->usedItemID = item; partyMenu->selectedMonSlot = 0; partyMenu->fieldSystem = fieldSystem; FieldSystem_StartChildProcess(fieldSystem, &gPokemonPartyAppTemplate, partyMenu); - return partyMenu; } diff --git a/src/unk_0204F13C.c b/src/unk_0204F13C.c index 06c706a2e0..e0b9e4f79a 100644 --- a/src/unk_0204F13C.c +++ b/src/unk_0204F13C.c @@ -346,11 +346,11 @@ static int sub_0204F50C(UnkStruct_0204F470 *param0, FieldSystem *fieldSystem, in } partyMenu->reqLevel = 30; - partyMenu->unk_32_0 = 1; + partyMenu->minSelectionSlots = 1; partyMenu->maxSelectionSlots = 1; if (param0->unk_04 == 1) { - partyMenu->unk_32_0 = 2; + partyMenu->minSelectionSlots = 2; partyMenu->maxSelectionSlots = 2; } diff --git a/src/unk_0204FAB4.c b/src/unk_0204FAB4.c index 2e3f0456a6..38800017ba 100644 --- a/src/unk_0204FAB4.c +++ b/src/unk_0204FAB4.c @@ -269,11 +269,11 @@ static int sub_0204FE50(UnkStruct_0204FE50 *param0, FieldSystem *fieldSystem, in } partyMenu->reqLevel = 100; - partyMenu->unk_32_0 = 3; + partyMenu->minSelectionSlots = 3; partyMenu->maxSelectionSlots = 3; if (param0->unk_04 == 2) { - partyMenu->unk_32_0 = 2; + partyMenu->minSelectionSlots = 2; partyMenu->maxSelectionSlots = 2; } diff --git a/src/unk_0205003C.c b/src/unk_0205003C.c index dbb30c7cfc..093f649b18 100644 --- a/src/unk_0205003C.c +++ b/src/unk_0205003C.c @@ -258,11 +258,11 @@ static int sub_0205037C(UnkStruct_0205037C *param0, FieldSystem *fieldSystem, in } partyMenu->reqLevel = 100; - partyMenu->unk_32_0 = 3; + partyMenu->minSelectionSlots = 3; partyMenu->maxSelectionSlots = 3; if (param0->unk_04 == 2) { - partyMenu->unk_32_0 = 2; + partyMenu->minSelectionSlots = 2; partyMenu->maxSelectionSlots = 2; } diff --git a/src/unk_0205A0D8.c b/src/unk_0205A0D8.c index 2c4e44a965..3abe5f8869 100644 --- a/src/unk_0205A0D8.c +++ b/src/unk_0205A0D8.c @@ -160,10 +160,10 @@ static void sub_0205A164(UnkStruct_0205A0D8 *param0, int heapID) partyMenu->mode = PARTY_MENU_MODE_SELECT_CONFIRM; if (param0->fieldSystem->unk_B0) { - partyMenu->unk_32_0 = sub_02026074(param0->fieldSystem->unk_B0, 1); - partyMenu->maxSelectionSlots = partyMenu->unk_32_0; + partyMenu->minSelectionSlots = sub_02026074(param0->fieldSystem->unk_B0, 1); + partyMenu->maxSelectionSlots = partyMenu->minSelectionSlots; } else { - partyMenu->unk_32_0 = 3; + partyMenu->minSelectionSlots = 3; partyMenu->maxSelectionSlots = 3; } diff --git a/src/unk_0206B9D8.c b/src/unk_0206B9D8.c index 95e55be749..a34ac146af 100644 --- a/src/unk_0206B9D8.c +++ b/src/unk_0206B9D8.c @@ -80,7 +80,7 @@ static int sub_0206B9D8(UnkStruct_0206B9D8 *param0, FieldSystem *fieldSystem, in partyMenu->bag = SaveData_GetBag(saveData); partyMenu->type = PARTY_MENU_TYPE_BASIC; partyMenu->mode = param0->unk_08; - partyMenu->unk_32_0 = param0->unk_0A; + partyMenu->minSelectionSlots = param0->unk_0A; partyMenu->maxSelectionSlots = param0->unk_0B; partyMenu->reqLevel = param0->unk_0C; partyMenu->selectedMonSlot = param0->unk_0D; diff --git a/src/unk_020989DC.c b/src/unk_020989DC.c index 8b62c4b15e..8e3a3adf5e 100644 --- a/src/unk_020989DC.c +++ b/src/unk_020989DC.c @@ -271,8 +271,6 @@ static int sub_02098C2C(UnkStruct_02098BE4 *param0) static int sub_02098C44(UnkStruct_02098BE4 *param0) { - PartyMenu *partyMenu; - if (!sub_02098AF8(¶m0->appMan)) { return 1; } @@ -283,7 +281,7 @@ static int sub_02098C44(UnkStruct_02098BE4 *param0) param0->unk_0C->unk_02 = 0; - partyMenu = Heap_Alloc(param0->heapID, sizeof(PartyMenu)); + PartyMenu *partyMenu = Heap_Alloc(param0->heapID, sizeof(PartyMenu)); MI_CpuClear8(partyMenu, sizeof(PartyMenu)); partyMenu->party = param0->unk_0C->unk_10; partyMenu->bag = param0->unk_0C->unk_14; diff --git a/src/unk_0209C194.c b/src/unk_0209C194.c index c65cab71c7..96d9e2eb8f 100644 --- a/src/unk_0209C194.c +++ b/src/unk_0209C194.c @@ -106,7 +106,7 @@ static BOOL sub_0209C280(UnkStruct_0209C1EC *param0) } else { CommMan_SetErrorHandling(1, 1); - param0->unk_30 = sub_0203D644(param0->fieldSystem, param0->unk_04); + param0->unk_30 = FieldSystem_OpenPartyMenu_SelectForSpinTrade(param0->fieldSystem, param0->unk_04); param0->unk_28->unk_00 = 1; param0->unk_00 = 2; } @@ -143,7 +143,7 @@ static BOOL sub_0209C324(UnkStruct_0209C1EC *param0) { if (FieldSystem_IsRunningApplication(param0->fieldSystem) == 0) { Heap_Free(param0->unk_34); - param0->unk_30 = sub_0203D644(param0->fieldSystem, param0->unk_04); + param0->unk_30 = FieldSystem_OpenPartyMenu_SelectForSpinTrade(param0->fieldSystem, param0->unk_04); param0->unk_00 = 2; }