diff --git a/asm/non_matching/subtask2/sub_080A7040.inc b/asm/non_matching/subtask2/sub_080A7040.inc deleted file mode 100644 index d580cb08..00000000 --- a/asm/non_matching/subtask2/sub_080A7040.inc +++ /dev/null @@ -1,47 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - ldr r1, _080A7090 @ =gMenu - ldrh r0, [r1, #0x2e] - cmp r0, r5 - beq _080A708C - strh r5, [r1, #0x2e] - ldr r4, _080A7094 @ =gUnk_02022130 - movs r1, #0xc0 - lsls r1, r1, #2 - adds r0, r4, #0 - bl MemClear - ldr r0, _080A7098 @ =0xFFFFFE00 - adds r4, r4, r0 - ldr r1, _080A709C @ =0x0600E000 - movs r2, #0x80 - lsls r2, r2, #4 - adds r0, r4, #0 - bl MemCopy - ldr r1, _080A70A0 @ =gUnk_08128D70 - lsls r0, r5, #3 - adds r4, r0, r1 - ldrb r0, [r4] - bl GetInventoryValue - cmp r0, #0 - beq _080A7082 - ldrh r0, [r4, #6] - ldr r1, _080A70A4 @ =gUnk_08129004 - bl sub_0805F46C -_080A7082: - ldr r0, _080A70A8 @ =gScreen - movs r1, #3 - strh r1, [r0, #0x18] - movs r1, #1 - strh r1, [r0, #0x1a] -_080A708C: - pop {r4, r5, pc} - .align 2, 0 -_080A7090: .4byte gMenu -_080A7094: .4byte gUnk_02022130 -_080A7098: .4byte 0xFFFFFE00 -_080A709C: .4byte 0x0600E000 -_080A70A0: .4byte gUnk_08128D70 -_080A70A4: .4byte gUnk_08129004 -_080A70A8: .4byte gScreen - .syntax divided diff --git a/src/subtask2.c b/src/subtask2.c index 0fd102bc..995d1683 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -99,6 +99,18 @@ typedef struct { } gUnk_08128DE8_struct; extern gUnk_08128DE8_struct gUnk_08128DE8[]; +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + s8 unk5; + u16 unk6; +} struct_gUnk_08128D70; + +extern const struct_gUnk_08128D70 gUnk_08128D70[]; + ASM_FUNC("asm/non_matching/subtask2/sub_080A5594.inc", void sub_080A5594()) ASM_FUNC("asm/non_matching/subtask2/sub_080A56A0.inc", void sub_080A56A0()) @@ -776,7 +788,20 @@ void sub_080A6F6C(u32 param_1) { ASM_FUNC("asm/non_matching/subtask2/sub_080A6FB4.inc", void sub_080A6FB4(u32 a, u32 b)) -ASM_FUNC("asm/non_matching/subtask2/sub_080A7040.inc", void sub_080A7040(u32 a)) +void sub_080A7040(u32 param_1) { + extern Font gUnk_08129004; + extern u8 gUnk_02022130[]; + if (gGenericMenu.unk2e.HWORD != param_1) { + gGenericMenu.unk2e.HWORD = param_1; + MemClear(gUnk_02022130, 0x300); + MemCopy(gUnk_02022130 - 0x200, (void*)0x600e000, 0x800); + if (GetInventoryValue(gUnk_08128D70[param_1].unk0) != 0) { + sub_0805F46C(gUnk_08128D70[param_1].unk6, &gUnk_08129004); + } + gScreen.bg1.yOffset = 3; + gScreen.bg1.updated = 1; + } +} ASM_FUNC("asm/non_matching/subtask2/sub_080A70AC.inc", void sub_080A70AC(const KeyButtonLayout* layout)) @@ -787,12 +812,12 @@ void SetMenuType(u32 menuType) { } void ResetUI(void) { - MemClear(&gUI, 0x3b4); + MemClear(&gUI, sizeof(gUI)); } void MenuFadeIn(u32 param_1, u32 param_2) { if (gUI.nextToLoad == 0) { - MemClear(&gUI, 0x3b4); + MemClear(&gUI, sizeof(gUI)); gUI.lastState = param_1; gUI.field_0x3 = param_2; gUI.pauseFadeIn = gMain.substate;