Merge pull request #468 from hatal175/ui2

Match some ui functions
This commit is contained in:
notyourav
2022-03-27 21:25:22 -07:00
committed by GitHub
9 changed files with 270 additions and 491 deletions
-101
View File
@@ -1,101 +0,0 @@
.syntax unified
push {r4, r5, lr}
ldr r4, _0801C9E0 @ =gUnk_0200AF00
ldrb r1, [r4, #1]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0801C9B2
bl AreaHasKeys
cmp r0, #0
bne _0801C9EC
_0801C9B2:
ldrb r0, [r4, #0x10]
cmp r0, #0
beq _0801CA50
movs r0, #0
strb r0, [r4, #0x10]
ldr r2, _0801C9E4 @ =gUnk_020350E2
strh r0, [r2]
strh r0, [r2, #2]
strh r0, [r2, #4]
strh r0, [r2, #6]
adds r1, r2, #0
adds r1, #0x40
strh r0, [r1]
adds r1, #2
strh r0, [r1]
adds r1, #2
strh r0, [r1]
adds r1, #2
strh r0, [r1]
ldr r1, _0801C9E8 @ =gScreen
movs r0, #1
strh r0, [r1, #0xe]
b _0801CA50
.align 2, 0
_0801C9E0: .4byte gUnk_0200AF00
_0801C9E4: .4byte gUnk_020350E2
_0801C9E8: .4byte gScreen
_0801C9EC:
ldrb r0, [r4, #0x10]
cmp r0, #0
bne _0801CA1E
ldr r2, _0801CA54 @ =gUnk_020350E2
adds r1, r2, #0
adds r1, #0x40
ldr r3, _0801CA58 @ =0x0000F01C
strh r3, [r2]
adds r0, r3, #1
strh r0, [r2, #2]
adds r0, r3, #2
strh r0, [r1]
adds r0, r3, #3
strh r0, [r1, #2]
adds r3, #0x5a
strh r3, [r2, #4]
adds r0, r3, #1
strh r0, [r1, #4]
adds r0, r3, #2
strh r0, [r2, #6]
adds r0, r3, #3
strh r0, [r1, #6]
ldr r1, _0801CA5C @ =gScreen
movs r0, #1
strh r0, [r1, #0xe]
_0801CA1E:
ldr r0, _0801CA60 @ =gSave
ldr r3, _0801CA64 @ =gArea
ldrb r1, [r3, #3]
ldr r5, _0801CA68 @ =0x0000045C
adds r2, r0, r5
adds r1, r1, r2
ldrb r0, [r4, #0x12]
ldrb r1, [r1]
cmp r0, r1
bne _0801CA38
ldrb r0, [r4, #0x10]
cmp r0, #0
bne _0801CA50
_0801CA38:
movs r0, #2
strb r0, [r4, #0x10]
ldrb r0, [r3, #3]
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r4, #0x12]
ldrb r1, [r4, #0x12]
movs r0, #0x76
movs r2, #0
movs r3, #2
bl sub_0801C5E0
_0801CA50:
pop {r4, r5, pc}
.align 2, 0
_0801CA54: .4byte gUnk_020350E2
_0801CA58: .4byte 0x0000F01C
_0801CA5C: .4byte gScreen
_0801CA60: .4byte gSave
_0801CA64: .4byte gArea
_0801CA68: .4byte 0x0000045C
.syntax divided
-152
View File
@@ -1,152 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r2, _0801C4F0 @ =gUnk_0200AF00
ldrb r1, [r2, #1]
movs r0, #0x40
ands r0, r1
adds r6, r2, #0
cmp r0, #0
beq _0801C4FC
ldrb r0, [r6, #0xa]
cmp r0, #0
bne _0801C4C8
b _0801C5D0
_0801C4C8:
movs r0, #0
strb r0, [r6, #0xa]
ldr r3, _0801C4F4 @ =gUnk_02035160
strh r0, [r3]
strh r0, [r3, #2]
strh r0, [r3, #4]
strh r0, [r3, #6]
strh r0, [r3, #8]
adds r4, r3, #0
adds r4, #0x40
strh r0, [r4]
strh r0, [r4, #2]
strh r0, [r4, #4]
strh r0, [r4, #6]
strh r0, [r4, #8]
ldr r1, _0801C4F8 @ =gScreen
movs r0, #1
strh r0, [r1, #0xe]
b _0801C5D0
.align 2, 0
_0801C4F0: .4byte gUnk_0200AF00
_0801C4F4: .4byte gUnk_02035160
_0801C4F8: .4byte gScreen
_0801C4FC:
ldrb r0, [r6, #0xa]
cmp r0, #0
bne _0801C560
movs r0, #2
strb r0, [r6, #0xa]
ldr r3, _0801C54C @ =gUnk_02035160
adds r4, r3, #0
adds r4, #0x40
ldr r1, _0801C550 @ =gWalletSizes
ldr r2, _0801C554 @ =gSave
adds r0, r2, #0
adds r0, #0xa8
ldrb r0, [r0]
lsls r0, r0, #2
adds r0, r0, r1
ldrh r1, [r0, #2]
strh r1, [r3]
adds r0, r1, #1
strh r0, [r3, #2]
adds r0, r1, #2
strh r0, [r4]
adds r0, r1, #3
strh r0, [r4, #2]
ldr r1, _0801C558 @ =0x0000F070
strh r1, [r3, #4]
adds r0, r1, #1
strh r0, [r4, #4]
adds r0, r1, #2
strh r0, [r3, #6]
adds r0, r1, #3
strh r0, [r4, #6]
adds r0, r1, #4
strh r0, [r3, #8]
adds r0, r1, #5
strh r0, [r4, #8]
ldr r1, _0801C55C @ =gScreen
movs r0, #1
strh r0, [r1, #0xe]
movs r4, #1
b _0801C564
.align 2, 0
_0801C54C: .4byte gUnk_02035160
_0801C550: .4byte gWalletSizes
_0801C554: .4byte gSave
_0801C558: .4byte 0x0000F070
_0801C55C: .4byte gScreen
_0801C560:
movs r4, #0
ldr r2, _0801C580 @ =gSave
_0801C564:
adds r5, r6, #0
adds r0, r2, #0
adds r0, #0xc0
ldrh r1, [r5, #0xe]
adds r3, r1, #0
ldrh r0, [r0]
cmp r3, r0
beq _0801C58A
cmp r3, r0
bhs _0801C584
adds r0, r1, #1
strh r0, [r5, #0xe]
b _0801C588
.align 2, 0
_0801C580: .4byte gSave
_0801C584:
subs r0, r1, #1
strh r0, [r6, #0xe]
_0801C588:
movs r4, #2
_0801C58A:
cmp r4, #1
beq _0801C5A4
cmp r4, #2
bne _0801C5CC
ldr r0, _0801C5D4 @ =gUnk_0200AF00
ldrb r0, [r0, #0xc]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0801C5A4
movs r0, #0x6f
bl SoundReq
_0801C5A4:
ldr r4, _0801C5D4 @ =gUnk_0200AF00
ldrh r3, [r4, #0xe]
movs r2, #0
ldr r1, _0801C5D8 @ =gWalletSizes
ldr r0, _0801C5DC @ =gSave
adds r0, #0xa8
ldrb r0, [r0]
lsls r0, r0, #2
adds r0, r0, r1
ldrh r0, [r0]
cmp r0, r3
bhi _0801C5BE
movs r2, #1
_0801C5BE:
movs r0, #0x70
adds r1, r3, #0
movs r3, #3
bl sub_0801C5E0
ldrb r0, [r4, #0xc]
adds r4, r0, #1
_0801C5CC:
ldr r0, _0801C5D4 @ =gUnk_0200AF00
strb r4, [r0, #0xc]
_0801C5D0:
pop {r4, r5, r6, pc}
.align 2, 0
_0801C5D4: .4byte gUnk_0200AF00
_0801C5D8: .4byte gWalletSizes
_0801C5DC: .4byte gSave
.syntax divided
-117
View File
@@ -1,117 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r1, [r4]
movs r0, #3
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
adds r0, r4, #0
bl sub_0801CC80
adds r1, r0, #0
cmp r1, #0
beq _0801CD90
ldrb r0, [r4, #8]
cmp r0, r1
beq _0801CCE0
strb r1, [r4, #8]
ldr r0, _0801CD1C @ =gSpriteAnimations_322
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl sub_0801CAB8
_0801CCE0:
ldrb r0, [r4, #1]
movs r1, #3
eors r0, r1
rsbs r1, r0, #0
orrs r1, r0
lsrs r6, r1, #0x1f
ldr r3, _0801CD20 @ =gUnk_0200AF13
cmp r6, #0
beq _0801CCF4
adds r3, #1
_0801CCF4:
ldrb r0, [r4, #8]
cmp r0, #7
blt _0801CD60
cmp r0, #8
ble _0801CD28
cmp r0, #0xa
bgt _0801CD60
ldr r1, _0801CD24 @ =gSave
adds r0, r1, #0
adds r0, #0xad
ldrb r2, [r0]
ldrb r0, [r3]
adds r5, r1, #0
cmp r0, r2
beq _0801CD4C
adds r0, r2, #0
adds r0, #0x80
strb r0, [r3]
b _0801CD4C
.align 2, 0
_0801CD1C: .4byte gSpriteAnimations_322
_0801CD20: .4byte gUnk_0200AF13
_0801CD24: .4byte gSave
_0801CD28:
ldr r5, _0801CD44 @ =gSave
adds r0, r5, #0
adds r0, #0xac
ldrb r2, [r0]
ldrb r0, [r3]
cmp r0, r2
beq _0801CD3C
adds r0, r2, #0
adds r0, #0x80
strb r0, [r3]
_0801CD3C:
ldr r1, _0801CD48 @ =gBombBagSizes
adds r0, r5, #0
adds r0, #0xae
b _0801CD52
.align 2, 0
_0801CD44: .4byte gSave
_0801CD48: .4byte gBombBagSizes
_0801CD4C:
ldr r1, _0801CD5C @ =gQuiverSizes
adds r0, r5, #0
adds r0, #0xaf
_0801CD52:
ldrb r0, [r0]
adds r0, r0, r1
ldrb r0, [r0]
b _0801CD64
.align 2, 0
_0801CD5C: .4byte gQuiverSizes
_0801CD60:
movs r0, #1
movs r2, #0
_0801CD64:
movs r1, #3
cmp r0, r2
bhi _0801CD6C
movs r1, #4
_0801CD6C:
strb r1, [r4, #0x18]
adds r0, r6, #0
bl FindUIElement
adds r1, r0, #0
cmp r1, #0
beq _0801CD90
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]
adds r0, r4, #0
bl sub_0801CAD0
_0801CD90:
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided
-39
View File
@@ -1,39 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
adds r0, r1, #0
lsls r5, r4, #5
ldr r1, _0801C330 @ =0x06010000
adds r4, r5, r1
movs r1, #0xa
bl Div
cmp r0, #9
bls _0801C308
movs r0, #9
_0801C308:
ldr r2, _0801C334 @ =0x040000D4
lsls r0, r0, #5
ldr r3, _0801C338 @ =gUnk_085C4620
adds r0, r0, r3
str r0, [r2]
str r4, [r2, #4]
ldr r4, _0801C33C @ =0x84000008
str r4, [r2, #8]
ldr r0, [r2, #8]
adds r1, #0xa
lsls r1, r1, #5
adds r1, r1, r3
str r1, [r2]
ldr r1, _0801C340 @ =0x06010020
adds r0, r5, r1
str r0, [r2, #4]
str r4, [r2, #8]
ldr r0, [r2, #8]
pop {r4, r5, pc}
.align 2, 0
_0801C330: .4byte 0x06010000
_0801C334: .4byte 0x040000D4
_0801C338: .4byte gUnk_085C4620
_0801C33C: .4byte 0x84000008
_0801C340: .4byte 0x06010020
.syntax divided
-66
View File
@@ -1,66 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r7, _0801C650 @ =gUnk_085C4B20
cmp r2, #0
bne _0801C5F0
ldr r0, _0801C654 @ =0xFFFFFD80
adds r7, r7, r0
_0801C5F0:
ldr r0, _0801C658 @ =0x000003FF
ands r0, r4
lsls r6, r0, #5
ldr r0, _0801C65C @ =0x0600C000
adds r4, r6, r0
cmp r3, #2
beq _0801C620
cmp r3, #3
bne _0801C63C
adds r0, r5, #0
movs r1, #0x64
bl Div
adds r5, r1, #0
ldr r1, _0801C660 @ =0x040000D4
lsls r0, r0, #6
adds r0, r7, r0
str r0, [r1]
str r4, [r1, #4]
ldr r0, _0801C664 @ =0x84000010
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _0801C668 @ =0x0600C040
adds r4, r6, r0
_0801C620:
adds r0, r5, #0
movs r1, #0xa
bl Div
adds r5, r1, #0
ldr r1, _0801C660 @ =0x040000D4
lsls r0, r0, #6
adds r0, r7, r0
str r0, [r1]
str r4, [r1, #4]
ldr r0, _0801C664 @ =0x84000010
str r0, [r1, #8]
ldr r0, [r1, #8]
adds r4, #0x40
_0801C63C:
ldr r1, _0801C660 @ =0x040000D4
lsls r0, r5, #6
adds r0, r7, r0
str r0, [r1]
str r4, [r1, #4]
ldr r0, _0801C664 @ =0x84000010
str r0, [r1, #8]
ldr r0, [r1, #8]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801C650: .4byte gUnk_085C4B20
_0801C654: .4byte 0xFFFFFD80
_0801C658: .4byte 0x000003FF
_0801C65C: .4byte 0x0600C000
_0801C660: .4byte 0x040000D4
_0801C664: .4byte 0x84000010
_0801C668: .4byte 0x0600C040
.syntax divided
+2 -2
View File
@@ -13367,13 +13367,13 @@
"type": "unknown"
},
{
"path": "gfx/gGfx_89_5.4bpp",
"path": "gfx/RupeeKeyDigitsYellow.4bpp",
"start": 6047904,
"size": 640,
"type": "gfx"
},
{
"path": "assets/gUnk_085C4B20.bin",
"path": "assets/RupeeKeyDigits.bin",
"start": 6048544,
"size": 640,
"type": "unknown"
+4 -4
View File
@@ -4453,11 +4453,11 @@ gGfx_88_3::
.incbin "gfx/gGfx_88_3.4bpp"
gUnk_085C4620::
.incbin "assets/gUnk_085C4620.bin"
gGfx_89_5::
.incbin "gfx/gGfx_89_5.4bpp"
RupeeKeyDigitsYellow::
.incbin "gfx/RupeeKeyDigitsYellow.4bpp"
@ gfx_unknown_18
gUnk_085C4B20::
.incbin "assets/gUnk_085C4B20.bin"
RupeeKeyDigits::
.incbin "assets/RupeeKeyDigits.bin"
gUnk_data0_085C4DA0::
.incbin "assets/gUnk_data0_085C4DA0.bin"
gUnk_data1_085C4E60::
+1 -1
View File
@@ -436,7 +436,7 @@ gGfxGroup_89::
gfx_raw src=offset_gGfx_89_2, unknown=0x7, dest=0x6008000, size=0xe00
gfx_raw src=offset_gGfx_89_3, unknown=0x7, dest=0x6010000, size=0x2000
gfx_raw src=offset_gGfx_89_4, unknown=0x7, dest=0x6013000, size=0x640
gfx_raw src=offset_gGfx_89_5, unknown=0x7, dest=0x6013c00, size=0x280
gfx_raw src=offset_RupeeKeyDigitsYellow, unknown=0x7, dest=0x6013c00, size=0x280
gfx_raw src=offset_gGfx_89_6, unknown=0x7, dest=0x6014000, size=0x8c0, terminator=1
gGfxGroup_90::
+263 -9
View File
@@ -22,7 +22,7 @@ typedef struct {
typedef struct {
substruct_160 unk_0;
u8 unk_9[54];
u8 unk_9[50];
substruct_160 unk_40;
} struct_02035160;
extern struct_02035160 gUnk_02035160;
@@ -60,6 +60,9 @@ typedef struct {
extern struct_020350E2 gUnk_020350E2;
extern u32 gUnk_085C4620[];
extern Frame* gSpriteAnimations_322[];
typedef struct {
u16 unk_0; // -> gOamCmd._4
u16 unk_2; // -> gOamCmd._6
@@ -78,14 +81,15 @@ extern const u8 gUnk_080C9044[];
extern void (*const EzloNagUIElement_Actions[])(UIElement*);
extern u16 gUnk_080C9058[];
extern Frame gUnk_080C9094[];
extern u8 RupeeKeyDigits[];
void sub_0801C2F0(u32, u32);
u32 sub_0801C2F0(u32, u32);
void DrawHearts(void);
void DrawChargeBar(void);
void DrawRupees(void);
void DrawKeys(void);
void CreateUIElement(u32, u32);
void sub_0801C5E0(u32, u32, u32, u32);
u32 DrawDigits(u32, u32, u32, u32);
void sub_0801CAFC(UIElement*, u32);
void sub_0801CB20(UIElement*, UIElementDefinition*);
UIElement* FindUIElement(u32);
@@ -152,7 +156,30 @@ void sub_0801C25C(void) {
}
}
ASM_FUNC("asm/non_matching/ui/sub_0801C2F0.inc", void sub_0801C2F0(u32 a, u32 b))
u32 sub_0801C2F0(u32 param_1, u32 param_2) {
u32 uVar1;
register u32 rem asm("r1");
vu32* ptr;
param_1 = param_1 * 0x20 + 0x6010000;
uVar1 = Div(param_2, 10);
if (uVar1 > 9) {
uVar1 = 9;
}
ptr = &REG_DMA3SAD;
ptr[0] = (u32)(gUnk_085C4620 + uVar1 * 8);
// DMA3DAD
ptr[1] = param_1;
// DMA3CNT
ptr[2] = 0x84000008;
ptr[2];
ptr[0] = (u32)(gUnk_085C4620 + (rem + 10) * 8);
// DMA3DAD
ptr[1] = param_1 + 0x20;
// DMA3CNT
ptr[2] = 0x84000008;
return ptr[2];
}
void DrawUI(void) {
gUnk_0200AF00.unk_0 &= ~gUnk_0200AF00.unk_1;
@@ -223,11 +250,129 @@ void RecoverUI(u32 bottomPt, u32 topPt) {
gUnk_0200AF00.unk_a = 0;
}
ASM_FUNC("asm/non_matching/ui/DrawRupees.inc", void DrawRupees(void))
void DrawRupees(void) {
u32 cVar1;
u32 temp;
u32 temp2;
substruct_160* ptr;
substruct_160* ptr2;
const u16* ptr3;
struct_02035160* ptr4;
if ((gUnk_0200AF00.unk_1 & 0x40) != 0) {
if (gUnk_0200AF00.unk_a != 0) {
gUnk_0200AF00.unk_a = 0;
ptr4 = &gUnk_02035160;
ptr = &ptr4->unk_0;
ptr->unk_0 = 0;
ptr->unk_2 = 0;
ptr->unk_4 = 0;
ptr->unk_6 = 0;
ptr->unk_8 = 0;
ptr2 = &ptr4->unk_40;
ptr2->unk_0 = 0;
ptr2->unk_2 = 0;
ptr2->unk_4 = 0;
ptr2->unk_6 = 0;
ptr2->unk_8 = 0;
gScreen.bg0.updated = 1;
}
} else {
if (gUnk_0200AF00.unk_a == 0) {
gUnk_0200AF00.unk_a = 2;
ptr4 = &gUnk_02035160;
ptr2 = &ptr4->unk_40;
ptr3 = gWalletSizes;
ptr4->unk_0.unk_0 = temp2 = *(ptr3 + (u32)gSave.stats.walletType * 2 + 1);
ptr4->unk_0.unk_2 = temp2 + 1;
ptr2->unk_0 = temp2 + 2;
ptr2->unk_2 = temp2 + 3;
temp2 = 0xf070;
ptr4->unk_0.unk_4 = temp2;
ptr2->unk_4 = temp2 + 1;
ptr4->unk_0.unk_6 = temp2 + 2;
ptr2->unk_6 = temp2 + 3;
ptr4->unk_0.unk_8 = temp2 + 4;
ptr2->unk_8 = temp2 + 5;
gScreen.bg0.updated = 1;
cVar1 = 1;
} else {
cVar1 = 0;
}
if (gUnk_0200AF00.rupees != gSave.stats.rupees) {
if (gUnk_0200AF00.rupees < gSave.stats.rupees) {
gUnk_0200AF00.rupees++;
} else {
gUnk_0200AF00.rupees--;
}
cVar1 = 2;
}
switch (cVar1) {
case 2:
temp = gUnk_0200AF00.unk_c;
temp &= 3;
if ((temp) == 0) {
SoundReq(SFX_RUPEE_GET);
}
case 1:
DrawDigits(0x70, gUnk_0200AF00.rupees,
gWalletSizes[(u32)gSave.stats.walletType * 2] <= gUnk_0200AF00.rupees, 3);
cVar1 = gUnk_0200AF00.unk_c + 1;
default:
gUnk_0200AF00.unk_c = cVar1;
break;
}
}
}
// Draw icon with text for rupees or keys
ASM_FUNC("asm/non_matching/ui/sub_0801C5E0.inc",
void sub_0801C5E0(u32 iconVramIndex, u32 count, bool32 isTextYellow, u32 d))
u32 DrawDigits(u32 iconVramIndex, u32 count, u32 isTextYellow, u32 digits) {
int iVar2;
int iVar3;
u8* puVar4;
u32 digit;
vu32* ptr;
vu32* ptr2;
register u32 r1 asm("r1");
puVar4 = RupeeKeyDigits;
if (isTextYellow == 0) {
puVar4 -= 0x280;
}
iVar3 = (iconVramIndex & 0x3ff) * 0x20;
iVar2 = iVar3 + 0x600c000;
switch (digits) {
case 3:
digit = Div(count, 100);
count = r1;
ptr = &REG_DMA3SAD;
ptr[0] = (int)puVar4 + (int)(digit)*0x40;
// DMA3DAD
ptr[1] = iVar2;
// DMA3CNT
ptr[2] = 0x84000010;
ptr[2];
iVar2 = iVar3 + 0x600c040;
case 2:
digit = Div(count, 10);
count = r1;
ptr = &REG_DMA3SAD;
ptr[0] = (int)puVar4 + (int)(digit)*0x40;
// DMA3DAD
ptr[1] = iVar2;
// DMA3CNT
ptr[2] = 0x84000010;
ptr[2];
iVar2 += 0x40;
}
ptr2 = &REG_DMA3SAD;
ptr2[0] = (int)puVar4 + count * 0x40;
ptr2[1] = iVar2;
ptr2[2] = 0x84000010;
return ptr2[2];
}
void sub_0801C66C(void) {
struct_02034CF0* ptr;
@@ -279,7 +424,49 @@ void sub_0801C824(void) {
ASM_FUNC("asm/non_matching/ui/DrawChargeBar.inc", void DrawChargeBar())
ASM_FUNC("asm/non_matching/ui/DrawKeys.inc", void DrawKeys(void))
void DrawKeys(void) {
s32 iVar1;
substruct_0E2* ptr1;
substruct_0E2* ptr2;
u32 temp;
if (!(((gUnk_0200AF00.unk_1 & 0x80) == 0) && (AreaHasKeys()))) {
if (gUnk_0200AF00.unk_10 != 0) {
gUnk_0200AF00.unk_10 = 0;
ptr1 = &gUnk_020350E2.unk_0[0];
ptr1->unk_0 = 0;
ptr1->unk_2 = 0;
ptr1->unk_4 = 0;
ptr1->unk_6 = 0;
gUnk_020350E2.unk_0[1].unk_0 = 0;
gUnk_020350E2.unk_0[1].unk_2 = 0;
gUnk_020350E2.unk_0[1].unk_4 = 0;
gUnk_020350E2.unk_0[1].unk_6 = 0;
gScreen.bg0.updated = 1;
}
} else {
if (gUnk_0200AF00.unk_10 == 0) {
ptr1 = &gUnk_020350E2.unk_0[0];
ptr2 = &gUnk_020350E2.unk_0[1];
temp = 0xf01c;
ptr1->unk_0 = temp;
ptr1->unk_2 = temp + 1;
ptr2->unk_0 = temp + 2;
ptr2->unk_2 = temp + 3;
temp = 0xf076;
ptr1->unk_4 = temp;
ptr2->unk_4 = temp + 1;
ptr1->unk_6 = temp + 2;
ptr2->unk_6 = temp + 3;
gScreen.bg0.updated = 1;
}
if ((gUnk_0200AF00.unk_12 != gSave.unk45C[gArea.dungeon_idx]) || (gUnk_0200AF00.unk_10 == 0)) {
gUnk_0200AF00.unk_10 = 2;
gUnk_0200AF00.unk_12 = gSave.unk45C[gArea.dungeon_idx];
DrawDigits(0x76, gUnk_0200AF00.unk_12, 0, 2);
}
}
}
ASM_FUNC("asm/non_matching/ui/CreateUIElement.inc", void CreateUIElement(u32 type, u32 type2))
@@ -351,7 +538,74 @@ u32 sub_0801CC80(UIElement* element) {
return itemId;
}
ASM_FUNC("asm/non_matching/ui/ItemUIElement.inc", void ItemUIElement())
void ItemUIElement(UIElement* element) {
u32 itemMaxNumber;
u32 itemId;
u8* puVar3;
UIElement* element2;
u32 uVar5;
u32 playerItemCount;
u8* psVar8;
u32 uiElementType;
element->unk_0_1 = 0;
itemId = sub_0801CC80(element);
if (itemId == 0) {
return;
}
if (element->unk_8 != itemId) {
element->unk_8 = itemId;
sub_0801CAB8(element, gSpriteAnimations_322[itemId]);
}
if (element->type ^ 3) {
uiElementType = 1;
} else {
uiElementType = 0;
}
psVar8 = &gUnk_0200AF00.unk_13;
if (uiElementType != 0) {
psVar8 = &gUnk_0200AF00.unk_14;
}
switch ((s32)element->unk_8) {
case 7:
case 8:
playerItemCount = gSave.stats.bombCount;
if (*psVar8 != playerItemCount) {
*psVar8 = playerItemCount + 0x80;
}
itemMaxNumber = gBombBagSizes[gSave.stats.bombBagType];
break;
case 9:
case 10:
playerItemCount = gSave.stats.arrowCount;
if (*psVar8 != playerItemCount) {
*psVar8 = playerItemCount + 0x80;
}
itemMaxNumber = gQuiverSizes[gSave.stats.quiverType];
break;
default:
itemMaxNumber = 1;
playerItemCount = 0;
break;
}
uVar5 = 3;
if (itemMaxNumber <= playerItemCount) {
uVar5 = 4;
}
element->unk_18 = uVar5;
element2 = FindUIElement(uiElementType);
if (element2 != 0) {
element->x = element2->x;
element->y = element2->y;
element->unk_0_1 = 1;
sub_0801CAD0(element);
}
}
void TextUIElement(UIElement* element) {
UIElement* buttonUIElement;