From 1cf9d9cd6b9482353190a7ac24c3e9d5cf91730f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 6 Apr 2022 17:13:24 +0300 Subject: [PATCH] Match sub_080A6FB4 --- asm/non_matching/subtask2/sub_080A6FB4.inc | 69 ---------------------- src/subtask2.c | 33 ++++++++++- 2 files changed, 32 insertions(+), 70 deletions(-) delete mode 100644 asm/non_matching/subtask2/sub_080A6FB4.inc diff --git a/asm/non_matching/subtask2/sub_080A6FB4.inc b/asm/non_matching/subtask2/sub_080A6FB4.inc deleted file mode 100644 index d1d5d779..00000000 --- a/asm/non_matching/subtask2/sub_080A6FB4.inc +++ /dev/null @@ -1,69 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r2, r0, #0 - movs r4, #0 - cmp r1, #1 - beq _080A6FF0 - cmp r1, #1 - blo _080A6FC8 - cmp r1, #2 - beq _080A6FD6 - b _080A6FFA -_080A6FC8: - ldr r0, _080A6FE4 @ =gSave - movs r1, #1 - lsls r1, r2 - ldr r0, [r0, #0x40] - ands r0, r1 - cmp r0, #0 - beq _080A6FFA -_080A6FD6: - ldr r1, _080A6FE8 @ =gUnk_08127F94 - lsls r0, r2, #3 - adds r0, r0, r1 - ldrh r4, [r0, #6] - ldr r5, _080A6FEC @ =gUnk_08128FC0 - b _080A6FFA - .align 2, 0 -_080A6FE4: .4byte gSave -_080A6FE8: .4byte gUnk_08127F94 -_080A6FEC: .4byte gUnk_08128FC0 -_080A6FF0: - ldr r1, _080A702C @ =gUnk_08128FF0 - lsls r0, r2, #1 - adds r0, r0, r1 - ldrh r4, [r0] - ldr r5, _080A7030 @ =gUnk_08128FD8 -_080A6FFA: - ldr r1, _080A7034 @ =gMenu - ldrh r0, [r1, #0x2e] - cmp r0, r4 - beq _080A7024 - strh r4, [r1, #0x2e] - ldr r0, _080A7038 @ =gUnk_020350F0 - movs r1, #0x80 - lsls r1, r1, #1 - bl MemClear - movs r0, #0xff - ands r0, r4 - cmp r0, #0 - beq _080A701E - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805F46C -_080A701E: - ldr r1, _080A703C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_080A7024: - ldr r1, _080A703C @ =gScreen - movs r0, #2 - strh r0, [r1, #0xc] - pop {r4, r5, pc} - .align 2, 0 -_080A702C: .4byte gUnk_08128FF0 -_080A7030: .4byte gUnk_08128FD8 -_080A7034: .4byte gMenu -_080A7038: .4byte gUnk_020350F0 -_080A703C: .4byte gScreen - .syntax divided diff --git a/src/subtask2.c b/src/subtask2.c index 11ac02be..dac1767d 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -808,7 +808,38 @@ void sub_080A6F6C(u32 param_1) { gScreen.bg0.yOffset = 2; } -ASM_FUNC("asm/non_matching/subtask2/sub_080A6FB4.inc", void sub_080A6FB4(u32 a, u32 b)) +void sub_080A6FB4(u32 param_1, u32 param_2) { + extern u16 gUnk_08128FF0[]; + extern Font gUnk_08128FD8; + extern Font gUnk_08128FC0; + u32 uVar1; + Font* font; + + uVar1 = 0; + switch (param_2) { + case 0: + if ((gSave.windcrests & (1 << param_1)) == 0) + break; + case 2: + uVar1 = gUnk_08127F94[param_1]._6; + font = &gUnk_08128FC0; + break; + case 1: + uVar1 = gUnk_08128FF0[param_1]; + font = &gUnk_08128FD8; + break; + } + + if (gGenericMenu.unk2e.HWORD != uVar1) { + gGenericMenu.unk2e.HWORD = uVar1; + MemClear(&gUnk_020350F0, 0x100); + if ((uVar1 & 0xff) != 0) { + sub_0805F46C(uVar1, font); + } + gScreen.bg0.updated = 1; + } + gScreen.bg0.yOffset = 2; +} void sub_080A7040(u32 param_1) { extern Font gUnk_08129004;