summaryrefslogtreecommitdiff
path: root/asm/clock.s
blob: 5d771a8b69912e69e62dbe4c6291aed691b62b1a (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
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
	.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text

	thumb_func_start sub_809E778
sub_809E778: @ 809E778
	push {lr}
	ldr r0, =0x00000895
	bl FlagSet
	bl RtcCalcLocalTime
	ldr r0, =gSaveBlock2Ptr
	ldr r2, [r0]
	adds r2, 0xA0
	ldr r3, =gLocalTime
	ldr r0, [r3]
	ldr r1, [r3, 0x4]
	str r0, [r2]
	str r1, [r2, 0x4]
	ldr r0, =0x00004040
	ldrh r1, [r3]
	bl VarSet
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809E778

	thumb_func_start DoTimeBasedEvents
DoTimeBasedEvents: @ 809E7B0
	push {r4,lr}
	ldr r0, =0x00000895
	bl FlagGet
	lsls r0, 24
	cmp r0, 0
	beq _0809E7DA
	bl sub_813B9C0
	lsls r0, 24
	cmp r0, 0
	bne _0809E7DA
	bl RtcCalcLocalTime
	ldr r4, =gLocalTime
	adds r0, r4, 0
	bl sub_809E7E8
	adds r0, r4, 0
	bl sub_809E858
_0809E7DA:
	pop {r4}
	pop {r0}
	bx r0
	.pool
	thumb_func_end DoTimeBasedEvents

	thumb_func_start sub_809E7E8
sub_809E7E8: @ 809E7E8
	push {r4-r6,lr}
	adds r5, r0, 0
	ldr r0, =0x00004040
	bl GetVarPointer
	adds r6, r0, 0
	ldrh r0, [r6]
	movs r2, 0
	ldrsh r1, [r5, r2]
	cmp r0, r1
	beq _0809E84E
	cmp r0, r1
	bgt _0809E84E
	ldrh r4, [r5]
	subs r4, r0
	lsls r4, 16
	lsrs r4, 16
	bl ClearUpperFlags
	adds r0, r4, 0
	bl sub_8122580
	adds r0, r4, 0
	bl sub_80ED888
	adds r0, r4, 0
	bl sub_80AEFBC
	adds r0, r4, 0
	bl UpdatePartyPokerusTime
	adds r0, r4, 0
	bl sub_8137904
	adds r0, r4, 0
	bl sub_8137A20
	adds r0, r4, 0
	bl sub_8139EF4
	adds r0, r4, 0
	bl sub_813A7F4
	adds r0, r4, 0
	bl sub_813945C
	adds r0, r4, 0
	bl SetRandomLotteryNumber
	ldrh r0, [r5]
	strh r0, [r6]
_0809E84E:
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809E7E8

	thumb_func_start sub_809E858
sub_809E858: @ 809E858
	push {r4-r6,lr}
	sub sp, 0x8
	adds r5, r0, 0
	mov r4, sp
	ldr r6, =gSaveBlock2Ptr
	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, r1
	lsls r1, r0, 4
	subs r1, r0
	lsls r1, 5
	movs r2, 0x2
	ldrsb r2, [r4, r2]
	lsls r0, r2, 4
	subs r0, r2
	lsls r0, 2
	adds r1, r0
	movs r0, 0x3
	ldrsb r0, [r4, r0]
	adds r0, r1, r0
	cmp r0, 0
	beq _0809E8A8
	cmp r0, 0
	blt _0809E8A8
	bl BerryTreeTimeUpdate
	ldr r2, [r6]
	adds r2, 0xA0
	ldr r0, [r5]
	ldr r1, [r5, 0x4]
	str r0, [r2]
	str r1, [r2, 0x4]
_0809E8A8:
	add sp, 0x8
	pop {r4-r6}
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809E858

	thumb_func_start sub_809E8B4
sub_809E8B4: @ 809E8B4
	push {lr}
	bl sub_809E778
	ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
	bl SetMainCallback2
	pop {r0}
	bx r0
	.pool
	thumb_func_end sub_809E8B4

	thumb_func_start Special_StartWallClock
Special_StartWallClock: @ 809E8C8
	push {lr}
	ldr r0, =Cb2_StartWallClock
	bl SetMainCallback2
	ldr r1, =gMain
	ldr r0, =sub_809E8B4
	str r0, [r1, 0x8]
	pop {r0}
	bx r0
	.pool
	thumb_func_end Special_StartWallClock

	.align 2, 0 @ Don't pad with nop.