Match 2 ui nonmatch functions

This commit is contained in:
Tal Hayon 2022-03-25 13:55:05 +03:00
parent a032220b1e
commit 091ec976e2
3 changed files with 12 additions and 162 deletions

View File

@ -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

View File

@ -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

View File

@ -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;