summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm/mod05_021E8648.s
blob: 12fe946f028148ba6c4bbd3de3724f1235d8ca94 (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
	.include "asm/macros.inc"
	.include "global.inc"
	.section .text
	.balign 4, 0

	thumb_func_start MOD05_021E8648
MOD05_021E8648: ; 0x021E8648
	push {r4, r5, r6, lr}
	add r5, r0, #0
	ldr r0, _021E8690 ; =MOD05_021E8728
	ldr r3, [r5, #0x28]
	mov r1, #0x38
	mov r2, #5
	bl FUN_020061E8
	add r6, r0, #0
	bl FUN_0201B6C8
	add r4, r0, #0
	add r2, r4, #4
	mov r3, #5
_021E8664:
	ldmia r5!, {r0, r1}
	stmia r2!, {r0, r1}
	sub r3, r3, #1
	bne _021E8664
	ldr r0, [r5]
	str r0, [r2]
	str r6, [r4, #0x34]
	mov r0, #0
	str r0, [r4, #0x30]
	bl GX_GetBankForLCDC
	str r0, [r4]
	add r0, r4, #4
	bl MOD05_021E87C8
	ldr r0, _021E8694 ; =MOD05_021E8768
	add r1, r4, #0
	mov r2, #0
	bl FUN_0200CA98
	add r0, r4, #0
	pop {r4, r5, r6, pc}
	.balign 4, 0
_021E8690: .word MOD05_021E8728
_021E8694: .word MOD05_021E8768

	thumb_func_start MOD05_021E8698
MOD05_021E8698: ; 0x021E8698
	push {r4, lr}
	add r4, r0, #0
	add r0, r1, #0
	add r1, r2, #0
	add r2, r3, #0
	bl GX_SetGraphicsMode
	ldr r0, [r4]
	ldr r0, [r0]
	bl GX_SetBankForLCDC
	ldr r0, [r4]
	ldr r0, [r0, #4]
	cmp r0, #0xa
	bgt _021E86C8
	bge _021E86EC
	cmp r0, #6
	bgt _021E8708
	cmp r0, #2
	blt _021E8708
	beq _021E86CE
	cmp r0, #6
	beq _021E86DE
	b _021E8708
_021E86C8:
	cmp r0, #0xe
	beq _021E86FA
	b _021E8708
_021E86CE:
	mov r1, #0x1a
	mov r2, #2
	mov r0, #0
	lsl r1, r1, #0x16
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E870E
_021E86DE:
	mov r2, #2
	ldr r1, _021E871C ; =0x06820000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E870E
_021E86EC:
	mov r2, #2
	ldr r1, _021E8720 ; =0x06840000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E870E
_021E86FA:
	mov r2, #2
	ldr r1, _021E8724 ; =0x06860000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E870E
_021E8708:
	mov r0, #0
	bl GX_SetBankForLCDC
_021E870E:
	ldr r0, [r4]
	ldr r0, [r0, #0x34]
	bl FUN_0200621C
	mov r0, #0
	str r0, [r4]
	pop {r4, pc}
	.balign 4, 0
_021E871C: .word 0x06820000
_021E8720: .word 0x06840000
_021E8724: .word 0x06860000

	thumb_func_start MOD05_021E8728
MOD05_021E8728: ; 0x021E8728
	push {r4, r5, r6, r7}
	ldr r0, [r1, #0x30]
	cmp r0, #0
	beq _021E8760
	ldr r6, [r1, #0x20]
	ldr r5, [r1, #0x10]
	ldr r4, [r1, #0x1c]
	ldr r3, [r1, #0x18]
	ldr r2, [r1, #0x14]
	ldr r0, [r1, #0x24]
	ldr r1, [r1, #0x28]
	lsl r5, r5, #0x14
	lsl r7, r1, #8
	lsl r1, r3, #0x18
	lsl r3, r2, #0x1d
	mov r2, #2
	lsl r2, r2, #0x1e
	orr r3, r2
	lsl r2, r4, #0x19
	orr r2, r3
	orr r1, r2
	lsl r6, r6, #0x10
	orr r1, r5
	orr r1, r6
	orr r1, r7
	orr r1, r0
	ldr r0, _021E8764 ; =0x04000064
	str r1, [r0]
_021E8760:
	pop {r4, r5, r6, r7}
	bx lr
	.balign 4, 0
_021E8764: .word 0x04000064

	thumb_func_start MOD05_021E8768
MOD05_021E8768: ; 0x021E8768
	push {r3, r4, r5, lr}
	add r4, r1, #0
	add r5, r0, #0
	ldr r0, [r4, #4]
	cmp r0, #0xa
	bgt _021E8786
	bge _021E879C
	cmp r0, #6
	bgt _021E87AC
	cmp r0, #2
	blt _021E87AC
	beq _021E878C
	cmp r0, #6
	beq _021E8794
	b _021E87AC
_021E8786:
	cmp r0, #0xe
	beq _021E87A4
	b _021E87AC
_021E878C:
	mov r0, #1
	bl GX_SetBankForLCDC
	b _021E87B2
_021E8794:
	mov r0, #2
	bl GX_SetBankForLCDC
	b _021E87B2
_021E879C:
	mov r0, #4
	bl GX_SetBankForLCDC
	b _021E87B2
_021E87A4:
	mov r0, #8
	bl GX_SetBankForLCDC
	b _021E87B2
_021E87AC:
	mov r0, #0
	bl GX_SetBankForLCDC
_021E87B2:
	ldr r0, [r4, #4]
	ldr r1, [r4, #8]
	ldr r2, [r4, #0xc]
	bl GX_SetGraphicsMode
	mov r0, #1
	str r0, [r4, #0x30]
	add r0, r5, #0
	bl FUN_0200CAB4
	pop {r3, r4, r5, pc}

	thumb_func_start MOD05_021E87C8
MOD05_021E87C8: ; 0x021E87C8
	push {r4, r5, r6, lr}
	add r4, r0, #0
	ldr r0, [r4]
	cmp r0, #0xa
	bgt _021E87E4
	bge _021E8808
	cmp r0, #6
	bgt _021E8822
	cmp r0, #2
	blt _021E8822
	beq _021E87EA
	cmp r0, #6
	beq _021E87FA
	b _021E8822
_021E87E4:
	cmp r0, #0xe
	beq _021E8816
	b _021E8822
_021E87EA:
	mov r1, #0x1a
	mov r2, #2
	mov r0, #0
	lsl r1, r1, #0x16
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E8822
_021E87FA:
	mov r2, #2
	ldr r1, _021E8850 ; =0x06820000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E8822
_021E8808:
	mov r2, #2
	ldr r1, _021E8854 ; =0x06840000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
	b _021E8822
_021E8816:
	mov r2, #2
	ldr r1, _021E8858 ; =0x06860000
	mov r0, #0
	lsl r2, r2, #0x10
	bl MIi_CpuClearFast
_021E8822:
	ldr r5, [r4, #0x10]
	ldr r1, [r4, #0x1c]
	ldr r3, [r4, #0x18]
	ldr r6, [r4, #0x14]
	ldr r0, [r4, #0xc]
	mov r4, #2
	lsl r2, r1, #0x10
	lsl r1, r0, #0x14
	lsl r5, r5, #0x1d
	lsl r4, r4, #0x1e
	orr r4, r5
	lsl r3, r3, #0x19
	lsl r0, r6, #0x18
	orr r3, r4
	orr r0, r3
	orr r0, r1
	add r1, r2, #0
	orr r1, r0
	mov r0, #0x10
	orr r1, r0
	ldr r0, _021E885C ; =0x04000064
	str r1, [r0]
	pop {r4, r5, r6, pc}
	.balign 4, 0
_021E8850: .word 0x06820000
_021E8854: .word 0x06840000
_021E8858: .word 0x06860000
_021E885C: .word 0x04000064