From 091ec976e2e8a2b68a1d4691a8bcd4683e314a1e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 25 Mar 2022 13:55:05 +0300 Subject: [PATCH] Match 2 ui nonmatch functions --- asm/non_matching/ui/TextUIElement.inc | 75 --------------------------- asm/non_matching/ui/sub_0801C25C.inc | 75 --------------------------- src/ui.c | 24 ++++----- 3 files changed, 12 insertions(+), 162 deletions(-) delete mode 100644 asm/non_matching/ui/TextUIElement.inc delete mode 100644 asm/non_matching/ui/sub_0801C25C.inc diff --git a/asm/non_matching/ui/TextUIElement.inc b/asm/non_matching/ui/TextUIElement.inc deleted file mode 100644 index 2521b2e2..00000000 --- a/asm/non_matching/ui/TextUIElement.inc +++ /dev/null @@ -1,75 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #2] - ldr r1, _0801CDC0 @ =gUnk_0200AF00 - cmp r0, #9 - bne _0801CDD4 - adds r0, r1, #0 - adds r0, #0x2f - ldrb r2, [r0] - cmp r2, #0 - bne _0801CDCE - ldr r0, _0801CDC4 @ =gArea - ldrb r0, [r0, #0x18] - cmp r0, #2 - beq _0801CDC8 - cmp r0, #3 - beq _0801CDCC - adds r0, r1, #0 - adds r0, #0x2c - ldrb r2, [r0] - b _0801CDCE - .align 2, 0 -_0801CDC0: .4byte gUnk_0200AF00 -_0801CDC4: .4byte gArea -_0801CDC8: - movs r2, #0xb - b _0801CDCE -_0801CDCC: - movs r2, #0xa -_0801CDCE: - adds r0, r1, #0 - adds r0, #0x32 - strb r2, [r0] -_0801CDD4: - adds r0, r1, #0 - adds r0, #0x30 - ldrb r1, [r4, #3] - adds r0, r0, r1 - ldrb r2, [r0] - ldrb r1, [r4] - movs r0, #3 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - cmp r2, #0 - beq _0801CE1E - ldr r1, _0801CE20 @ =gUnk_080C9044 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - adds r0, r0, r1 - ldrb r0, [r0] - adds r2, r2, r0 - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_0801CAFC - ldrb r0, [r4, #3] - bl FindUIElement - adds r1, r0, #0 - cmp r1, #0 - beq _0801CE1E - ldrh r0, [r1, #0xc] - strh r0, [r4, #0xc] - ldrh r0, [r1, #0xe] - strh r0, [r4, #0xe] - ldrb r0, [r4] - movs r1, #2 - orrs r0, r1 - strb r0, [r4] -_0801CE1E: - pop {r4, pc} - .align 2, 0 -_0801CE20: .4byte gUnk_080C9044 - .syntax divided diff --git a/asm/non_matching/ui/sub_0801C25C.inc b/asm/non_matching/ui/sub_0801C25C.inc deleted file mode 100644 index 3dc31d7c..00000000 --- a/asm/non_matching/ui/sub_0801C25C.inc +++ /dev/null @@ -1,75 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - movs r4, #0 - ldr r5, _0801C2E4 @ =gUnk_0200AF34 - adds r6, r5, #0 - subs r6, #0x34 - movs r7, #0xd - rsbs r7, r7, #0 - ldr r3, _0801C2E8 @ =0x040000D4 -_0801C26C: - lsls r0, r4, #5 - adds r2, r0, r5 - ldrb r1, [r2] - movs r0, #3 - ands r0, r1 - cmp r0, #3 - bne _0801C2A8 - lsls r0, r1, #0x1c - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _0801C2A8 - adds r0, r7, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] - ldr r0, [r2, #0x1c] - str r0, [r3] - ldrh r0, [r2, #0x1a] - lsls r0, r0, #5 - ldr r1, _0801C2EC @ =0x06010000 - adds r0, r0, r1 - str r0, [r3, #4] - ldrb r0, [r2, #0x19] - lsls r0, r0, #3 - movs r1, #0x84 - lsls r1, r1, #0x18 - orrs r0, r1 - str r0, [r3, #8] - ldr r0, [r3, #8] -_0801C2A8: - adds r4, #1 - cmp r4, #0x17 - ble _0801C26C - adds r2, r6, #0 - ldrb r3, [r2, #0x13] - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #0 - bge _0801C2C8 - movs r1, #0x7f - ands r1, r3 - strb r1, [r2, #0x13] - movs r0, #0x8d - lsls r0, r0, #1 - bl sub_0801C2F0 -_0801C2C8: - ldrb r2, [r6, #0x14] - movs r0, #0x14 - ldrsb r0, [r6, r0] - cmp r0, #0 - bge _0801C2E0 - movs r1, #0x7f - ands r1, r2 - strb r1, [r6, #0x14] - movs r0, #0x93 - lsls r0, r0, #1 - bl sub_0801C2F0 -_0801C2E0: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801C2E4: .4byte gUnk_0200AF34 -_0801C2E8: .4byte 0x040000D4 -_0801C2EC: .4byte 0x06010000 - .syntax divided diff --git a/src/ui.c b/src/ui.c index 8927154d..eb4407d8 100644 --- a/src/ui.c +++ b/src/ui.c @@ -124,7 +124,7 @@ void DrawUIElements(void) { } } -NONMATCH("asm/non_matching/ui/sub_0801C25C.inc", void sub_0801C25C(void)) { +void sub_0801C25C(void) { u32 uVar1; s32 index; u8 tmp; @@ -133,8 +133,8 @@ NONMATCH("asm/non_matching/ui/sub_0801C25C.inc", void sub_0801C25C(void)) { for (index = 0; index < MAX_UI_ELEMENTS; index++) { element = &gUnk_0200AF00.elements[index]; if (((element->used) == 1) && ((element->unk_0_1) == 1)) { - // TODO wrong bitfield access here - if (element->unk_0_2 == 1) { + u8 temp = element->unk_0_2; + if (temp == 1) { element->unk_0_2 = 2; DmaSet(3, element->firstTile, element->unk_1a * 0x20 + 0x6010000, element->numTiles << 3 | 0x84000000); } @@ -151,7 +151,6 @@ NONMATCH("asm/non_matching/ui/sub_0801C25C.inc", void sub_0801C25C(void)) { sub_0801C2F0(0x126, tmp); } } -END_NONMATCH ASM_FUNC("asm/non_matching/ui/sub_0801C2F0.inc", void sub_0801C2F0(u32 a, u32 b)) @@ -354,7 +353,7 @@ u32 sub_0801CC80(UIElement* element) { ASM_FUNC("asm/non_matching/ui/ItemUIElement.inc", void ItemUIElement()) -NONMATCH("asm/non_matching/ui/TextUIElement.inc", void TextUIElement(UIElement* element)) { +void TextUIElement(UIElement* element) { UIElement* buttonUIElement; u32 tmp; extern struct_0200AF00* ptr; @@ -362,25 +361,27 @@ NONMATCH("asm/non_matching/ui/TextUIElement.inc", void TextUIElement(UIElement* UIElement* ptr2; if (element->type2 == 9) { - if (gUnk_0200AF00.unk_2f == 0) { + tmp = gUnk_0200AF00.unk_2f; + if (tmp == 0) { switch (gArea.field_0x18) { case 2: - tmp1 = 0xb; + tmp = 0xb; break; case 3: - tmp1 = 0xa; + tmp = 0xa; break; default: - tmp1 = gUnk_0200AF00.unk_2c; + tmp = gUnk_0200AF00.unk_2c; break; } - gUnk_0200AF00.unk_32 = tmp1; } + gUnk_0200AF00.unk_32 = tmp; } tmp = gUnk_0200AF00.unk_30[element->buttonElementId]; element->unk_0_1 = 0; if (tmp != 0) { - sub_0801CAFC(element, tmp + gUnk_080C9044[((SaveHeader*)0x2000000)->language]); + tmp += gUnk_080C9044[((SaveHeader*)0x2000000)->language]; + sub_0801CAFC(element, tmp); buttonUIElement = FindUIElement(element->buttonElementId); if (buttonUIElement != NULL) { element->x = buttonUIElement->x; @@ -389,7 +390,6 @@ NONMATCH("asm/non_matching/ui/TextUIElement.inc", void TextUIElement(UIElement* } } } -END_NONMATCH UIElement* FindUIElement(u32 type) { UIElement* element;