From d5e24ae26d3884daaa016ee6f6d4909faa4a5a7c Mon Sep 17 00:00:00 2001 From: Akashi Akira Date: Mon, 15 May 2023 04:13:26 +0100 Subject: [PATCH] ScrCmd_GetSelectedPartySlot --- arm9/asm/scrcmd_asm.s | 37 ------------------------------------- arm9/asm/unk_02038C78.s | 2 +- arm9/global.inc | 2 +- arm9/src/scrcmd.c | 16 ++++++++++++++++ include/scrcmd.h | 1 + 5 files changed, 19 insertions(+), 39 deletions(-) diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 18178cf24..1e5969e74 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -14,43 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start ScrCmd_Unk0193 -ScrCmd_Unk0193: ; 0x0203B968 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FieldSysGetAttrAddr - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203B994 - bl GF_AssertFail -_0203B994: - ldr r0, [r4, #0x0] - bl FUN_02037A40 - strh r0, [r5, #0x0] - ldrh r0, [r5, #0x0] - cmp r0, #0x7 - bne _0203B9A6 - mov r0, #0xff - strh r0, [r5, #0x0] -_0203B9A6: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - thumb_func_start ScrCmd_Unk0194 ScrCmd_Unk0194: ; 0x0203B9B4 push {r4-r7, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 9cd0641d1..cbf0e897d 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -552,7 +552,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_WaitButtonABTime .word ScrCmd_ChoosePokemonMenu .word ScrCmd_ChoosePokemonMenu2 - .word ScrCmd_Unk0193 + .word ScrCmd_GetSelectedPartySlot .word ScrCmd_Unk0194 .word ScrCmd_Unk0195 .word ScrCmd_Unk0196 diff --git a/arm9/global.inc b/arm9/global.inc index fe544016b..369bc5c31 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2814,7 +2814,7 @@ .extern ScrCmd_ChoosePokemonMenu .extern ScrCmd_OpenTradeScreen .extern ScrCmd_ChoosePokemonMenu2 -.extern ScrCmd_Unk0193 +.extern ScrCmd_GetSelectedPartySlot .extern ScrCmd_Unk0194 .extern ScrCmd_Unk0195 .extern ScrCmd_Unk0196 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 424d4dfc8..23caf4f4a 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -95,6 +95,7 @@ extern void FUN_02029D44(struct SealCase *sealCase, u16 sealId, s16 amount); extern u32 FUN_020379F8(u32 param0, struct FieldSystem *fieldSystem); extern u32 FUN_02037A1C(u32 param0, struct FieldSystem *fieldSystem); extern u32 FUN_02037B44(struct TaskManager *taskManager, u32 param1); +extern u16 FUN_02037A40(u32 *param0); extern u8 UNK_021C5A0C[4]; @@ -1795,3 +1796,18 @@ THUMB_FUNC BOOL ScrCmd_ChoosePokemonMenu2(struct ScriptContext *ctx) { //0192 *unk = FUN_02037B44(ctx->fieldSystem->taskManager, 0x20); return TRUE; } + +THUMB_FUNC BOOL ScrCmd_GetSelectedPartySlot(struct ScriptContext *ctx) { //0193 + u16 *variable = ScriptGetVarPointer(ctx); + u32 **unk = FieldSysGetAttrAddr(ctx->fieldSystem, 0x13); + + GF_ASSERT(*unk); + *variable = FUN_02037A40(*unk); + + if (*variable == 7) { + *variable = 0xFF; + } + FreeToHeap(*unk); + *unk = NULL; + return FALSE; +} diff --git a/include/scrcmd.h b/include/scrcmd.h index f38a4d8b2..e5626c620 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -151,6 +151,7 @@ BOOL ScrCmd_GetPokemonForme(struct ScriptContext *ctx); BOOL ScrCmd_ChoosePokemonMenu(struct ScriptContext *ctx); BOOL ScrCmd_OpenTradeScreen(struct ScriptContext *ctx); BOOL ScrCmd_ChoosePokemonMenu2(struct ScriptContext *ctx); +BOOL ScrCmd_GetSelectedPartySlot(struct ScriptContext *ctx); // scrcmd_mart.c BOOL ScrCmd_NormalMart(struct ScriptContext * ctx);