blob: 4dd866987056f465a044fadef2522673fcaf2c3e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "lbrtc.h"
s32 lbrtc_getTime(OSMesgQueue* mq, OSRTCTime* time) {
__OSContRTCData rtc[1];
__OSContRTCData data;
u8 status;
s32 ret;
ret = func_800FE480_jp(mq, &status);
if (ret == 0) {
ret = func_800FEE10_jp(mq, RTC_TIME_BLOCK_TYPE, (u8*)&data);
if (ret == 0) {
ret = func_800FEE10_jp(mq, RTC_TIME_BLOCK_TYPE, (u8*)&rtc);
if (bcmp(&data, &rtc, sizeof(__OSContRTCData)) != 0) {
ret = func_800FEE10_jp(mq, RTC_TIME_BLOCK_TYPE, (u8*)&rtc);
}
time->sec = (rtc[0].sec & 0xF) + ((rtc[0].sec >> 4) * 10);
time->min = (rtc[0].min & 0xF) + ((rtc[0].min >> 4) * 10);
time->hour = (((rtc[ret * 0].hour - 0x80) >> 4) * 10) + (((rtc + 0)->hour - 0x80) & 0xF);
time->day = (rtc[0].day & 0xF) + ((rtc[0].day >> 4) * 10);
time->weekday = rtc[0].weekday;
time->month = (rtc[0].month & 0xF) + ((rtc[0].month >> 4) * 10);
if (rtc[0].centuriesSince1900 != 0) {
time->year = ((rtc[0].yearLo & 0xF) + ((rtc[0].yearLo >> 4) * 10)) + 2000;
} else {
time->year = ((rtc[0].yearLo & 0xF) + ((rtc[0].yearLo >> 4) * 10)) + 1900;
}
}
}
return ret;
}
|