diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 34f584822..8a731a8af 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -6,236 +6,10 @@ .extern gSystem .extern FUN_0203A2F0 .extern FUN_0203BB90 - .extern FUN_0203BBBC .extern FUN_0203BC04 .text - thumb_func_start ScrCmd_Unk01D7 -ScrCmd_Unk01D7: ; 0x0203C174 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r2, #0xb - bl FUN_02088960 - str r0, [r4, #0x0] - ldr r1, _0203C1A8 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203C1A8: .word FUN_0203BB90 - - thumb_func_start ScrCmd_Unk01D8 -ScrCmd_Unk01D8: ; 0x0203C1AC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Save_Bag_Get - mov r1, #0x4 - bl Bag_PocketNotEmpty - cmp r0, #0x0 - bne _0203C1E0 - mov r0, #0x1 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} -_0203C1E0: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02028048 - bl FUN_020281B8 - cmp r0, #0x64 - blo _0203C1FA - mov r0, #0x2 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} -_0203C1FA: - mov r0, #0x0 - strh r0, [r4, #0x0] - pop {r3-r5, pc} - - thumb_func_start ScrCmd_Unk01D9 -ScrCmd_Unk01D9: ; 0x0203C200 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r6, r0, #0x0 - mov r0, #0xb - mov r1, #0x8 - bl AllocFromHeap - mov r1, #0x0 - mov r2, #0x8 - str r0, [r6, #0x0] - add r4, r0, #0x0 - bl MI_CpuFill8 - ldr r0, [sp, #0x0] - strh r7, [r4, #0x4] - strh r0, [r4, #0x6] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r6, #0x0] - bl FUN_02037FE4 - ldr r1, _0203C274 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203C274: .word FUN_0203BB90 - - thumb_func_start ScrCmd_MonStoragePC -ScrCmd_MonStoragePC: ; 0x0203C278 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - mov r0, #0xb - mov r1, #0xc - bl AllocFromHeap - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0xc] - str r1, [r0, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - str r1, [r0, #0x4] - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl LaunchStoragePCInterface - ldr r1, _0203C2C0 ; =FUN_0203BBBC - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203C2C0: .word FUN_0203BBBC - - thumb_func_start ScrCmd_Unk00AC -ScrCmd_Unk00AC: ; 0x0203C2C4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_020383F8 - ldr r1, _0203C2DC ; =FUN_0203BC04 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203C2DC: .word FUN_0203BC04 - - thumb_func_start ScrCmd_Unk00AD -ScrCmd_Unk00AD: ; 0x0203C2E0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02065344 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start ScrCmd_Unk00AE -ScrCmd_Unk00AE: ; 0x0203C2F0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_020383D8 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start ScrCmd_Unk00AF -ScrCmd_Unk00AF: ; 0x0203C300 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0203842C - str r0, [r4, #0x0] - ldr r1, _0203C328 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203C328: .word FUN_0203BB90 - - thumb_func_start ScrCmd_HallOfFame -ScrCmd_HallOfFame: ; 0x0203C32C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl Special_EnterHallOfFame - mov r0, #0x1 - pop {r3, pc} - thumb_func_start ScrCmd_Unk00B1 ScrCmd_Unk00B1: ; 0x0203C33C push {r3-r5, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index a3c1d31f9..92d568b33 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -320,12 +320,12 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_ShowContestPokemon .word ScrCmd_ShowSealCapsuleEditor .word ScrCmd_ShowTownMapScreen - .word ScrCmd_MonStoragePC + .word ScrCmd_ShowPCBoxScreen .word ScrCmd_Unk00AC .word ScrCmd_Unk00AD .word ScrCmd_Unk00AE .word ScrCmd_Unk00AF - .word ScrCmd_HallOfFame + .word ScrCmd_ShowEndGameScreen .word ScrCmd_Unk00B1 .word ScrCmd_Unk00B2 .word ScrCmd_Unk00B3 diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s index 696166464..ba47d6e2b 100644 --- a/arm9/asm/unk_020484A8.s +++ b/arm9/asm/unk_020484A8.s @@ -253,8 +253,8 @@ _02048688: nop _02048690: .word 0x0000061B - thumb_func_start Special_EnterHallOfFame -Special_EnterHallOfFame: ; 0x02048694 + thumb_func_start Task_GameClear +Task_GameClear: ; 0x02048694 push {r4-r7, lr} sub sp, #0xc add r7, r0, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 3d4a5d6b4..69becd885 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2851,12 +2851,12 @@ .extern ScrCmd_Unk01D7 .extern ScrCmd_Unk01D8 .extern ScrCmd_Unk01D9 -.extern ScrCmd_MonStoragePC +.extern ScrCmd_ShowPCBoxScreen .extern ScrCmd_Unk00AC .extern ScrCmd_Unk00AD .extern ScrCmd_Unk00AE .extern ScrCmd_Unk00AF -.extern ScrCmd_HallOfFame +.extern ScrCmd_ShowEndGameScreen .extern ScrCmd_Unk00B1 .extern ScrCmd_Unk00B2 .extern ScrCmd_Unk00B3 @@ -3476,7 +3476,7 @@ .extern FUN_020480E4 .extern FUN_0204837C .extern FUN_02048498 -.extern Special_EnterHallOfFame +.extern Task_GameClear .extern FUN_020489DC .extern FUN_020489FC .extern FUN_02048C58 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 8276493d7..467845a72 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,8 +1,10 @@ #include "global.h" #include "scrcmd.h" #include "PAD_pad.h" +#include "bag.h" #include "bg_window.h" #include "camera.h" +#include "constants/items.h" #include "fashion_case.h" #include "main.h" #include "options.h" @@ -16,6 +18,7 @@ #include "unk_0200CA44.h" #include "unk_0204AF24.h" #include "unk_0205EC84.h" +#include "unk_0208890C.h" extern void *FieldSysGetAttrAddr(struct FieldSystem* fieldSystem, enum ScriptEnvField id); extern ScriptContext *CreateScriptContext(struct FieldSystem* fieldSystem, u16 id); @@ -125,6 +128,15 @@ extern void ShowGeonetScreen(FieldSystem *fieldSystem); extern void ShowSealCapsuleEditor(TaskManager *taskManager, struct SaveBlock2 *save); extern void FUN_0205F7A0(FieldSystem *fieldSystem, TownMapAppData *townMap, u32 param2); //TownMap_Init? extern void FUN_02037E90(FieldSystem *fieldSystem, TownMapAppData *townMap); //ShowTownMap? +extern u32 FUN_02028048(struct SaveBlock2 *save); +extern u32 FUN_020281B8(u32 param0); +extern void FUN_02037FE4(FieldSystem *fieldSystem, ScrCmdUnkStruct01D9 *param1); +extern void LaunchStoragePCInterface(FieldSystem *fieldSystem, PCBoxAppData *pcBoxAppData); +extern void FUN_020383F8(FieldSystem *fieldSystem); +extern void FUN_02065344(FieldSystem *fieldSystem); +extern void FUN_020383D8(TaskManager *taskManager); +extern void *FUN_0203842C(FieldSystem *fieldSystem); +extern void Task_GameClear(TaskManager *taskManager); u8 UNK_021C5A0C[4]; @@ -151,7 +163,7 @@ static void FUN_0203B174(struct FieldSystem *fieldSystem, u32 param1, void *para static void FUN_0203B1A8(u32 param0, UnkStruct_0203B174 *param1); static BOOL FUN_0203B218(struct ScriptContext *ctx); /*static*/ BOOL FUN_0203BB90(ScriptContext *ctx); -/*static*/ BOOL FUN_0203BBBC(ScriptContext *ctx); +static BOOL FUN_0203BBBC(ScriptContext *ctx); /*static*/ BOOL FUN_0203BC04(ScriptContext *ctx); static BOOL CheckPortraitSlotFullInternal(struct FieldSystem *fieldSystem, BOOL isContest, u32 portraitSlot); static FashionAppData *FUN_0203BC6C(u32 heapId, struct FieldSystem *fieldSystem, BOOL isContest, u32 portraitSlot); @@ -1938,7 +1950,7 @@ BOOL ScrCmd_DummyGetMapPosition(ScriptContext *ctx) { //009F return TRUE; } -/*static*/ BOOL FUN_0203BBBC(ScriptContext *ctx) { +static BOOL FUN_0203BBBC(ScriptContext *ctx) { struct FieldSystem *fieldSystem = ctx->fieldSystem; PCBoxAppData **pcBoxDataPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); PCBoxAppData *pcBoxData = *pcBoxDataPtr; @@ -2170,3 +2182,80 @@ BOOL ScrCmd_ShowTownMapScreen(ScriptContext *ctx) { //00AA SetupNativeScript(ctx, FUN_0203BB90); return TRUE; } + +BOOL ScrCmd_Unk01D7(ScriptContext *ctx) { //01D7 - TODO: ShowPoffinCaseScreen? + PoffinCaseAppData **poffinCaseAppData = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + u8 unk0 = ScriptReadHalfword(ctx); + *poffinCaseAppData = FUN_02088960(ctx->fieldSystem, unk0, 11); + SetupNativeScript(ctx, FUN_0203BB90); + return TRUE; +} + +BOOL ScrCmd_Unk01D8(ScriptContext *ctx) { //01D8 + u16 *unk0 = ScriptGetVarPointer(ctx); + struct Bag *bag = Save_Bag_Get(ctx->fieldSystem->saveBlock2); + if (!Bag_PocketNotEmpty(bag, POCKET_BERRIES)) { + *unk0 = 1; + return FALSE; + } + else if (FUN_020281B8(FUN_02028048(ctx->fieldSystem->saveBlock2)) >= 0x64) { + *unk0 = 2; + return FALSE; + } + *unk0 = 0; + return FALSE; +} + +BOOL ScrCmd_Unk01D9(ScriptContext *ctx) { //01D9 + u16 unk0 = ScriptGetVar(ctx); + u16 unk1 = ScriptGetVar(ctx); + ScrCmdUnkStruct01D9 **unkStructPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + *unkStructPtr = AllocFromHeap(11, sizeof(ScrCmdUnkStruct01D9)); + ScrCmdUnkStruct01D9 *unkStruct = *unkStructPtr; + MI_CpuFill8(unkStruct, 0, sizeof(ScrCmdUnkStruct01D9)); //consider inlining as is in heartgold + unkStruct->unk04 = unk0; + unkStruct->unk06 = unk1; + unkStruct->save = ctx->fieldSystem->saveBlock2; + FUN_02037FE4(ctx->fieldSystem, *unkStructPtr); + SetupNativeScript(ctx, FUN_0203BB90); + return TRUE; +} + +BOOL ScrCmd_ShowPCBoxScreen(ScriptContext *ctx) { //00AB + PCBoxAppData **pcBoxAppDataPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + PCBoxAppData *pcBoxAppData = AllocFromHeap(11, sizeof(PCBoxAppData)); //also seems inlined + pcBoxAppData->save = ctx->fieldSystem->saveBlock2; + pcBoxAppData->operation = (enum PCBoxOperation)ScriptReadByte(ctx); + *pcBoxAppDataPtr = pcBoxAppData; + LaunchStoragePCInterface(ctx->fieldSystem, *pcBoxAppDataPtr); + SetupNativeScript(ctx, FUN_0203BBBC); + return TRUE; +} + +BOOL ScrCmd_Unk00AC(ScriptContext *ctx) { + FUN_020383F8(ctx->fieldSystem); + SetupNativeScript(ctx, FUN_0203BC04); + return TRUE; +} + +BOOL ScrCmd_Unk00AD(ScriptContext *ctx) { + FUN_02065344(ctx->fieldSystem); + return TRUE; +} + +BOOL ScrCmd_Unk00AE(ScriptContext *ctx) { + FUN_020383D8(ctx->fieldSystem->taskManager); + return TRUE; +} + +BOOL ScrCmd_Unk00AF(ScriptContext *ctx) { + void **appData = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); //todo: define an app type for this + *appData = FUN_0203842C(ctx->fieldSystem); + SetupNativeScript(ctx, FUN_0203BB90); + return TRUE; +} + +BOOL ScrCmd_ShowEndGameScreen(ScriptContext *ctx) { + Task_GameClear(ctx->fieldSystem->taskManager); + return TRUE; +} diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c index de4b1c978..25f7f7223 100644 --- a/arm9/src/unk_0208890C.c +++ b/arm9/src/unk_0208890C.c @@ -8,7 +8,7 @@ #include "poke_overlay.h" extern struct SaveBlock2* ScriptEnvironment_GetSavePtr(struct FieldSystem *); -extern void* FUN_02028048(struct SaveBlock2* sav2); +extern u32 FUN_02028048(struct SaveBlock2* sav2); extern void FUN_020373D4(struct FieldSystem *, struct OverlayManagerTemplate *, void*); extern BOOL FUN_020889B0(struct OverlayManager *, u32*); extern BOOL FUN_02088A00(struct OverlayManager *, u32*); @@ -21,10 +21,10 @@ const struct OverlayManagerTemplate UNK_020FD6E4 = { SDK_OVERLAY_INVALID_ID, }; -struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3) +struct PoffinCaseAppData* FUN_0208890C(u32 a0, struct SaveBlock2* sav2, u32 heap_id, u32 *a3) { - struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C)); - MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C)); + struct PoffinCaseAppData* ret = AllocFromHeap(heap_id, sizeof(struct PoffinCaseAppData)); + MI_CpuFill8(ret, 0, sizeof(struct PoffinCaseAppData)); ret->sav2 = sav2; ret->unk8 = FUN_02028048(sav2); @@ -37,15 +37,15 @@ struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 h return ret; } -void FUN_02088950(struct FieldSystem *fieldSystem, struct UnkStruct_0208890C *param1) +void FUN_02088950(struct FieldSystem *fieldSystem, struct PoffinCaseAppData *param1) { FUN_020373D4(fieldSystem, (struct OverlayManagerTemplate *)&UNK_020FD6E4, param1); } -struct UnkStruct_0208890C* FUN_02088960(struct FieldSystem *fieldSystem, void* a1, u32 heap_id) +struct PoffinCaseAppData* FUN_02088960(struct FieldSystem *fieldSystem, u32 a1, u32 heap_id) { struct SaveBlock2* sav2 = ScriptEnvironment_GetSavePtr(fieldSystem); - struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, fieldSystem->unk98); + struct PoffinCaseAppData* ret = FUN_0208890C(a1, sav2, heap_id, fieldSystem->unk98); FUN_02088950(fieldSystem, ret); diff --git a/arm9/src/unk_02088AAC.c b/arm9/src/unk_02088AAC.c index 53ba884a3..7e9c49d0d 100644 --- a/arm9/src/unk_02088AAC.c +++ b/arm9/src/unk_02088AAC.c @@ -89,9 +89,9 @@ u32 FUN_02088B4C(struct UnkStruct_02088AAC *r0) .exitFunc = MOD75_021E6F00, .ovly = FS_OVERLAY_ID(MODULE_75) }; - struct BagView *bag_view = CreateBagView(r0->unk10->bag, UNK_020FD6F4, r0->heap_id); + struct BagView *bag_view = CreateBagView(r0->poffinCaseAppData->bag, UNK_020FD6F4, r0->heap_id); - FUN_0206E314(bag_view, r0->unk10->sav2, (u8)((u8)r0->unk06 == 1 ? 5 : 4), r0->unk0C); + FUN_0206E314(bag_view, r0->poffinCaseAppData->sav2, (u8)((u8)r0->unk06 == 1 ? 5 : 4), r0->unk0C); r0->ovly_data = OverlayManager_New(&OVERLAY_75_MANAGER, (s32 *)bag_view, r0->heap_id); r0->ovly_param = bag_view; @@ -129,7 +129,7 @@ u32 FUN_02088BA8(struct UnkStruct_02088AAC *r0) case 2: case 3: case 4: - GF_ASSERT(Bag_TakeItem(r0->unk10->bag, (u16)r0->item, 1, r0->heap_id)); + GF_ASSERT(Bag_TakeItem(r0->poffinCaseAppData->bag, (u16)r0->item, 1, r0->heap_id)); return 4; } } @@ -138,7 +138,7 @@ u32 FUN_02088C3C(struct UnkStruct_02088AAC *r0) { FS_EXTERN_OVERLAY(MODULE_68); - struct Bag *bag = r0->unk10->bag; + struct Bag *bag = r0->poffinCaseAppData->bag; const struct OverlayManagerTemplate OVERLAY_68_MANAGER = { .initFunc = MOD68_021D74E0, diff --git a/include/scrcmd.h b/include/scrcmd.h index 2f9e61a6e..e840579d0 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -184,6 +184,15 @@ BOOL ScrCmd_Unk0130(ScriptContext *ctx); BOOL ScrCmd_ShowGeonetScreen(ScriptContext *ctx); BOOL ScrCmd_ShowSealCapsuleEditor(ScriptContext *ctx); BOOL ScrCmd_ShowTownMapScreen(ScriptContext *ctx); +BOOL ScrCmd_Unk01D7(ScriptContext *ctx); +BOOL ScrCmd_Unk01D8(ScriptContext *ctx); +BOOL ScrCmd_Unk01D9(ScriptContext *ctx); +BOOL ScrCmd_ShowPCBoxScreen(ScriptContext *ctx); +BOOL ScrCmd_Unk00AC(ScriptContext *ctx); +BOOL ScrCmd_Unk00AD(ScriptContext *ctx); +BOOL ScrCmd_Unk00AE(ScriptContext *ctx); +BOOL ScrCmd_Unk00AF(ScriptContext *ctx); +BOOL ScrCmd_ShowEndGameScreen(ScriptContext *ctx); // scrcmd_mart.c BOOL ScrCmd_NormalMart(struct ScriptContext * ctx); diff --git a/include/script.h b/include/script.h index 86addb67d..ad7818e4a 100644 --- a/include/script.h +++ b/include/script.h @@ -34,9 +34,17 @@ typedef struct LocalMapObject { //todo move to local_map_object.c typedef struct PartyMenuAppData PartyMenuAppData; //todo move to own file +enum PCBoxOperation { + PC_BOX_OPERATION_DEPOSIT_MON, + PC_BOX_OPERATION_WITHDRAW_MON, + PC_BOX_OPERATION_MOVE_MONS, + PC_BOX_OPERATION_MOVE_ITEMS, + PC_BOX_OPERATION_COMPARE_MONS, +}; + typedef struct PCBoxAppData { struct SaveBlock2 *save; - void *unk04; + enum PCBoxOperation operation; BOOL unk08; } PCBoxAppData; //todo move to own file @@ -50,6 +58,12 @@ typedef struct TownMapAppData { //todo fill out u8 padding[0x140]; } TownMapAppData; //todo move to own file +typedef struct ScrCmdUnkStruct01D9 { + struct SaveBlock2 *save; + u16 unk04; + u16 unk06; +} ScrCmdUnkStruct01D9; //todo identify and move to own file + typedef struct FieldSystem //todo move to field_system.c { u32 *unk00; diff --git a/include/unk_0208890C.h b/include/unk_0208890C.h index c858342e4..611a4d0ba 100644 --- a/include/unk_0208890C.h +++ b/include/unk_0208890C.h @@ -8,20 +8,19 @@ struct Options; struct PlayerData; struct SaveBlock2; -struct UnkStruct_0208890C -{ +typedef struct PoffinCaseAppData { u8 padding[0x4]; - void* unk4; - void* unk8; + u32 unk4; + u32 unk8; struct SaveBlock2* sav2; struct PlayerData* player; struct Bag* bag; struct Options* options; - void* unk1C; -}; + u32 *unk1C; +} PoffinCaseAppData; -struct UnkStruct_0208890C* FUN_0208890C(void*, struct SaveBlock2* sav2, u32 heap_id, void*); -void FUN_02088950(struct FieldSystem *fieldSystem, struct UnkStruct_0208890C*); -struct UnkStruct_0208890C* FUN_02088960(struct FieldSystem *fieldSystem, void*, u32 heap_id); +struct PoffinCaseAppData* FUN_0208890C(u32, struct SaveBlock2* sav2, u32 heap_id, u32 *); +void FUN_02088950(struct FieldSystem *fieldSystem, struct PoffinCaseAppData*); +struct PoffinCaseAppData* FUN_02088960(struct FieldSystem *fieldSystem, u32, u32 heap_id); #endif diff --git a/include/unk_02088AAC.h b/include/unk_02088AAC.h index dc86a5f4e..afb737201 100644 --- a/include/unk_02088AAC.h +++ b/include/unk_02088AAC.h @@ -12,7 +12,7 @@ struct UnkStruct_02088AAC u16 unk06; u32 item; struct UnkStruct_0206F164 *unk0C; - struct UnkStruct_0208890C *unk10; + struct PoffinCaseAppData *poffinCaseAppData; u32 unk14; void *ovly_param; struct OverlayManager *ovly_data;