summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_02020AFC.s
blob: 3d43d259fb4d7383db9d4069ffad54756ebeae95 (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
	.include "asm/macros.inc"
    .include "global.inc"

	.section .bss

	.global UNK_021C59B0
UNK_021C59B0: ; 0x021C59B0
	.space 0xc

	.text

	thumb_func_start FUN_02020AFC
FUN_02020AFC: ; 0x02020AFC
	push {r3, lr}
	ldr r0, _02020B24 ; =UNK_021C59B0
	mov r2, #0x0
	str r2, [r0, #0x4]
	str r2, [r0, #0x8]
	ldr r1, _02020B28 ; =0x0400010E
	str r2, [r0, #0x0]
	strh r2, [r1, #0x0]
	sub r0, r1, #0x2
	strh r2, [r0, #0x0]
	mov r0, #0xc1
	strh r0, [r1, #0x0]
	ldr r1, _02020B2C ; =FUN_02020B30
	mov r0, #0x40
	bl OS_SetIrqFunction
	mov r0, #0x40
	bl OS_EnableIrqMask
	pop {r3, pc}
	.balign 4
_02020B24: .word UNK_021C59B0
_02020B28: .word 0x0400010E
_02020B2C: .word FUN_02020B30

	thumb_func_start FUN_02020B30
FUN_02020B30: ; 0x02020B30
	ldr r0, _02020B68 ; =UNK_021C59B0
	mov r3, #0x0
	ldr r1, [r0, #0x4]
	ldr r2, [r0, #0x8]
	add r1, r1, #0x1
	adc r2, r3
	str r1, [r0, #0x4]
	str r2, [r0, #0x8]
	ldr r1, [r0, #0x0]
	cmp r1, #0x0
	beq _02020B54
	ldr r2, _02020B6C ; =0x0400010E
	strh r3, [r2, #0x0]
	sub r1, r2, #0x2
	strh r3, [r1, #0x0]
	mov r1, #0xc1
	strh r1, [r2, #0x0]
	str r3, [r0, #0x0]
_02020B54:
	ldr r3, _02020B70 ; =0x027E0000
	ldr r1, _02020B74 ; =0x00003FF8
	mov r0, #0x40
	ldr r2, [r3, r1]
	orr r2, r0
	str r2, [r3, r1]
	ldr r3, _02020B78 ; =OS_SetIrqFunction
	ldr r1, _02020B7C ; =FUN_02020B30
	bx r3
	nop
_02020B68: .word UNK_021C59B0
_02020B6C: .word 0x0400010E
_02020B70: .word 0x027E0000
_02020B74: .word 0x00003FF8
_02020B78: .word OS_SetIrqFunction
_02020B7C: .word FUN_02020B30

	thumb_func_start FUN_02020B80
FUN_02020B80: ; 0x02020B80
	push {r4-r5, lr}
	sub sp, #0xc
	bl OS_DisableInterrupts
	ldr r1, _02020BE4 ; =0x0400010C
	add r3, sp, #0x0
	ldrh r1, [r1, #0x0]
	ldr r2, _02020BE8 ; =0x0000FFFF
	strh r1, [r3, #0x0]
	ldr r1, _02020BEC ; =UNK_021C59B0
	ldr r5, [r1, #0x4]
	ldr r4, [r1, #0x8]
	mov r1, #0x0
	mvn r1, r1
	and r1, r5
	str r1, [sp, #0x4]
	and r2, r4
	ldr r1, _02020BF0 ; =0x04000214
	str r2, [sp, #0x8]
	ldr r2, [r1, #0x0]
	mov r1, #0x40
	tst r2, r1
	beq _02020BC4
	ldrh r2, [r3, #0x0]
	lsl r1, r1, #0x9
	tst r1, r2
	bne _02020BC4
	ldr r2, [sp, #0x4]
	mov r1, #0x0
	ldr r3, [sp, #0x8]
	add r2, r2, #0x1
	adc r3, r1
	str r2, [sp, #0x4]
	str r3, [sp, #0x8]
_02020BC4:
	bl OS_RestoreInterrupts
	ldr r2, [sp, #0x4]
	ldr r1, [sp, #0x8]
	lsr r0, r2, #0x10
	lsl r1, r1, #0x10
	orr r1, r0
	add r0, sp, #0x0
	lsl r3, r2, #0x10
	ldrh r2, [r0, #0x0]
	asr r0, r2, #0x1f
	orr r1, r0
	add r0, r3, #0x0
	orr r0, r2
	add sp, #0xc
	pop {r4-r5, pc}
	.balign 4
_02020BE4: .word 0x0400010C
_02020BE8: .word 0x0000FFFF
_02020BEC: .word UNK_021C59B0
_02020BF0: .word 0x04000214

	thumb_func_start FUN_02020BF4
FUN_02020BF4: ; 0x02020BF4
	ldr r3, _02020BF8 ; =FUN_02020B80
	bx r3
	.balign 4
_02020BF8: .word FUN_02020B80

	thumb_func_start FUN_02020BFC
FUN_02020BFC: ; 0x02020BFC
	push {r3, lr}
	lsr r2, r0, #0x1a
	lsl r1, r1, #0x6
	orr r1, r2
	ldr r2, _02020C10 ; =0x000082EA
	lsl r0, r0, #0x6
	mov r3, #0x0
	bl _ll_udiv
	pop {r3, pc}
	.balign 4
_02020C10: .word 0x000082EA

	thumb_func_start FUN_02020C14
FUN_02020C14: ; 0x02020C14
	push {r3, lr}
	lsr r2, r0, #0x1a
	lsl r1, r1, #0x6
	orr r1, r2
	ldr r2, _02020C28 ; =0x01FF6210
	lsl r0, r0, #0x6
	mov r3, #0x0
	bl _ll_udiv
	pop {r3, pc}
	.balign 4
_02020C28: .word 0x01FF6210