summaryrefslogtreecommitdiff
path: root/arm9/modules/06/asm/module_06.s
blob: cccb02eeb4595c8cbe1b5eca2a299dfb61fb4f13 (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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
	.include "asm/macros.inc"
	.include "global.inc"
	.section .text
	.balign 4, 0

	thumb_func_start MOD06_022396A0
MOD06_022396A0: ; 0x022396A0
	push {r4, r5, r6, lr}
	add r5, r0, #0
	add r0, r5, #4
	add r4, r2, #0
	add r6, r3, #0
	str r1, [r5]
	bl FUN_0223972C
	mov r0, #0
	str r0, [r5, #0x38]
	str r4, [r5, #0x30]
	str r6, [r5, #0x34]
	pop {r4, r5, r6, pc}
	.align 2, 0

	thumb_func_start FUN_022396BC
FUN_022396BC: ; 0x022396BC
	push {r4, lr}
	add r4, r0, #0
	ldr r1, [r4, #0x38]
	cmp r1, #5
	bhi _02239712
	add r1, r1, r1
	add r1, pc
	ldrh r1, [r1, #6]
	lsl r1, r1, #0x10
	asr r1, r1, #0x10
	add pc, r1
_022396D2: ; jump table
	.short _022396DE - _022396D2 - 2 ; case 0
	.short _022396EA - _022396D2 - 2 ; case 1
	.short _02239712 - _022396D2 - 2 ; case 2
	.short _022396FC - _022396D2 - 2 ; case 3
	.short _02239708 - _022396D2 - 2 ; case 4
	.short _02239712 - _022396D2 - 2 ; case 5
_022396DE:
	bl FUN_022397F4
	ldr r0, [r4, #0x38]
	add r0, r0, #1
	str r0, [r4, #0x38]
	pop {r4, pc}
_022396EA:
	ldr r0, [r4, #0x30]
	ldr r1, [r4, #0x34]
	bl FUN_0223987C
	str r0, [r4, #0x2c]
	ldr r0, [r4, #0x38]
	add r0, r0, #1
	str r0, [r4, #0x38]
	pop {r4, pc}
_022396FC:
	bl FUN_022398A8
	ldr r0, [r4, #0x38]
	add r0, r0, #1
	str r0, [r4, #0x38]
	pop {r4, pc}
_02239708:
	bl FUN_02239808
	ldr r0, [r4, #0x38]
	add r0, r0, #1
	str r0, [r4, #0x38]
_02239712:
	pop {r4, pc}

	thumb_func_start FUN_02239714
FUN_02239714: ; 0x02239714
	push {r4, lr}
	add r4, r0, #0
	ldr r0, [r4, #0x38]
	cmp r0, #2
	beq _02239722
	bl ErrorHandling
_02239722:
	mov r0, #3
	str r0, [r4, #0x38]
	pop {r4, pc}

	thumb_func_start FUN_02239728
FUN_02239728: ; 0x02239728
	ldr r0, [r0, #0x38]
	bx lr

	thumb_func_start FUN_0223972C
FUN_0223972C: ; 0x0223972C
	push {r4, lr}
	add r4, r0, #0
	bl GX_GetBankForBGExtPltt_2
	str r0, [r4]
	bl GX_GetBankForBGExtPltt
	str r0, [r4, #4]
	bl GX_GetBankForSubBGExtPltt_2
	str r0, [r4, #8]
	bl GX_GetBankForSubBGExtPltt
	str r0, [r4, #0xc]
	bl GX_GetBankForOBJ
	str r0, [r4, #0x10]
	bl GX_GetBankForOBJExtPltt
	str r0, [r4, #0x14]
	bl GX_GetBankForSubOBJ
	str r0, [r4, #0x18]
	bl GX_GetBankForSubOBJExtPltt
	str r0, [r4, #0x1c]
	bl FUN_020C5D8C
	str r0, [r4, #0x20]
	bl GX_GetBankForTexPltt
	str r0, [r4, #0x24]
	pop {r4, pc}
	.align 2, 0

	thumb_func_start FUN_02239770
FUN_02239770: ; 0x02239770
	push {r4, lr}
	sub sp, #0x28
	ldr r4, _0223978C ; =0x0224F1F4
	add r3, sp, #0
	mov r2, #5
_0223977A:
	ldmia r4!, {r0, r1}
	stmia r3!, {r0, r1}
	sub r2, r2, #1
	bne _0223977A
	add r0, sp, #0
	bl FUN_0201E66C
	add sp, #0x28
	pop {r4, pc}
	.align 2, 0
_0223978C: .word 0x0224F1F4

	thumb_func_start FUN_02239790
FUN_02239790: ; 0x02239790
	push {r4, r5, lr}
	sub sp, #0x2c
	ldr r5, _022397EC ; =0x0224F180
	add r3, sp, #0x1c
	add r4, r0, #0
	add r2, r3, #0
	ldmia r5!, {r0, r1}
	stmia r3!, {r0, r1}
	ldmia r5!, {r0, r1}
	stmia r3!, {r0, r1}
	add r0, r2, #0
	bl FUN_02016BBC
	mov r0, #1
	add r1, r0, #0
	bl FUN_0201E6E4
	ldr r5, _022397F0 ; =0x0224F1D8
	add r3, sp, #0
	ldmia r5!, {r0, r1}
	add r2, r3, #0
	stmia r3!, {r0, r1}
	ldmia r5!, {r0, r1}
	stmia r3!, {r0, r1}
	ldmia r5!, {r0, r1}
	stmia r3!, {r0, r1}
	ldr r0, [r5]
	mov r1, #3
	str r0, [r3]
	add r0, r4, #0
	mov r3, #0
	bl FUN_02016C18
	mov r0, #3
	mov r1, #0x20
	mov r2, #0
	mov r3, #4
	bl FUN_02017F18
	add r0, r4, #0
	mov r1, #3
	bl FUN_02018744
	add sp, #0x2c
	pop {r4, r5, pc}
	nop
_022397EC: .word 0x0224F180
_022397F0: .word 0x0224F1D8

	thumb_func_start FUN_022397F4
FUN_022397F4: ; 0x022397F4
	ldr r3, _02239800 ; =FUN_0200CA98
	mov r2, #1
	add r1, r0, #0
	ldr r0, _02239804 ; =FUN_0223981C
	lsl r2, r2, #0xa
	bx r3
	.align 2, 0
_02239800: .word FUN_0200CA98
_02239804: .word FUN_0223981C

	thumb_func_start FUN_02239808
FUN_02239808: ; 0x02239808
	ldr r3, _02239814 ; =FUN_0200CA98
	mov r2, #1
	add r1, r0, #0
	ldr r0, _02239818 ; =FUN_02239840
	lsl r2, r2, #0xa
	bx r3
	.align 2, 0
_02239814: .word FUN_0200CA98
_02239818: .word FUN_02239840

	thumb_func_start FUN_0223981C
FUN_0223981C: ; 0x0223981C
	push {r3, r4, r5, lr}
	add r4, r1, #0
	add r5, r0, #0
	bl FUN_02239770
	ldr r0, [r4]
	ldr r0, [r0, #8]
	bl FUN_02239864
	ldr r0, [r4]
	ldr r0, [r0, #8]
	bl FUN_02239790
	add r0, r5, #0
	bl FUN_0200CAB4
	pop {r3, r4, r5, pc}
	.align 2, 0

	thumb_func_start FUN_02239840
FUN_02239840: ; 0x02239840
	push {r3, r4, r5, lr}
	add r4, r1, #0
	add r5, r0, #0
	add r0, r4, #4
	bl FUN_0201E66C
	ldr r0, [r4]
	ldr r0, [r0, #8]
	bl FUN_02239864
	ldr r0, [r4]
	ldr r0, [r0, #8]
	bl FUN_0223986C
	add r0, r5, #0
	bl FUN_0200CAB4
	pop {r3, r4, r5, pc}

	thumb_func_start FUN_02239864
FUN_02239864: ; 0x02239864
	ldr r3, _02239868 ; =FUN_021D7A28
	bx r3
	.align 2, 0
_02239868: .word FUN_021D7A28 + 1 ; TODO: disassemble the module that defines this

	thumb_func_start FUN_0223986C
FUN_0223986C: ; 0x0223986C
	push {r3, lr}
	bl FUN_021D7A20
	mov r0, #1
	add r1, r0, #0
	bl FUN_0201E6E4
	pop {r3, pc}

	thumb_func_start FUN_0223987C
FUN_0223987C: ; 0x0223987C
	push {r3, r4, r5, r6, lr}
	sub sp, #0x2c
	ldr r6, _022398A4 ; =0x0224F21C
	add r3, r0, #0
	add r2, r1, #0
	add r5, sp, #0
	mov r4, #5
_0223988A:
	ldmia r6!, {r0, r1}
	stmia r5!, {r0, r1}
	sub r4, r4, #1
	bne _0223988A
	ldr r0, [r6]
	str r0, [r5]
	add r0, sp, #0
	str r3, [sp, #0x20]
	str r2, [sp, #0x24]
	bl FUN_021E8648
	add sp, #0x2c
	pop {r3, r4, r5, r6, pc}
	.align 2, 0
_022398A4: .word 0x0224F21C

	thumb_func_start FUN_022398A8
FUN_022398A8: ; 0x022398A8
	ldr r3, _022398B4 ; =FUN_0200CA98
	mov r2, #1
	add r1, r0, #0
	ldr r0, _022398B8 ; =0x022398BD
	lsl r2, r2, #0xa
	bx r3
	.align 2, 0
_022398B4: .word FUN_0200CA98
_022398B8: .word 0x022398BD

	.section .data
	; 0x022398BC
	.incbin "baserom.nds", 0x16b81c, 0x18b64

	.section .bss
	; 0x02252420
	.space 0x20