From d0b3ea468d001616d2f9cf8125bc9dfe715c4792 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 27 May 2023 15:45:59 +0100 Subject: [PATCH] FUN_0203BBBC --- arm9/asm/scrcmd_asm.s | 37 +------------------------------------ arm9/src/scrcmd.c | 22 ++++++++++++++++++++++ include/script.h | 8 +++++++- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index b0f9362b2..58d1b31a9 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -6,45 +6,10 @@ .extern gMain .extern FUN_0203A2F0 .extern FUN_0203BB90 + .extern FUN_0203BBBC .text - thumb_func_start FUN_0203BBBC -FUN_0203BBBC: ; 0x0203BBBC - push {r4-r6, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x13 - add r0, r5, #0x0 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - ldr r6, [r4, #0x0] - bl FUN_0204647C - cmp r0, #0x0 - beq _0203BBDC - mov r0, #0x0 - pop {r4-r6, pc} -_0203BBDC: - ldr r0, [r6, #0x8] - cmp r0, #0x1 - bne _0203BBF4 - mov r0, #0xb - bl FUN_02029048 - add r5, #0x98 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - mov r2, #0x1 - bl FUN_02028AD4 -_0203BBF4: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - thumb_func_start FUN_0203BC04 FUN_0203BC04: ; 0x0203BC04 push {r3, lr} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index bd5a33a03..755ce6573 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -101,6 +101,8 @@ extern void *FUN_02037BB0(u32 param0, struct FieldSystem *fieldSystem, u16 param extern void *FUN_02037C00(u32 param0, struct FieldSystem *fieldSystem, u16 param2); extern u16 FUN_02037A78(void *runningAppData); extern u16 MOD05_021E1858(struct FieldSystem *fieldSystem, LocalMapObject *event, u16 param2); +extern u32 FUN_02029048(u32 param0); +extern void FUN_02028AD4(u32 *param0, u32 param1, u32 param2); u8 UNK_021C5A0C[4]; @@ -127,6 +129,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); extern BOOL FUN_0203BC04(struct ScriptContext *ctx); @@ -1880,18 +1883,22 @@ THUMB_FUNC BOOL ScrCmd_Unk009B(ScriptContext *ctx) { //009B } THUMB_FUNC BOOL ScrCmd_DummySetWeather(ScriptContext *ctx) { //009C +#pragma unused(ctx) return FALSE; } THUMB_FUNC BOOL ScrCmd_DummyInitWeather(ScriptContext *ctx) { //009D +#pragma unused(ctx) return FALSE; } THUMB_FUNC BOOL ScrCmd_DummyUpdateWeather(ScriptContext *ctx) { //009E +#pragma unused(ctx) return TRUE; } THUMB_FUNC BOOL ScrCmd_DummyGetMapPosition(ScriptContext *ctx) { //009F +#pragma unused(ctx) return FALSE; } @@ -1906,3 +1913,18 @@ THUMB_FUNC /*static*/ BOOL FUN_0203BB90(ScriptContext *ctx) { *runningAppData = NULL; return TRUE; } + +THUMB_FUNC /*static*/ BOOL FUN_0203BBBC(ScriptContext *ctx) { + struct FieldSystem *fieldSystem = ctx->fieldSystem; + PCBoxAppData **pcBoxDataPtr = FieldSysGetAttrAddr(ctx->fieldSystem, SCRIPTENV_RUNNING_APP_DATA); + PCBoxAppData *pcBoxData = *pcBoxDataPtr; + if (FUN_0204647C(fieldSystem)) { + return FALSE; + } + if (pcBoxData->unk08 == TRUE) { + FUN_02028AD4(fieldSystem->unk98, FUN_02029048(11), 1); + } + FreeToHeap(*pcBoxDataPtr); + *pcBoxDataPtr = NULL; + return TRUE; +} diff --git a/include/script.h b/include/script.h index 64cbba902..3fbdfe2d7 100644 --- a/include/script.h +++ b/include/script.h @@ -33,6 +33,12 @@ typedef struct LocalMapObject { //todo move to local_map_object.c typedef struct PartyMenuAppData PartyMenuAppData; //todo move to own file +typedef struct PCBoxAppData { + struct SaveBlock2 *save; + void *unk04; + BOOL unk08; +} PCBoxAppData; //todo move to own file + struct FieldSystem //todo move to field_system.c { u32 *unk00; @@ -52,7 +58,7 @@ struct FieldSystem //todo move to field_system.c u8 padding5[0x14]; u32 unk78; u8 padding6[0x1C]; - void *unk98; + u32 *unk98; u8 padding7[0xC]; struct UnkStruct_02046444 * unkA8; };