summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_02023AC4.s
blob: a9a5bea2e7388ec028b7753729079f6a12e36543 (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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
	.include "asm/macros.inc"
	.include "global.inc"

	.section .data

	.global UNK_02105BD4
UNK_02105BD4: ; 0x02105BD4
	.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x32, 0x00, 0x00, 0x01, 0x00
	.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x03, 0x1E, 0xEC, 0xEC, 0x00, 0x00
	.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x10, 0x00
	.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x32, 0x00, 0x9D, 0x00, 0x00
	.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x32, 0x00, 0x00, 0x01, 0x00

	.text

	thumb_func_start FUN_02023AC4
FUN_02023AC4: ; 0x02023AC4
	mov r0, #0x20
	bx lr

	thumb_func_start FUN_02023AC8
FUN_02023AC8: ; 0x02023AC8
	mov r0, #0x20
	bx lr

	thumb_func_start FUN_02023ACC
FUN_02023ACC: ; 0x02023ACC
	ldr r3, _02023AD4 ; =MI_CpuCopy8
	mov r2, #0x20
	bx r3
	nop
_02023AD4: .word MI_CpuCopy8

	thumb_func_start FUN_02023AD8
FUN_02023AD8: ; 0x02023AD8
	ldr r3, _02023AE0 ; =memset
	mov r1, #0x0
	mov r2, #0x20
	bx r3
	.balign 4
_02023AE0: .word memset

	thumb_func_start FUN_02023AE4
FUN_02023AE4: ; 0x02023AE4
	ldr r3, _02023AF0 ; =CopyU16ArrayToStringN
	add r2, r0, #0x0
	add r0, r1, #0x0
	add r1, r2, #0x0
	mov r2, #0xc
	bx r3
	.balign 4
_02023AF0: .word CopyU16ArrayToStringN

	thumb_func_start FUN_02023AF4
FUN_02023AF4: ; 0x02023AF4
	push {r3-r5, lr}
	add r5, r0, #0x0
	mov r0, #0x18
	bl String_ctor
	add r1, r5, #0x0
	add r4, r0, #0x0
	bl CopyU16ArrayToString
	add r0, r4, #0x0
	pop {r3-r5, pc}
	.balign 4

	thumb_func_start FUN_02023B0C
FUN_02023B0C: ; 0x02023B0C
	mov r2, #0x0
	cmp r1, #0xc
	bhi _02023B9E
	add r1, r1, r1
	add r1, pc
	ldrh r1, [r1, #0x6]
	lsl r1, r1, #0x10
	asr r1, r1, #0x10
	add pc, r1
_02023B1E: ; jump table (using 16-bit offset)
	.short _02023B9E - _02023B1E - 2; case 0
	.short _02023B38 - _02023B1E - 2; case 1
	.short _02023B3C - _02023B1E - 2; case 2
	.short _02023B40 - _02023B1E - 2; case 3
	.short _02023B44 - _02023B1E - 2; case 4
	.short _02023B4C - _02023B1E - 2; case 5
	.short _02023B52 - _02023B1E - 2; case 6
	.short _02023B66 - _02023B1E - 2; case 7
	.short _02023B6C - _02023B1E - 2; case 8
	.short _02023B80 - _02023B1E - 2; case 9
	.short _02023B88 - _02023B1E - 2; case 10
	.short _02023B90 - _02023B1E - 2; case 11
	.short _02023B98 - _02023B1E - 2; case 12
_02023B38:
	ldrb r2, [r0, #0x1a]
	b _02023B9E
_02023B3C:
	ldrb r2, [r0, #0x1b]
	b _02023B9E
_02023B40:
	ldrh r2, [r0, #0x18]
	b _02023B9E
_02023B44:
	ldrb r0, [r0, #0x1e]
	lsl r0, r0, #0x1f
	lsr r2, r0, #0x1f
	b _02023B9E
_02023B4C:
	mov r1, #0x1c
	ldrsb r2, [r0, r1]
	b _02023B9E
_02023B52:
	mov r1, #0x1c
	ldrsb r0, [r0, r1]
	cmp r0, #0x0
	ble _02023B5E
	mov r2, #0x1
	b _02023B9E
_02023B5E:
	bge _02023B9E
	add r2, r1, #0x0
	sub r2, #0x1d
	b _02023B9E
_02023B66:
	mov r1, #0x1d
	ldrsb r2, [r0, r1]
	b _02023B9E
_02023B6C:
	mov r1, #0x1d
	ldrsb r0, [r0, r1]
	cmp r0, #0x0
	ble _02023B78
	mov r2, #0x1
	b _02023B9E
_02023B78:
	bge _02023B9E
	add r2, r1, #0x0
	sub r2, #0x1e
	b _02023B9E
_02023B80:
	ldrb r0, [r0, #0x1e]
	lsl r0, r0, #0x1c
	lsr r2, r0, #0x1f
	b _02023B9E
_02023B88:
	ldrb r0, [r0, #0x1e]
	lsl r0, r0, #0x1d
	lsr r2, r0, #0x1f
	b _02023B9E
_02023B90:
	ldrb r0, [r0, #0x1e]
	lsl r0, r0, #0x1e
	lsr r2, r0, #0x1f
	b _02023B9E
_02023B98:
	ldrb r0, [r0, #0x1e]
	lsl r0, r0, #0x1b
	lsr r2, r0, #0x1f
_02023B9E:
	add r0, r2, #0x0
	bx lr
	.balign 4

	thumb_func_start FUN_02023BA4
FUN_02023BA4: ; 0x02023BA4
	push {r3-r5, lr}
	add r5, r1, #0x0
	add r4, r0, #0x0
	cmp r5, #0x1
	blt _02023BB2
	bl GF_AssertFail
_02023BB2:
	add r0, r4, #0x0
	mov r1, #0xd
	bl SavArray_get
	add r4, r0, #0x0
	lsl r5, r5, #0x5
	add r0, r4, r5
	mov r1, #0x1
	bl FUN_02023B0C
	cmp r0, #0x0
	beq _02023BCE
	add r0, r4, r5
	pop {r3-r5, pc}
_02023BCE:
	mov r0, #0x0
	pop {r3-r5, pc}
	.balign 4

	thumb_func_start FUN_02023BD4
FUN_02023BD4: ; 0x02023BD4
	push {r4, lr}
	add r4, r1, #0x0
	mov r1, #0xd
	bl SavArray_get
	add r1, r0, #0x0
	add r0, r4, #0x0
	bl FUN_02023ACC
	pop {r4, pc}

	thumb_func_start FUN_02023BE8
FUN_02023BE8: ; 0x02023BE8
	push {r3, lr}
	cmp r1, #0x5
	bhs _02023BF6
	ldr r2, _02023C00 ; =UNK_02105BD4
	lsl r0, r1, #0x5
	add r0, r2, r0
	pop {r3, pc}
_02023BF6:
	mov r1, #0xd
	bl SavArray_get
	pop {r3, pc}
	nop
_02023C00: .word UNK_02105BD4

	thumb_func_start FUN_02023C04
FUN_02023C04: ; 0x02023C04
	push {r4-r6, lr}
	add r5, r1, #0x0
	add r4, r2, #0x0
	cmp r5, #0x5
	bhs _02023C2C
	ldr r2, _02023C3C ; =0x0000013A
	mov r0, #0x0
	mov r1, #0x1a
	bl NewMsgDataFromNarc
	add r5, #0x38
	add r6, r0, #0x0
	add r1, r5, #0x0
	add r2, r4, #0x0
	bl ReadMsgDataIntoString
	add r0, r6, #0x0
	bl DestroyMsgData
	pop {r4-r6, pc}
_02023C2C:
	mov r1, #0x0
	bl FUN_02023BA4
	add r1, r4, #0x0
	bl FUN_02023AE4
	pop {r4-r6, pc}
	nop
_02023C3C: .word 0x0000013A