Match sub_0801C2F0

This commit is contained in:
Tal Hayon 2022-03-27 02:43:50 +03:00
parent 9241c93b0d
commit dd0c4cc897
2 changed files with 27 additions and 41 deletions

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

View File

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