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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
ResetGameTime:: ; 1ee6 (0:1ee6)
xor a
ld [wGameTimeCap], a
ld [wGameTimeHours], a
ld [wGameTimeHours + 1], a
ld [wGameTimeMinutes], a
ld [wGameTimeSeconds], a
ld [wGameTimeFrames], a
ret
GameTimer:: ; 1efa (0:1efa)
nop
ld a, [wGameLogicPaused]
and a
ret nz
ld hl, wGameTimerPause
bit 0, [hl]
ret z
ld hl, wGameTimeCap
bit 0, [hl]
ret nz
ld hl, wGameTimeFrames
ld a, [hl]
inc a
cp 60
jr nc, .second
ld [hl], a
ret
.second
xor a
ld [hl], a
ld hl, wGameTimeSeconds
ld a, [hl]
inc a
cp 60
jr nc, .minute
ld [hl], a
ret
.minute
xor a
ld [hl], a
ld hl, wGameTimeMinutes
ld a, [hl]
inc a
cp 60
jr nc, .hour
ld [hl], a
ret
.hour
xor a
ld [hl], a
ld a, [wGameTimeHours]
ld h, a
ld a, [wGameTimeHours + 1]
ld l, a
inc hl
ld a, h
cp 1000 / $100
jr c, .ok
ld a, l
cp 1000 % $100
jr c, .ok
ld hl, wGameTimeCap
set 0, [hl]
ld a, 59
ld [wGameTimeMinutes], a
ld [wGameTimeSeconds], a
ret
.ok
ld a, h
ld [wGameTimeHours], a
ld a, l
ld [wGameTimeHours + 1], a
ret
|