pokegold/engine/time.asm
2016-06-24 22:04:47 -04:00

379 lines
5.6 KiB
NASM
Executable File

InitializeStartDay_: ; 117f1 (4:57f1)
call Function118c9
ret
ClearDailyTimers:
xor a
ld [wLuckyNumberDayBuffer], a
ld [wUnusedTwoDayTimer], a
ld [wDailyResetTimer], a
ret
InitCallReceiveDelay:
xor a
ld [wTimeCyclesSinceLastCall], a
Function11804: ; 11804 (4:5804)
ld a, [wTimeCyclesSinceLastCall]
cp $3
jr c, .asm_1180d
ld a, $3
.asm_1180d
ld e, a
ld d, $0
ld hl, .ReceiveCallDelays
add hl, de
ld a, [hl]
jp Function11849
.ReceiveCallDelays:
db 20, 10, 5, 3
CheckReceiveCallTimer:
call Function11857
ret nc
ld hl, wTimeCyclesSinceLastCall
ld a, [hl]
cp $3
jr nc, .asm_11829
inc [hl]
.asm_11829
call Function11804
scf
ret
Function1182e: ; 1182e (4:582e)
ld a, $1
Function11830:
ld [hl], a
push hl
call UpdateTime
pop hl
inc hl
call CopyDayToHL
ret
Function1183b: ; 1183b (4:583b)
inc hl
push hl
call CalcDaysSince
call Function119b4
pop hl
dec hl
call Function11972
ret
Function11849: ; 11849 (4:5849)
ld hl, wReceiveCallDelay_MinsRemaining
ld [hl], a
call UpdateTime
ld hl, wReceiveCallDelay_StartTime
call CopyDayHourMinToHL
ret
Function11857: ; 11857 (4:5857)
ld hl, wReceiveCallDelay_StartTime
call CalcMinsHoursDaysSince
call Function1199a
ld hl, wReceiveCallDelay_MinsRemaining
call Function11972
ret
asm_11867
ld hl, wDailyResetTimer
jp Function1182e
CheckDailyResetTimer:
ld hl, wDailyResetTimer
call Function1183b
ret nc
xor a
ld hl, wDailyFlags
ld [hli], a
ld [hl], a
jr asm_11867
StartBugContestTimer:
ld a, 20
ld [wBugContestMinsRemaining], a
ld a, 0
ld [wBugContestSecsRemaining], a
call UpdateTime
ld hl, wBugContestStartTime
call CopyDayHourMinSecToHL
ret
CheckBugContestTimer:
ld hl, wBugContestStartTime
call CalcSecsMinsHoursDaysSince
ld a, [wDaysSince]
and a
jr nz, .asm_118c0
ld a, [wHoursSince]
and a
jr nz, .asm_118c0
ld a, [wSecsSince]
ld b, a
ld a, [wBugContestSecsRemaining]
sub b
jr nc, .asm_118ae
add 60
.asm_118ae
ld [wBugContestSecsRemaining], a
ld a, [wMinsSince]
ld b, a
ld a, [wBugContestMinsRemaining]
sbc b
ld [wBugContestMinsRemaining], a
jr c, .asm_118c0
and a
ret
.asm_118c0
xor a
ld [wBugContestMinsRemaining], a
ld [wBugContestSecsRemaining], a
scf
ret
Function118c9: ; 118c9 (4:58c9)
call UpdateTime
ld hl, wStartDay
call CopyDayToHL
ret
CheckPokerusTick:
ld hl, wStartDay
call CalcDaysSince
call Function119b4
and a
jr z, .asm_118e6
ld b, a
callba ApplyPokerusTick ; same bank
.asm_118e6
xor a
ret
SetUnusedTwoDayTimer:
ld a, $2
ld hl, wUnusedTwoDayTimer
ld [hl], a
call UpdateTime
ld hl, wUnusedTwoDayTimerStartDate
call CopyDayToHL
ret
Function118f8: ; 118f8 (4:58f8)
ld hl, wUnusedTwoDayTimerStartDate
call CalcDaysSince
call Function119b4
ld hl, wUnusedTwoDayTimer
call Function11972
ret
ld hl, wDailyFlags
set 2, [hl]
ret
and a
ld hl, wDailyFlags
bit 2, [hl]
ret nz
scf
ret
Function11917: ; 11917 (4:5917)
call Function11920
ld hl, wLuckyNumberDayBuffer
jp Function11830
Function11920: ; 11920 (4:5920)
call GetWeekday
ld c, a
ld a, $5
sub c
jr z, .asm_1192b
jr nc, .asm_1192d
.asm_1192b
add $7
.asm_1192d
ret
Function1192e: ; 1192e (4:592e)
ld hl, wLuckyNumberDayBuffer
jp Function1183b
Function11934: ; 11934 (4:5934)
ld a, BANK(sMysteryGiftTimer)
call OpenSRAM
ld hl, sMysteryGiftTimer
ld a, [hli]
ld [wCurHPAnimMaxHP], a
ld a, [hl]
ld [wBuffer2], a
call CloseSRAM
ld hl, wCurHPAnimMaxHP
call Function1183b
jr nc, .asm_1195e
ld hl, wCurHPAnimMaxHP
call Function1182e
call CloseSRAM
callba Function2a4f6
.asm_1195e
ld a, BANK(sMysteryGiftTimer)
call OpenSRAM
ld hl, wBuffer1
ld a, [hli]
ld [sMysteryGiftTimer], a
ld a, [hl]
ld [sMysteryGiftTimer + 1], a
call CloseSRAM
ret
Function11972: ; 11972 (4:5972)
cp $ff
jr z, .asm_11981
ld c, a
ld a, [hl]
sub c
jr nc, .asm_1197c
xor a
.asm_1197c
ld [hl], a
jr z, .asm_11981
xor a
ret
.asm_11981
xor a
ld [hl], a
scf
ret
GetSecondsSinceIfLessThan60:
ld a, [wDaysSince]
and a
jr nz, asm_119b8
ld a, [wHoursSince]
and a
jr nz, asm_119b8
ld a, [wMinsSince]
jr nz, asm_119b8
ld a, [wSecsSince]
ret
Function1199a: ; 1199a (4:599a)
ld a, [wDaysSince]
and a
jr nz, asm_119b8
ld a, [wHoursSince]
and a
jr nz, asm_119b8
ld a, [wMinsSince]
ret
GetHoursSinceIfLessThan24:
ld a, [wDaysSince]
and a
jr nz, asm_119b8
ld a, [wHoursSince]
ret
Function119b4: ; 119b4 (4:59b4)
ld a, [wDaysSince]
ret
asm_119b8
ld a, $ff
ret
CalcDaysSince: ; 119bb (4:59bb)
xor a
jr CalcDaysSince_
CalcHoursDaysSince:
inc hl
xor a
jr CalcHoursDaysSince_
CalcMinsHoursDaysSince: ; 119c2 (4:59c2)
inc hl
inc hl
xor a
jr CalcMinsHoursDaysSince_
CalcSecsMinsHoursDaysSince: ; 119c7 (4:59c7)
inc hl
inc hl
inc hl
ld a, [hSeconds]
ld c, a
sub [hl]
jr nc, .asm_119d2
add 60
.asm_119d2
ld [hl], c
dec hl
ld [wSecsSince], a
CalcMinsHoursDaysSince_
ld a, [hMinutes]
ld c, a
sbc [hl]
jr nc, .asm_119df
add 60
.asm_119df
ld [hl], c
dec hl
ld [wMinsSince], a
CalcHoursDaysSince_
ld a, [hHours]
ld c, a
sbc [hl]
jr nc, .asm_119ec
add 24
.asm_119ec
ld [hl], c
dec hl
ld [wHoursSince], a
CalcDaysSince_:
ld a, [wCurDay]
ld c, a
sbc [hl]
jr nc, .asm_119fa
add 20 * 7
.asm_119fa
ld [hl], c
ld [wDaysSince], a
ret
CopyDayHourMinSecToHL: ; 119ff (4:59ff)
ld a, [wCurDay]
ld [hli], a
ld a, [hHours]
ld [hli], a
ld a, [hMinutes]
ld [hli], a
ld a, [hSeconds]
ld [hli], a
ret
CopyDayToHL: ; 11a0d (4:5a0d)
ld a, [wCurDay]
ld [hl], a
ret
CopyDayHourToHL:
ld a, [wCurDay]
ld [hli], a
ld a, [hHours]
ld [hli], a
ret
CopyDayHourMinToHL: ; 11a1a (4:5a1a)
ld a, [wCurDay]
ld [hli], a
ld a, [hHours]
ld [hli], a
ld a, [hMinutes]
ld [hli], a
ret