summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2022-11-06 10:17:10 +0000
committeroctorock <79596758+octorock@users.noreply.github.com>2022-11-06 10:17:10 +0000
commite4898c53d486bb4aa16dcbda74b310f18c39e02a (patch)
tree8be04e8ad4fe29d087545b35780f6efac84daf96
parent5209d6af3ae4697c36c1d2ab557b80dcb00b7653 (diff)
Match CreateUIElement
-rw-r--r--asm/non_matching/ui/CreateUIElement.inc41
-rw-r--r--src/ui.c22
2 files changed, 12 insertions, 51 deletions
diff --git a/asm/non_matching/ui/CreateUIElement.inc b/asm/non_matching/ui/CreateUIElement.inc
deleted file mode 100644
index 590a1e16..00000000
--- a/asm/non_matching/ui/CreateUIElement.inc
+++ /dev/null
@@ -1,41 +0,0 @@
- .syntax unified
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r6, r1, #0
- movs r3, #0
- ldr r7, _0801CAA8 @ =gUnk_0200AF34
- movs r0, #1
- mov ip, r0
- ldr r1, _0801CAAC @ =gUIElementDefinitions
- lsls r0, r5, #4
- adds r4, r0, r1
-_0801CA80:
- lsls r0, r3, #5
- adds r1, r0, r7
- ldrb r2, [r1]
- movs r0, #1
- ands r0, r2
- cmp r0, #0
- bne _0801CAB0
- strb r5, [r1, #1]
- strb r6, [r1, #2]
- movs r0, #0xff
- strb r0, [r1, #0x10]
- mov r0, ip
- orrs r0, r2
- strb r0, [r1]
- ldrh r0, [r4, #4]
- strh r0, [r1, #0x1a]
- ldrb r0, [r4, #0xc]
- strb r0, [r1, #3]
- b _0801CAB6
- .align 2, 0
-_0801CAA8: .4byte gUnk_0200AF34
-_0801CAAC: .4byte gUIElementDefinitions
-_0801CAB0:
- adds r3, #1
- cmp r3, #0x17
- bls _0801CA80
-_0801CAB6:
- pop {r4, r5, r6, r7, pc}
- .syntax divided
diff --git a/src/ui.c b/src/ui.c
index 6388e564..f412560d 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -592,27 +592,29 @@ void DrawKeys(void) {
}
}
-NONMATCH("asm/non_matching/ui/CreateUIElement.inc", void CreateUIElement(u32 type, u32 type2)) {
- u8 bVar1;
+void CreateUIElement(u32 type, u32 type2) {
u32 index;
+ UIElement* new_var;
UIElement* element;
- UIElementDefinition* definition;
for (index = 0; index < MAX_UI_ELEMENTS; index++) {
- element = &gUnk_0200AF00.elements[index];
- if (element->used == 0) {
- definition = &gUIElementDefinitions[type];
- element->type = (u8)type;
+
+ element = gUnk_0200AF00.elements;
+ element += index;
+
+ if (!element->used) {
+ element->type = type;
element->type2 = type2;
element->frameIndex = 0xff;
element->used = 1;
- element->unk_1a = definition->unk_4;
- element->buttonElementId = definition->buttonElementId;
+ element->unk_1a = gUIElementDefinitions[type].unk_4;
+ // Permuter trickery. TODO find something more senseful?
+ index = type;
+ element->buttonElementId = gUIElementDefinitions[index].buttonElementId;
return;
}
}
}
-END_NONMATCH
void sub_0801CAB8(UIElement* element, Frame* frame) {
element->framePtr = frame;