From d8ea0b77d379605cf50a3fc24d552fc828a359bc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Jul 2024 17:00:17 +0200 Subject: [PATCH] sub_8060890 --- asm/code_805D8C8.s | 149 ------------------------------------------- src/code_805D8C8_1.c | 70 ++++++++++++++------ 2 files changed, 49 insertions(+), 170 deletions(-) diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 21a57a178..6907098d7 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -7,155 +7,6 @@ - - thumb_func_start sub_8060800 -sub_8060800: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0 - ldr r0, _0806083C - ldr r2, [r0] - mov r12, r0 - ldr r6, _08060840 - cmp r1, r2 - bge _08060828 - adds r3, r6, 0 -_08060816: - movs r7, 0 - ldrsh r0, [r3, r7] - cmp r0, 0x1 - bgt _08060820 - adds r1, 0x1 -_08060820: - adds r3, 0x2 - subs r2, 0x1 - cmp r2, 0 - bne _08060816 -_08060828: - lsls r0, r4, 1 - adds r0, r6 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x1 - bgt _08060844 - adds r3, r4, 0 - adds r2, r1, 0 - movs r1, 0 - b _0806084C - .align 2, 0 -_0806083C: .4byte gUnknown_202F258 -_08060840: .4byte gUnknown_202F248 -_08060844: - subs r3, r4, r1 - mov r7, r12 - ldr r0, [r7] - subs r2, r0, r1 -_0806084C: - cmp r5, 0 - beq _08060858 - movs r0, 0 - strb r2, [r5] - strb r3, [r5, 0x1] - strb r0, [r5, 0x3] -_08060858: - adds r0, r1, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8060800 - - thumb_func_start sub_8060860 -sub_8060860: - push {lr} - adds r1, r0, 0 - ldr r0, _08060880 - movs r2, 0x1A - ldrsh r0, [r0, r2] - cmp r0, 0x1 - ble _0806087C - ldr r0, _08060884 - lsls r1, 1 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0x1 - ble _08060888 -_0806087C: - movs r0, 0 - b _0806088A - .align 2, 0 -_08060880: .4byte gUnknown_202EE10 -_08060884: .4byte gUnknown_202F248 -_08060888: - movs r0, 0x1 -_0806088A: - pop {r1} - bx r1 - thumb_func_end sub_8060860 - - thumb_func_start sub_8060890 -sub_8060890: - push {r4,lr} - adds r3, r0, 0 - ldr r1, _080608B4 - ldr r2, _080608B8 - movs r4, 0x1E - ldrsh r0, [r2, r4] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - beq _080608D0 - cmp r0, 0x1 - bgt _080608BC - cmp r0, 0 - beq _080608C2 - b _080608E8 - .align 2, 0 -_080608B4: .4byte gUnknown_202F248 -_080608B8: .4byte gUnknown_202EE10 -_080608BC: - cmp r0, 0x2 - beq _080608DC - b _080608E8 -_080608C2: - ldr r1, _080608CC - ldrb r0, [r2, 0x18] - adds r0, 0x1 - b _080608EC - .align 2, 0 -_080608CC: .4byte gUnknown_202F238 -_080608D0: - ldr r1, _080608D8 - ldrb r0, [r2, 0x18] - adds r0, 0xB - b _080608EC - .align 2, 0 -_080608D8: .4byte gUnknown_202F238 -_080608DC: - ldr r1, _080608E4 - movs r0, 0x80 - b _080608EC - .align 2, 0 -_080608E4: .4byte gUnknown_202F238 -_080608E8: - ldr r1, _080608FC - subs r0, 0x74 -_080608EC: - strb r0, [r1] - ldrh r0, [r3] - strh r0, [r1, 0x4] - ldrh r0, [r3, 0x2] - strh r0, [r1, 0x6] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080608FC: .4byte gUnknown_202F238 - thumb_func_end sub_8060890 - thumb_func_start sub_8060900 sub_8060900: push {r4-r7,lr} diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 6ff09e037..a4f3be5a1 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -3384,7 +3384,7 @@ typedef struct UnkTextStruct3 { } UnkTextStruct3; extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1); -void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, u8 *a5); +void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5); // Inline needed to (fake?)match. static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src) @@ -3473,11 +3473,10 @@ s32 sub_8060D64(s16 *a0, bool8 a1, bool8 a2, bool8 a3, Entity *a4); void sub_8060890(Position *a0); bool8 sub_8060860(s32 a0); void sub_8060900(Entity *a0); -s32 sub_8060800(u8 *a0, s32 a1); +s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1); void sub_8060CE8(ActionContainer *a0); extern Entity *DrawFieldGiveItemMenu(u8 *a0, s32 a1); -// TODO: Fix casts to (void*) once more functions are decompiled. bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) { s32 i, i_r6; @@ -3489,7 +3488,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) u8 var_2C = 0; u8 var_28 = 0; EntityInfo *a0Info = a0->info; - u32 var_3C; + UnkTextStruct2_sub2 var_3C; UnkTextStruct3 var_FC = { @@ -3502,7 +3501,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) .unkC = 0x12, .unkE = 0x10, .unk10 = 0x10, - .unk14 = (void*)(&var_3C), + .unk14 = &var_3C, }, {.unk4 = 3}, {.unk4 = 3}, {.unk4 = 3}, }, @@ -3556,7 +3555,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) } } } - CreateFieldItemMenu(r8, a0, var_2C, var_30, &var_FC, (void*)&var_3C); + CreateFieldItemMenu(r8, a0, var_2C, var_30, &var_FC, &var_3C); id = gUnknown_202F248[gUnknown_202EE10.unk1E]; if (id >= MAX_TEAM_MEMBERS) { @@ -3683,7 +3682,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) } sub_8060900(a0); - sub_8060800((void*)&var_3C, gUnknown_202EE10.unk1E); + sub_8060800(&var_3C, gUnknown_202EE10.unk1E); sub_805FC30(&var_FC, 0x16); while (1) { AddMenuCursorSprite(&gUnknown_202EE10); @@ -3753,7 +3752,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) extern const struct UnkTextStruct2 gUnknown_8106B6C; extern const struct unkStruct_8090F58 gUnknown_8106B60; -void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, u8 *a5) +void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 *a4, UnkTextStruct2_sub2 *a5) { s32 i, x, y; s32 r10; @@ -3779,7 +3778,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 case 1: a4->a0[0].unk10 = 0x10; a4->a0[0].unkE = 0x10; - a5[2] = 0xC; + a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x10; gUnknown_202EE10.unk1C = 0xA; gDungeon->unk181e8.unk18212 = 1; @@ -3787,7 +3786,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 case 2: a4->a0[0].unk10 = 4; a4->a0[0].unkE = 4; - a5[2] = 6; + a5->f2 = 6; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; break; @@ -3795,7 +3794,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 default: a4->a0[0].unk10 = 4; a4->a0[0].unkE = 4; - a5[2] = 0xC; + a5->f2 = 0xC; gUnknown_202EE10.unk6 = 0x12; gUnknown_202EE10.unk1C = 1; break; @@ -3911,15 +3910,7 @@ void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextStruct3 } } -/* -struct TstStruct { - u8 f0; - u8 f1; - u8 f2; - u8 f3; -}; - -s32 sub_8060800(struct TstStruct *a0, s32 a1) +s32 sub_8060800(UnkTextStruct2_sub2 *a0, s32 a1) { s32 i, r1, r2, r3; @@ -3948,4 +3939,41 @@ s32 sub_8060800(struct TstStruct *a0, s32 a1) return r1; } -*/ + +bool8 sub_8060860(s32 a0) +{ + if (gUnknown_202EE10.unk1A <= 1 || gUnknown_202F248[a0] > 1) + return FALSE; + else + return TRUE; +} + +void sub_8060890(Position *a0) +{ + s32 var = gUnknown_202F248[gUnknown_202EE10.unk1E]; + switch (var) + { + case 0: + gUnknown_202F238.actionUseIndex = gUnknown_202EE10.menuIndex + 1; + break; + case 1: + gUnknown_202F238.actionUseIndex = gUnknown_202EE10.menuIndex + 11; + break; + case 2: + gUnknown_202F238.actionUseIndex = 128; + break; + default: + gUnknown_202F238.actionUseIndex = var - 116; + break; + } + + gUnknown_202F238.lastItemThrowPosition.x = a0->x; + gUnknown_202F238.lastItemThrowPosition.y = a0->y; +} +/* +void sub_8060900(Entity *a0) +{ + +} + +//*/