mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-28 11:44:56 -05:00
674 lines
12 KiB
ArmAsm
674 lines
12 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.section .bss
|
|
|
|
.global UNK_021D5534
|
|
UNK_021D5534: ; 0x021D5534
|
|
.space 0x4
|
|
|
|
.global UNK_021D5538
|
|
UNK_021D5538: ; 0x021D5538
|
|
.space 0x24
|
|
|
|
.text
|
|
|
|
arm_func_start RtcWaitBusy
|
|
RtcWaitBusy: ; 0x020D5914
|
|
ldr ip, _020D5928 ; =UNK_021D5538
|
|
_020D5918:
|
|
ldr r0, [r12, #0x0]
|
|
cmp r0, #0x1
|
|
beq _020D5918
|
|
bx lr
|
|
.balign 4
|
|
_020D5928: .word UNK_021D5538
|
|
|
|
arm_func_start RtcGetResultCallback
|
|
RtcGetResultCallback: ; 0x020D592C
|
|
ldr r1, _020D5938 ; =UNK_021D5538
|
|
str r0, [r1, #0x20]
|
|
bx lr
|
|
.balign 4
|
|
_020D5938: .word UNK_021D5538
|
|
|
|
arm_func_start RtcBCD2HEX
|
|
RtcBCD2HEX: ; 0x020D593C
|
|
stmdb sp!, {r4-r5,lr}
|
|
sub sp, sp, #0x4
|
|
mov r5, #0x0
|
|
mov r3, r5
|
|
mov r2, r5
|
|
_020D5950:
|
|
mov r1, r0, lsr r2
|
|
and r1, r1, #0xf
|
|
cmp r1, #0xa
|
|
addcs sp, sp, #0x4
|
|
movcs r0, #0x0
|
|
ldmcsia sp!, {r4-r5,lr}
|
|
bxcs lr
|
|
add r3, r3, #0x1
|
|
cmp r3, #0x8
|
|
add r2, r2, #0x4
|
|
blt _020D5950
|
|
mov r12, #0x0
|
|
mov lr, r12
|
|
mov r4, #0x1
|
|
mov r2, #0xa
|
|
_020D598C:
|
|
mov r1, r0, lsr lr
|
|
and r3, r1, #0xf
|
|
mul r1, r4, r2
|
|
mla r5, r4, r3, r5
|
|
add r12, r12, #0x1
|
|
mov r4, r1
|
|
cmp r12, #0x8
|
|
add lr, lr, #0x4
|
|
blt _020D598C
|
|
mov r0, r5
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r5,lr}
|
|
bx lr
|
|
|
|
arm_func_start RtcCommonCallback
|
|
RtcCommonCallback: ; 0x020D59C0
|
|
stmdb sp!, {r4-r5,lr}
|
|
sub sp, sp, #0x4
|
|
cmp r2, #0x0
|
|
beq _020D5A30
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
ldr r2, _020D5F30 ; =UNK_021D5538
|
|
ldr r1, [r0, #0x18]
|
|
ldr r4, [r2, #0x4]
|
|
cmp r1, #0x0
|
|
movne r1, #0x0
|
|
strne r1, [r0, #0x18]
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
ldr r1, [r0, #0x0]
|
|
cmp r1, #0x0
|
|
movne r1, #0x0
|
|
strne r1, [r0, #0x0]
|
|
cmp r4, #0x0
|
|
addeq sp, sp, #0x4
|
|
ldmeqia sp!, {r4-r5,lr}
|
|
bxeq lr
|
|
ldr r1, [r2, #0x10]
|
|
mov r3, #0x0
|
|
mov r0, #0x6
|
|
str r3, [r2, #0x4]
|
|
blx r4
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r5,lr}
|
|
bx lr
|
|
_020D5A30:
|
|
and r0, r1, #0x7f00
|
|
mov r0, r0, lsr #0x8
|
|
and r0, r0, #0xff
|
|
cmp r0, #0x30
|
|
and r2, r1, #0xff
|
|
bne _020D5A70
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
ldr r0, [r0, #0x1c]
|
|
cmp r0, #0x0
|
|
addeq sp, sp, #0x4
|
|
ldmeqia sp!, {r4-r5,lr}
|
|
bxeq lr
|
|
blx r0
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r5,lr}
|
|
bx lr
|
|
_020D5A70:
|
|
cmp r2, #0x0
|
|
bne _020D5E88
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
mov r5, #0x0
|
|
ldr r1, [r0, #0x14]
|
|
cmp r1, #0xf
|
|
addls pc, pc, r1, lsl #0x2
|
|
b _020D5E74
|
|
_020D5A90:
|
|
b _020D5AD0
|
|
_020D5A94:
|
|
b _020D5B24
|
|
_020D5A98:
|
|
b _020D5B74
|
|
_020D5A9C:
|
|
b _020D5ED0
|
|
_020D5AA0:
|
|
b _020D5ED0
|
|
_020D5AA4:
|
|
b _020D5ED0
|
|
_020D5AA8:
|
|
b _020D5C1C
|
|
_020D5AAC:
|
|
b _020D5C4C
|
|
_020D5AB0:
|
|
b _020D5C70
|
|
_020D5AB4:
|
|
b _020D5D14
|
|
_020D5AB8:
|
|
b _020D5DC8
|
|
_020D5ABC:
|
|
b _020D5ED0
|
|
_020D5AC0:
|
|
b _020D5ED0
|
|
_020D5AC4:
|
|
b _020D5ED0
|
|
_020D5AC8:
|
|
b _020D5ED0
|
|
_020D5ACC:
|
|
b _020D5ED0
|
|
_020D5AD0:
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
ldr r4, [r0, #0x8]
|
|
ldrb r0, [r1, #0x0]
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x13
|
|
mov r0, r0, lsr #0x1b
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0xa
|
|
mov r0, r0, lsr #0x1a
|
|
bl RtcBCD2HEX
|
|
str r0, [r4, #0x8]
|
|
mov r0, r4
|
|
bl RTC_GetDayOfWeek
|
|
str r0, [r4, #0xc]
|
|
b _020D5ED0
|
|
_020D5B24:
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
ldr r4, [r0, #0x8]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x1a
|
|
mov r0, r0, lsr #0x1a
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x11
|
|
mov r0, r0, lsr #0x19
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x9
|
|
mov r0, r0, lsr #0x19
|
|
bl RtcBCD2HEX
|
|
str r0, [r4, #0x8]
|
|
b _020D5ED0
|
|
_020D5B74:
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
ldr r4, [r0, #0x8]
|
|
ldr r0, [r1, #0x0]
|
|
and r0, r0, #0xff
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x13
|
|
mov r0, r0, lsr #0x1b
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F34 ; =0x027FFDE8
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0xa
|
|
mov r0, r0, lsr #0x1a
|
|
bl RtcBCD2HEX
|
|
str r0, [r4, #0x8]
|
|
mov r0, r4
|
|
bl RTC_GetDayOfWeek
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [r1, #0x0]
|
|
ldr r1, _020D5F30 ; =UNK_021D5538
|
|
mov r0, r0, lsl #0x1a
|
|
mov r0, r0, lsr #0x1a
|
|
ldr r4, [r1, #0xc]
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x11
|
|
mov r0, r0, lsr #0x19
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x9
|
|
mov r0, r0, lsr #0x19
|
|
bl RtcBCD2HEX
|
|
str r0, [r4, #0x8]
|
|
b _020D5ED0
|
|
_020D5C1C:
|
|
ldr r1, _020D5F3C ; =0x027FFDEA
|
|
ldr r2, [r0, #0x8]
|
|
ldrh r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x1c
|
|
mov r0, r0, lsr #0x1c
|
|
cmp r0, #0x4
|
|
bne _020D5C44
|
|
mov r0, #0x1
|
|
str r0, [r2, #0x0]
|
|
b _020D5ED0
|
|
_020D5C44:
|
|
str r5, [r2, #0x0]
|
|
b _020D5ED0
|
|
_020D5C4C:
|
|
ldr r1, _020D5F3C ; =0x027FFDEA
|
|
ldr r2, [r0, #0x8]
|
|
ldrh r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x19
|
|
movs r0, r0, lsr #0x1f
|
|
movne r0, #0x1
|
|
strne r0, [r2, #0x0]
|
|
streq r5, [r2, #0x0]
|
|
b _020D5ED0
|
|
_020D5C70:
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
ldr r4, [r0, #0x8]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x1d
|
|
mov r0, r0, lsr #0x1d
|
|
str r0, [r4, #0x0]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x12
|
|
mov r0, r0, lsr #0x1a
|
|
bl RtcBCD2HEX
|
|
ldr r1, _020D5F38 ; =0x027FFDEC
|
|
str r0, [r4, #0x4]
|
|
ldr r0, [r1, #0x0]
|
|
mov r0, r0, lsl #0x9
|
|
mov r0, r0, lsr #0x19
|
|
bl RtcBCD2HEX
|
|
str r0, [r4, #0x8]
|
|
mov r1, r5
|
|
ldr r0, _020D5F38 ; =0x027FFDEC
|
|
str r1, [r4, #0xc]
|
|
ldr r0, [r0, #0x0]
|
|
mov r0, r0, lsl #0x18
|
|
movs r0, r0, lsr #0x1f
|
|
ldrne r0, [r4, #0xc]
|
|
addne r0, r0, #0x1
|
|
strne r0, [r4, #0xc]
|
|
ldr r0, _020D5F38 ; =0x027FFDEC
|
|
ldr r0, [r0, #0x0]
|
|
mov r0, r0, lsl #0x10
|
|
movs r0, r0, lsr #0x1f
|
|
ldrne r0, [r4, #0xc]
|
|
addne r0, r0, #0x2
|
|
strne r0, [r4, #0xc]
|
|
ldr r0, _020D5F38 ; =0x027FFDEC
|
|
ldr r0, [r0, #0x0]
|
|
mov r0, r0, lsl #0x8
|
|
movs r0, r0, lsr #0x1f
|
|
ldrne r0, [r4, #0xc]
|
|
addne r0, r0, #0x4
|
|
strne r0, [r4, #0xc]
|
|
b _020D5ED0
|
|
_020D5D14:
|
|
ldr r3, [r0, #0x18]
|
|
cmp r3, #0x0
|
|
bne _020D5DC0
|
|
ldr r1, [r0, #0x8]
|
|
ldr r1, [r1, #0x0]
|
|
cmp r1, #0x1
|
|
bne _020D5D7C
|
|
ldr r2, _020D5F3C ; =0x027FFDEA
|
|
ldrh r1, [r2, #0x0]
|
|
mov r1, r1, lsl #0x1c
|
|
mov r1, r1, lsr #0x1c
|
|
cmp r1, #0x4
|
|
beq _020D5ED0
|
|
add r1, r3, #0x1
|
|
str r1, [r0, #0x18]
|
|
ldrh r0, [r2, #0x0]
|
|
bic r0, r0, #0xf
|
|
orr r0, r0, #0x4
|
|
strh r0, [r2, #0x0]
|
|
bl RTCi_WriteRawStatus2Async
|
|
_020D5D64: ; 0x020D5D64
|
|
cmp r0, #0x0
|
|
moveq r1, r5
|
|
ldreq r0, _020D5F30 ; =UNK_021D5538
|
|
moveq r5, #0x3
|
|
streq r1, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5D7C:
|
|
ldr r2, _020D5F3C ; =0x027FFDEA
|
|
ldrh r1, [r2, #0x0]
|
|
mov r1, r1, lsl #0x1c
|
|
movs r1, r1, lsr #0x1c
|
|
beq _020D5ED0
|
|
add r1, r3, #0x1
|
|
str r1, [r0, #0x18]
|
|
ldrh r0, [r2, #0x0]
|
|
bic r0, r0, #0xf
|
|
strh r0, [r2, #0x0]
|
|
bl RTCi_WriteRawStatus2Async
|
|
_020D5DA8: ; 0x020D5DA8
|
|
cmp r0, #0x0
|
|
moveq r1, r5
|
|
ldreq r0, _020D5F30 ; =UNK_021D5538
|
|
moveq r5, #0x3
|
|
streq r1, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5DC0:
|
|
str r5, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5DC8:
|
|
ldr r3, [r0, #0x18]
|
|
cmp r3, #0x0
|
|
bne _020D5E6C
|
|
ldr r1, [r0, #0x8]
|
|
ldr r1, [r1, #0x0]
|
|
cmp r1, #0x1
|
|
bne _020D5E28
|
|
ldr r2, _020D5F3C ; =0x027FFDEA
|
|
ldrh r1, [r2, #0x0]
|
|
mov r1, r1, lsl #0x19
|
|
movs r1, r1, lsr #0x1f
|
|
bne _020D5ED0
|
|
add r1, r3, #0x1
|
|
str r1, [r0, #0x18]
|
|
ldrh r0, [r2, #0x0]
|
|
orr r0, r0, #0x40
|
|
strh r0, [r2, #0x0]
|
|
bl RTCi_WriteRawStatus2Async
|
|
_020D5E10: ; 0x020D5E10
|
|
cmp r0, #0x0
|
|
moveq r1, r5
|
|
ldreq r0, _020D5F30 ; =UNK_021D5538
|
|
moveq r5, #0x3
|
|
streq r1, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5E28:
|
|
ldr r2, _020D5F3C ; =0x027FFDEA
|
|
ldrh r1, [r2, #0x0]
|
|
mov r1, r1, lsl #0x19
|
|
movs r1, r1, lsr #0x1f
|
|
beq _020D5ED0
|
|
add r1, r3, #0x1
|
|
str r1, [r0, #0x18]
|
|
ldrh r0, [r2, #0x0]
|
|
bic r0, r0, #0x40
|
|
strh r0, [r2, #0x0]
|
|
bl RTCi_WriteRawStatus2Async
|
|
_020D5E54: ; 0x020D5E54
|
|
cmp r0, #0x0
|
|
moveq r1, r5
|
|
ldreq r0, _020D5F30 ; =UNK_021D5538
|
|
moveq r5, #0x3
|
|
streq r1, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5E6C:
|
|
str r5, [r0, #0x18]
|
|
b _020D5ED0
|
|
_020D5E74:
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x18]
|
|
mov r5, #0x4
|
|
b _020D5ED0
|
|
_020D5E88:
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x18]
|
|
cmp r2, #0x4
|
|
addls pc, pc, r2, lsl #0x2
|
|
b _020D5ECC
|
|
_020D5EA0:
|
|
b _020D5ECC
|
|
_020D5EA4:
|
|
b _020D5EB4
|
|
_020D5EA8:
|
|
b _020D5EBC
|
|
_020D5EAC:
|
|
b _020D5EC4
|
|
_020D5EB0:
|
|
b _020D5ECC
|
|
_020D5EB4:
|
|
mov r5, #0x4
|
|
b _020D5ED0
|
|
_020D5EBC:
|
|
mov r5, #0x5
|
|
b _020D5ED0
|
|
_020D5EC4:
|
|
mov r5, #0x1
|
|
b _020D5ED0
|
|
_020D5ECC:
|
|
mov r5, #0x6
|
|
_020D5ED0:
|
|
ldr r0, _020D5F30 ; =UNK_021D5538
|
|
ldr r1, [r0, #0x18]
|
|
cmp r1, #0x0
|
|
addne sp, sp, #0x4
|
|
ldmneia sp!, {r4-r5,lr}
|
|
bxne lr
|
|
ldr r2, _020D5F30 ; =UNK_021D5538
|
|
ldr r1, [r0, #0x0]
|
|
ldr r4, [r2, #0x4]
|
|
cmp r1, #0x0
|
|
movne r1, #0x0
|
|
strne r1, [r0, #0x0]
|
|
cmp r4, #0x0
|
|
addeq sp, sp, #0x4
|
|
ldmeqia sp!, {r4-r5,lr}
|
|
bxeq lr
|
|
ldr r1, [r2, #0x10]
|
|
mov r3, #0x0
|
|
mov r0, r5
|
|
str r3, [r2, #0x4]
|
|
blx r4
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r5,lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D5F30: .word UNK_021D5538
|
|
_020D5F34: .word 0x027FFDE8
|
|
_020D5F38: .word 0x027FFDEC
|
|
_020D5F3C: .word 0x027FFDEA
|
|
|
|
arm_func_start RTC_GetDateTimeAsync
|
|
RTC_GetDateTimeAsync: ; 0x020D5F40
|
|
stmdb sp!, {r4-r7,lr}
|
|
sub sp, sp, #0x4
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _020D5FCC ; =UNK_021D5538
|
|
ldr r2, [r1, #0x0]
|
|
cmp r2, #0x0
|
|
beq _020D5F80
|
|
bl OS_RestoreInterrupts
|
|
add sp, sp, #0x4
|
|
mov r0, #0x1
|
|
ldmia sp!, {r4-r7,lr}
|
|
bx lr
|
|
_020D5F80:
|
|
mov r2, #0x1
|
|
str r2, [r1, #0x0]
|
|
bl OS_RestoreInterrupts
|
|
ldr r0, _020D5FCC ; =UNK_021D5538
|
|
mov r2, #0x2
|
|
mov r1, #0x0
|
|
str r2, [r0, #0x14]
|
|
str r1, [r0, #0x18]
|
|
str r7, [r0, #0x8]
|
|
str r6, [r0, #0xc]
|
|
str r5, [r0, #0x4]
|
|
str r4, [r0, #0x10]
|
|
bl RTCi_ReadRawDateTimeAsync
|
|
_020D5FB4: ; 0x020D5FB4
|
|
cmp r0, #0x0
|
|
movne r0, #0x0
|
|
moveq r0, #0x3
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r7,lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D5FCC: .word UNK_021D5538
|
|
|
|
arm_func_start RTC_GetTime
|
|
RTC_GetTime: ; 0x020D5FD0
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0x4
|
|
ldr r1, _020D600C ; =RtcGetResultCallback
|
|
mov r2, #0x0
|
|
bl RTC_GetTimeAsync
|
|
ldr r1, _020D6010 ; =UNK_021D5538
|
|
cmp r0, #0x0
|
|
str r0, [r1, #0x20]
|
|
bne _020D5FF8
|
|
bl RtcWaitBusy
|
|
_020D5FF8:
|
|
ldr r0, _020D6010 ; =UNK_021D5538
|
|
ldr r0, [r0, #0x20]
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D600C: .word RtcGetResultCallback
|
|
_020D6010: .word UNK_021D5538
|
|
|
|
arm_func_start RTC_GetTimeAsync
|
|
RTC_GetTimeAsync: ; 0x020D6014
|
|
stmdb sp!, {r4-r6,lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _020D608C ; =UNK_021D5538
|
|
ldr r2, [r1, #0x0]
|
|
cmp r2, #0x0
|
|
beq _020D6048
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0x1
|
|
ldmia sp!, {r4-r6,lr}
|
|
bx lr
|
|
_020D6048:
|
|
mov r2, #0x1
|
|
str r2, [r1, #0x0]
|
|
bl OS_RestoreInterrupts
|
|
ldr r0, _020D608C ; =UNK_021D5538
|
|
mov r2, #0x1
|
|
mov r1, #0x0
|
|
str r2, [r0, #0x14]
|
|
str r1, [r0, #0x18]
|
|
str r6, [r0, #0x8]
|
|
str r5, [r0, #0x4]
|
|
str r4, [r0, #0x10]
|
|
bl RTCi_ReadRawTimeAsync
|
|
_020D6078: ; 0x020D6078
|
|
cmp r0, #0x0
|
|
movne r0, #0x0
|
|
moveq r0, #0x3
|
|
ldmia sp!, {r4-r6,lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D608C: .word UNK_021D5538
|
|
|
|
arm_func_start RTC_GetDate
|
|
RTC_GetDate: ; 0x020D6090
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0x4
|
|
ldr r1, _020D60CC ; =RtcGetResultCallback
|
|
mov r2, #0x0
|
|
bl RTC_GetDateAsync
|
|
ldr r1, _020D60D0 ; =UNK_021D5538
|
|
cmp r0, #0x0
|
|
str r0, [r1, #0x20]
|
|
bne _020D60B8
|
|
bl RtcWaitBusy
|
|
_020D60B8:
|
|
ldr r0, _020D60D0 ; =UNK_021D5538
|
|
ldr r0, [r0, #0x20]
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D60CC: .word RtcGetResultCallback
|
|
_020D60D0: .word UNK_021D5538
|
|
|
|
arm_func_start RTC_GetDateAsync
|
|
RTC_GetDateAsync: ; 0x020D60D4
|
|
stmdb sp!, {r4-r6,lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl OS_DisableInterrupts
|
|
ldr r1, _020D6148 ; =UNK_021D5538
|
|
ldr r2, [r1, #0x0]
|
|
cmp r2, #0x0
|
|
beq _020D6108
|
|
bl OS_RestoreInterrupts
|
|
mov r0, #0x1
|
|
ldmia sp!, {r4-r6,lr}
|
|
bx lr
|
|
_020D6108:
|
|
mov r2, #0x1
|
|
str r2, [r1, #0x0]
|
|
bl OS_RestoreInterrupts
|
|
ldr r0, _020D6148 ; =UNK_021D5538
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x14]
|
|
str r1, [r0, #0x18]
|
|
str r6, [r0, #0x8]
|
|
str r5, [r0, #0x4]
|
|
str r4, [r0, #0x10]
|
|
bl RTCi_ReadRawDateAsync
|
|
_020D6134: ; 0x020D6134
|
|
cmp r0, #0x0
|
|
movne r0, #0x0
|
|
moveq r0, #0x3
|
|
ldmia sp!, {r4-r6,lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D6148: .word UNK_021D5538
|
|
|
|
arm_func_start RTC_Init
|
|
RTC_Init: ; 0x020D614C
|
|
stmdb sp!, {r4-r5,lr}
|
|
sub sp, sp, #0x4
|
|
ldr r1, _020D61C8 ; =UNK_021D5534
|
|
ldrh r0, [r1, #0x0]
|
|
cmp r0, #0x0
|
|
addne sp, sp, #0x4
|
|
ldmneia sp!, {r4-r5,lr}
|
|
bxne lr
|
|
ldr r0, _020D61CC ; =UNK_021D5538
|
|
mov r2, #0x0
|
|
mov r3, #0x1
|
|
strh r3, [r1, #0x0]
|
|
str r2, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
str r2, [r0, #0x1c]
|
|
str r2, [r0, #0x8]
|
|
str r2, [r0, #0xc]
|
|
bl PXI_Init
|
|
mov r5, #0x5
|
|
mov r4, #0x1
|
|
_020D619C:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl PXI_IsCallbackReady
|
|
_020D61A8: ; 0x020D61A8
|
|
cmp r0, #0x0
|
|
beq _020D619C
|
|
ldr r1, _020D61D0 ; =RtcCommonCallback
|
|
mov r0, #0x5
|
|
bl PXI_SetFifoRecvCallback
|
|
add sp, sp, #0x4
|
|
ldmia sp!, {r4-r5,lr}
|
|
bx lr
|
|
.balign 4
|
|
_020D61C8: .word UNK_021D5534
|
|
_020D61CC: .word UNK_021D5538
|
|
_020D61D0: .word RtcCommonCallback
|