pokeemerald-jp/asm/clock.s
2019-09-27 01:42:56 -04:00

185 lines
3.3 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start InitTimeBasedEvents
InitTimeBasedEvents: @ 0x0809E050
push {lr}
ldr r0, _0809E078
bl FlagSet
bl RtcCalcLocalTime
ldr r0, _0809E07C
ldr r2, [r0]
adds r2, #0xa0
ldr r3, _0809E080
ldr r0, [r3]
ldr r1, [r3, #4]
str r0, [r2]
str r1, [r2, #4]
ldr r0, _0809E084
ldrh r1, [r3]
bl VarSet
pop {r0}
bx r0
.align 2, 0
_0809E078: .4byte 0x00000895
_0809E07C: .4byte 0x03005AF0
_0809E080: .4byte 0x03005A50
_0809E084: .4byte 0x00004040
thumb_func_end InitTimeBasedEvents
thumb_func_start DoTimeBasedEvents
DoTimeBasedEvents: @ 0x0809E088
push {r4, lr}
ldr r0, _0809E0B8
bl FlagGet
lsls r0, r0, #0x18
cmp r0, #0
beq _0809E0B2
bl sub_0813B9F8
lsls r0, r0, #0x18
cmp r0, #0
bne _0809E0B2
bl RtcCalcLocalTime
ldr r4, _0809E0BC
adds r0, r4, #0
bl UpdatePerDay
adds r0, r4, #0
bl UpdatePerMinute
_0809E0B2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0809E0B8: .4byte 0x00000895
_0809E0BC: .4byte 0x03005A50
thumb_func_end DoTimeBasedEvents
thumb_func_start UpdatePerDay
UpdatePerDay: @ 0x0809E0C0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _0809E12C
bl GetVarPointer
adds r6, r0, #0
ldrh r0, [r6]
movs r2, #0
ldrsh r1, [r5, r2]
cmp r0, r1
beq _0809E126
cmp r0, r1
bgt _0809E126
ldrh r4, [r5]
subs r4, r4, r0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
bl ClearDailyFlags
adds r0, r4, #0
bl UpdateDewfordTrendPerDay
adds r0, r4, #0
bl UpdateTVShowsPerDay
adds r0, r4, #0
bl UpdateWeatherPerDay
adds r0, r4, #0
bl UpdatePartyPokerusTime
adds r0, r4, #0
bl UpdateMirageRnd
adds r0, r4, #0
bl UpdateBirchState
adds r0, r4, #0
bl UpdateFrontierManiac
adds r0, r4, #0
bl UpdateFrontierGambler
adds r0, r4, #0
bl SetShoalItemFlag
adds r0, r4, #0
bl SetRandomLotteryNumber
ldrh r0, [r5]
strh r0, [r6]
_0809E126:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0809E12C: .4byte 0x00004040
thumb_func_end UpdatePerDay
thumb_func_start UpdatePerMinute
UpdatePerMinute: @ 0x0809E130
push {r4, r5, r6, lr}
sub sp, #8
adds r5, r0, #0
mov r4, sp
ldr r6, _0809E188
ldr r1, [r6]
adds r1, #0xa0
mov r0, sp
adds r2, r5, #0
bl CalcTimeDifference
mov r0, sp
movs r2, #0
ldrsh r1, [r0, r2]
lsls r0, r1, #1
adds r0, r0, r1
lsls r1, r0, #4
subs r1, r1, r0
lsls r1, r1, #5
movs r2, #2
ldrsb r2, [r4, r2]
lsls r0, r2, #4
subs r0, r0, r2
lsls r0, r0, #2
adds r1, r1, r0
movs r0, #3
ldrsb r0, [r4, r0]
adds r0, r1, r0
cmp r0, #0
beq _0809E180
cmp r0, #0
blt _0809E180
bl BerryTreeTimeUpdate
ldr r2, [r6]
adds r2, #0xa0
ldr r0, [r5]
ldr r1, [r5, #4]
str r0, [r2]
str r1, [r2, #4]
_0809E180:
add sp, #8
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_0809E188: .4byte 0x03005AF0
thumb_func_end UpdatePerMinute
thumb_func_start ReturnFromStartWallClock
ReturnFromStartWallClock: @ 0x0809E18C
push {lr}
bl InitTimeBasedEvents
ldr r0, _0809E19C
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_0809E19C: .4byte 0x08085B35
thumb_func_end ReturnFromStartWallClock
thumb_func_start StartWallClock
StartWallClock: @ 0x0809E1A0
push {lr}
ldr r0, _0809E1B4
bl SetMainCallback2
ldr r1, _0809E1B8
ldr r0, _0809E1BC
str r0, [r1, #8]
pop {r0}
bx r0
.align 2, 0
_0809E1B4: .4byte 0x08134A3D
_0809E1B8: .4byte 0x03002360
_0809E1BC: .4byte 0x0809E18D
thumb_func_end StartWallClock