summaryrefslogtreecommitdiff
path: root/engine/time.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/time.asm')
-rwxr-xr-xengine/time.asm378
1 files changed, 378 insertions, 0 deletions
diff --git a/engine/time.asm b/engine/time.asm
new file mode 100755
index 00000000..7ad065fc
--- /dev/null
+++ b/engine/time.asm
@@ -0,0 +1,378 @@
+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