From dd0c4cc89780794004d5384df8a728b4f24469d1 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 27 Mar 2022 02:43:50 +0300 Subject: [PATCH] Match sub_0801C2F0 --- asm/non_matching/ui/sub_0801C2F0.inc | 39 ---------------------------- src/ui.c | 29 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 41 deletions(-) delete mode 100644 asm/non_matching/ui/sub_0801C2F0.inc diff --git a/asm/non_matching/ui/sub_0801C2F0.inc b/asm/non_matching/ui/sub_0801C2F0.inc deleted file mode 100644 index 95c9e633..00000000 --- a/asm/non_matching/ui/sub_0801C2F0.inc +++ /dev/null @@ -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 diff --git a/src/ui.c b/src/ui.c index 3d30a66f..c28334b8 100644 --- a/src/ui.c +++ b/src/ui.c @@ -60,6 +60,8 @@ typedef struct { extern struct_020350E2 gUnk_020350E2; +extern u32 gUnk_085C4620[]; + typedef struct { u16 unk_0; // -> gOamCmd._4 u16 unk_2; // -> gOamCmd._6 @@ -80,7 +82,7 @@ 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); @@ -153,7 +155,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 = ®_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;