Clean up primary entry-points and document associated script commands

This commit is contained in:
Rachel
2025-09-02 21:35:07 -07:00
parent 423adbc493
commit 12ba0405de
23 changed files with 137 additions and 151 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -106,9 +106,7 @@ _0168:
CloseMessage
FadeScreenOut
WaitFadeScreen
ScrCmd_2A5
GetSelectedPartySlot VAR_RESULT
ReturnToField
SelectPokemonToTrade
FadeScreenIn
WaitFadeScreen
GoToIfEq VAR_RESULT, 0xFF, _01D9

View File

@@ -21,9 +21,7 @@ _003B:
CloseMessage
FadeScreenOut
WaitFadeScreen
ScrCmd_2A5
GetSelectedPartySlot VAR_RESULT
ReturnToField
SelectPokemonToTrade
FadeScreenIn
WaitFadeScreen
GoToIfEq VAR_RESULT, 0xFF, _00AC

View File

@@ -36,9 +36,7 @@ _0060:
CloseMessage
FadeScreenOut
WaitFadeScreen
ScrCmd_2A5
GetSelectedPartySlot VAR_RESULT
ReturnToField
SelectPokemonToTrade
FadeScreenIn
WaitFadeScreen
GoToIfEq VAR_RESULT, 0xFF, _00D1

View File

@@ -38,9 +38,7 @@ _0060:
CloseMessage
FadeScreenOut
WaitFadeScreen
ScrCmd_2A5
GetSelectedPartySlot VAR_RESULT
ReturnToField
SelectPokemonToTrade
FadeScreenIn
WaitFadeScreen
GoToIfEq VAR_RESULT, 0xFF, _00D1

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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)

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -3,6 +3,7 @@
#include <nitro.h>
#include <string.h>
#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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -271,8 +271,6 @@ static int sub_02098C2C(UnkStruct_02098BE4 *param0)
static int sub_02098C44(UnkStruct_02098BE4 *param0)
{
PartyMenu *partyMenu;
if (!sub_02098AF8(&param0->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;

View File

@@ -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;
}