summaryrefslogtreecommitdiff
path: root/asm/code_8023B64C.s
blob: 6f128fb37e179d3587aa7cb2ee3b0a7ea4984842 (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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

lbl_8023B64C:
/* 8023B64C 002372AC  80 0D A3 D8 */	lwz r0, render_context_ptr-_SDA_BASE_(r13)
/* 8023B650 002372B0  2C 00 00 00 */	cmpwi r0, 0
/* 8023B654 002372B4  4D 82 00 20 */	beqlr
/* 8023B658 002372B8  3C 80 80 49 */	lis r4, lbl_804967A0@ha
/* 8023B65C 002372BC  88 AD A4 8A */	lbz r5, lbl_8063F74A-_SDA_BASE_(r13)
/* 8023B660 002372C0  38 C0 00 00 */	li r6, 0
/* 8023B664 002372C4  38 84 67 A0 */	addi r4, r4, lbl_804967A0@l
/* 8023B668 002372C8  48 00 00 34 */	b lbl_8023B69C
lbl_8023B66C:
/* 8023B66C 002372CC  54 C0 1D 78 */	rlwinm r0, r6, 3, 0x15, 0x1c
/* 8023B670 002372D0  7C E4 02 14 */	add r7, r4, r0
/* 8023B674 002372D4  7C 04 02 2E */	lhzx r0, r4, r0
/* 8023B678 002372D8  7C 00 18 40 */	cmplw r0, r3
/* 8023B67C 002372DC  41 81 00 1C */	bgt lbl_8023B698
/* 8023B680 002372E0  A0 07 00 02 */	lhz r0, 2(r7)
/* 8023B684 002372E4  7C 00 18 40 */	cmplw r0, r3
/* 8023B688 002372E8  41 80 00 10 */	blt lbl_8023B698
/* 8023B68C 002372EC  81 87 00 04 */	lwz r12, 4(r7)
/* 8023B690 002372F0  7D 89 03 A6 */	mtctr r12
/* 8023B694 002372F4  4E 80 04 20 */	bctr
lbl_8023B698:
/* 8023B698 002372F8  38 C6 00 01 */	addi r6, r6, 1
lbl_8023B69C:
/* 8023B69C 002372FC  54 C0 06 3E */	clrlwi r0, r6, 0x18
/* 8023B6A0 00237300  7C 00 28 40 */	cmplw r0, r5
/* 8023B6A4 00237304  41 80 FF C8 */	blt lbl_8023B66C
/* 8023B6A8 00237308  B0 6D A4 84 */	sth r3, lbl_8063F744-_SDA_BASE_(r13)
/* 8023B6AC 0023730C  4E 80 00 20 */	blr

.global func_8023B6B0
func_8023B6B0:
/* 8023B6B0 00237310  A0 0D A4 80 */	lhz r0, lbl_8063F740-_SDA_BASE_(r13)
/* 8023B6B4 00237314  B0 0D A4 84 */	sth r0, lbl_8063F744-_SDA_BASE_(r13)
/* 8023B6B8 00237318  4E 80 00 20 */	blr

.global func_8023B6BC
func_8023B6BC:
/* 8023B6BC 0023731C  A0 6D A4 88 */	lhz r3, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B6C0 00237320  38 00 00 01 */	li r0, 1
/* 8023B6C4 00237324  28 03 FF FF */	cmplwi r3, 0xffff
/* 8023B6C8 00237328  41 82 00 0C */	beq lbl_8023B6D4
/* 8023B6CC 0023732C  38 03 00 01 */	addi r0, r3, 1
/* 8023B6D0 00237330  54 00 04 3E */	clrlwi r0, r0, 0x10
lbl_8023B6D4:
/* 8023B6D4 00237334  A0 8D A4 7E */	lhz r4, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B6D8 00237338  A0 AD A4 86 */	lhz r5, lbl_8063F746-_SDA_BASE_(r13)
/* 8023B6DC 0023733C  38 64 08 00 */	addi r3, r4, 0x800
/* 8023B6E0 00237340  B0 0D A4 88 */	sth r0, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B6E4 00237344  54 60 04 3E */	clrlwi r0, r3, 0x10
/* 8023B6E8 00237348  7C 00 28 40 */	cmplw r0, r5
/* 8023B6EC 0023734C  B0 8D A4 80 */	sth r4, lbl_8063F740-_SDA_BASE_(r13)
/* 8023B6F0 00237350  B0 6D A4 82 */	sth r3, lbl_8063F742-_SDA_BASE_(r13)
/* 8023B6F4 00237354  4D 80 00 20 */	bltlr
/* 8023B6F8 00237358  7C 05 00 50 */	subf r0, r5, r0
/* 8023B6FC 0023735C  B0 0D A4 82 */	sth r0, lbl_8063F742-_SDA_BASE_(r13)
/* 8023B700 00237360  4E 80 00 20 */	blr

.global func_8023B704
func_8023B704:
/* 8023B704 00237364  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8023B708 00237368  7C 08 02 A6 */	mflr r0
/* 8023B70C 0023736C  3C 80 00 01 */	lis r4, 0x0000E000@ha
/* 8023B710 00237370  90 01 00 14 */	stw r0, 0x14(r1)
/* 8023B714 00237374  38 04 E0 00 */	addi r0, r4, 0x0000E000@l
/* 8023B718 00237378  38 80 00 01 */	li r4, 1
/* 8023B71C 0023737C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8023B720 00237380  3B E0 00 00 */	li r31, 0
/* 8023B724 00237384  B3 ED A4 84 */	sth r31, lbl_8063F744-_SDA_BASE_(r13)
/* 8023B728 00237388  B0 8D A4 7E */	sth r4, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B72C 0023738C  B0 0D A4 86 */	sth r0, lbl_8063F746-_SDA_BASE_(r13)
/* 8023B730 00237390  B3 ED A4 88 */	sth r31, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B734 00237394  4B FF FF 89 */	bl func_8023B6BC
/* 8023B738 00237398  3C 80 80 49 */	lis r4, lbl_804967A0@ha
/* 8023B73C 0023739C  3C 60 80 24 */	lis r3, lbl_8023B64C@ha
/* 8023B740 002373A0  38 84 67 A0 */	addi r4, r4, lbl_804967A0@l
/* 8023B744 002373A4  9B ED A4 8A */	stb r31, lbl_8063F74A-_SDA_BASE_(r13)
/* 8023B748 002373A8  38 63 B6 4C */	addi r3, r3, lbl_8023B64C@l
/* 8023B74C 002373AC  93 E4 00 04 */	stw r31, 4(r4)
/* 8023B750 002373B0  93 E4 00 0C */	stw r31, 0xc(r4)
/* 8023B754 002373B4  93 E4 00 14 */	stw r31, 0x14(r4)
/* 8023B758 002373B8  93 E4 00 1C */	stw r31, 0x1c(r4)
/* 8023B75C 002373BC  48 04 55 85 */	bl GXSetDrawSyncCallback
/* 8023B760 002373C0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8023B764 002373C4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8023B768 002373C8  7C 08 03 A6 */	mtlr r0
/* 8023B76C 002373CC  38 21 00 10 */	addi r1, r1, 0x10
/* 8023B770 002373D0  4E 80 00 20 */	blr

.global func_8023B774
func_8023B774:
/* 8023B774 002373D4  A0 0D A4 7E */	lhz r0, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B778 002373D8  7C 00 20 40 */	cmplw r0, r4
/* 8023B77C 002373DC  40 81 00 1C */	ble lbl_8023B798
/* 8023B780 002373E0  7C 03 20 40 */	cmplw r3, r4
/* 8023B784 002373E4  40 81 00 0C */	ble lbl_8023B790
/* 8023B788 002373E8  7C 03 00 40 */	cmplw r3, r0
/* 8023B78C 002373EC  40 81 00 24 */	ble lbl_8023B7B0
lbl_8023B790:
/* 8023B790 002373F0  38 60 00 01 */	li r3, 1
/* 8023B794 002373F4  4E 80 00 20 */	blr
lbl_8023B798:
/* 8023B798 002373F8  7C 03 00 40 */	cmplw r3, r0
/* 8023B79C 002373FC  40 81 00 14 */	ble lbl_8023B7B0
/* 8023B7A0 00237400  7C 03 20 40 */	cmplw r3, r4
/* 8023B7A4 00237404  41 81 00 0C */	bgt lbl_8023B7B0
/* 8023B7A8 00237408  38 60 00 01 */	li r3, 1
/* 8023B7AC 0023740C  4E 80 00 20 */	blr
lbl_8023B7B0:
/* 8023B7B0 00237410  38 60 00 00 */	li r3, 0
/* 8023B7B4 00237414  4E 80 00 20 */	blr

.global func_8023B7B8
func_8023B7B8:
/* 8023B7B8 00237418  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8023B7BC 0023741C  7C 08 02 A6 */	mflr r0
/* 8023B7C0 00237420  54 65 84 3E */	srwi r5, r3, 0x10
/* 8023B7C4 00237424  90 01 00 14 */	stw r0, 0x14(r1)
/* 8023B7C8 00237428  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8023B7CC 0023742C  54 7F 04 3E */	clrlwi r31, r3, 0x10
/* 8023B7D0 00237430  A0 8D A4 88 */	lhz r4, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B7D4 00237434  7C 04 28 40 */	cmplw r4, r5
/* 8023B7D8 00237438  40 80 00 24 */	bge lbl_8023B7FC
/* 8023B7DC 0023743C  3C 60 00 01 */	lis r3, 0x0000FFFF@ha
/* 8023B7E0 00237440  38 03 FF FF */	addi r0, r3, 0x0000FFFF@l
/* 8023B7E4 00237444  7C 05 00 50 */	subf r0, r5, r0
/* 8023B7E8 00237448  7C 00 22 14 */	add r0, r0, r4
/* 8023B7EC 0023744C  2C 00 00 01 */	cmpwi r0, 1
/* 8023B7F0 00237450  40 81 00 20 */	ble lbl_8023B810
/* 8023B7F4 00237454  38 60 00 01 */	li r3, 1
/* 8023B7F8 00237458  48 00 00 58 */	b lbl_8023B850
lbl_8023B7FC:
/* 8023B7FC 0023745C  7C 05 20 50 */	subf r0, r5, r4
/* 8023B800 00237460  2C 00 00 01 */	cmpwi r0, 1
/* 8023B804 00237464  40 81 00 0C */	ble lbl_8023B810
/* 8023B808 00237468  38 60 00 01 */	li r3, 1
/* 8023B80C 0023746C  48 00 00 44 */	b lbl_8023B850
lbl_8023B810:
/* 8023B810 00237470  A0 8D A4 84 */	lhz r4, lbl_8063F744-_SDA_BASE_(r13)
/* 8023B814 00237474  7F E3 FB 78 */	mr r3, r31
/* 8023B818 00237478  4B FF FF 5D */	bl func_8023B774
/* 8023B81C 0023747C  2C 03 00 00 */	cmpwi r3, 0
/* 8023B820 00237480  41 82 00 0C */	beq lbl_8023B82C
/* 8023B824 00237484  38 60 00 01 */	li r3, 1
/* 8023B828 00237488  48 00 00 28 */	b lbl_8023B850
lbl_8023B82C:
/* 8023B82C 0023748C  48 04 52 D5 */	bl GXReadDrawSync
/* 8023B830 00237490  A0 0D A4 86 */	lhz r0, lbl_8063F746-_SDA_BASE_(r13)
/* 8023B834 00237494  54 64 04 3E */	clrlwi r4, r3, 0x10
/* 8023B838 00237498  7C 04 00 40 */	cmplw r4, r0
/* 8023B83C 0023749C  41 80 00 0C */	blt lbl_8023B848
/* 8023B840 002374A0  38 60 00 00 */	li r3, 0
/* 8023B844 002374A4  48 00 00 0C */	b lbl_8023B850
lbl_8023B848:
/* 8023B848 002374A8  7F E3 FB 78 */	mr r3, r31
/* 8023B84C 002374AC  4B FF FF 29 */	bl func_8023B774
lbl_8023B850:
/* 8023B850 002374B0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8023B854 002374B4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8023B858 002374B8  7C 08 03 A6 */	mtlr r0
/* 8023B85C 002374BC  38 21 00 10 */	addi r1, r1, 0x10
/* 8023B860 002374C0  4E 80 00 20 */	blr

.global func_8023B864
func_8023B864:
/* 8023B864 002374C4  2C 04 00 00 */	cmpwi r4, 0
/* 8023B868 002374C8  41 82 00 10 */	beq lbl_8023B878
/* 8023B86C 002374CC  88 03 17 18 */	lbz r0, 0x1718(r3)
/* 8023B870 002374D0  2C 00 00 00 */	cmpwi r0, 0
/* 8023B874 002374D4  41 82 00 0C */	beq lbl_8023B880
lbl_8023B878:
/* 8023B878 002374D8  38 60 00 01 */	li r3, 1
/* 8023B87C 002374DC  4E 80 00 20 */	blr
lbl_8023B880:
/* 8023B880 002374E0  7C 83 23 78 */	mr r3, r4
/* 8023B884 002374E4  4B FF FF 34 */	b func_8023B7B8
/* 8023B888 002374E8  4E 80 00 20 */	blr

.global func_8023B88C
func_8023B88C:
/* 8023B88C 002374EC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8023B890 002374F0  7C 08 02 A6 */	mflr r0
/* 8023B894 002374F4  2C 04 00 00 */	cmpwi r4, 0
/* 8023B898 002374F8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8023B89C 002374FC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8023B8A0 00237500  7C 9F 23 78 */	mr r31, r4
/* 8023B8A4 00237504  93 C1 00 18 */	stw r30, 0x18(r1)
/* 8023B8A8 00237508  7C 7E 1B 78 */	mr r30, r3
/* 8023B8AC 0023750C  41 82 00 84 */	beq lbl_8023B930
/* 8023B8B0 00237510  88 03 17 18 */	lbz r0, 0x1718(r3)
/* 8023B8B4 00237514  2C 00 00 00 */	cmpwi r0, 0
/* 8023B8B8 00237518  41 82 00 08 */	beq lbl_8023B8C0
/* 8023B8BC 0023751C  48 00 00 74 */	b lbl_8023B930
lbl_8023B8C0:
/* 8023B8C0 00237520  38 81 00 0C */	addi r4, r1, 0xc
/* 8023B8C4 00237524  4B FF 58 E9 */	bl func_802311AC
/* 8023B8C8 00237528  48 00 00 4C */	b lbl_8023B914
lbl_8023B8CC:
/* 8023B8CC 0023752C  7F C3 F3 78 */	mr r3, r30
/* 8023B8D0 00237530  38 81 00 0C */	addi r4, r1, 0xc
/* 8023B8D4 00237534  4B FF 58 E9 */	bl func_802311BC
/* 8023B8D8 00237538  88 1E 17 18 */	lbz r0, 0x1718(r30)
/* 8023B8DC 0023753C  2C 00 00 00 */	cmpwi r0, 0
/* 8023B8E0 00237540  40 82 00 44 */	bne lbl_8023B924
/* 8023B8E4 00237544  88 1E 17 19 */	lbz r0, 0x1719(r30)
/* 8023B8E8 00237548  2C 00 00 00 */	cmpwi r0, 0
/* 8023B8EC 0023754C  40 82 00 38 */	bne lbl_8023B924
/* 8023B8F0 00237550  38 61 00 08 */	addi r3, r1, 8
/* 8023B8F4 00237554  38 A1 00 09 */	addi r5, r1, 9
/* 8023B8F8 00237558  7C 64 1B 78 */	mr r4, r3
/* 8023B8FC 0023755C  7C 66 1B 78 */	mr r6, r3
/* 8023B900 00237560  7C 67 1B 78 */	mr r7, r3
/* 8023B904 00237564  48 04 37 45 */	bl GXGetGPStatus
/* 8023B908 00237568  88 01 00 09 */	lbz r0, 9(r1)
/* 8023B90C 0023756C  28 00 00 01 */	cmplwi r0, 1
/* 8023B910 00237570  41 82 00 14 */	beq lbl_8023B924
lbl_8023B914:
/* 8023B914 00237574  7F E3 FB 78 */	mr r3, r31
/* 8023B918 00237578  4B FF FE A1 */	bl func_8023B7B8
/* 8023B91C 0023757C  2C 03 00 00 */	cmpwi r3, 0
/* 8023B920 00237580  41 82 FF AC */	beq lbl_8023B8CC
lbl_8023B924:
/* 8023B924 00237584  7F C3 F3 78 */	mr r3, r30
/* 8023B928 00237588  38 81 00 0C */	addi r4, r1, 0xc
/* 8023B92C 0023758C  4B FF 59 31 */	bl func_8023125C
lbl_8023B930:
/* 8023B930 00237590  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8023B934 00237594  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8023B938 00237598  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8023B93C 0023759C  7C 08 03 A6 */	mtlr r0
/* 8023B940 002375A0  38 21 00 20 */	addi r1, r1, 0x20
/* 8023B944 002375A4  4E 80 00 20 */	blr

.global func_8023B948
func_8023B948:
/* 8023B948 002375A8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8023B94C 002375AC  7C 08 02 A6 */	mflr r0
/* 8023B950 002375B0  90 01 00 14 */	stw r0, 0x14(r1)
/* 8023B954 002375B4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8023B958 002375B8  88 03 17 18 */	lbz r0, 0x1718(r3)
/* 8023B95C 002375BC  2C 00 00 00 */	cmpwi r0, 0
/* 8023B960 002375C0  41 82 00 0C */	beq lbl_8023B96C
/* 8023B964 002375C4  38 60 00 00 */	li r3, 0
/* 8023B968 002375C8  48 00 00 58 */	b lbl_8023B9C0
lbl_8023B96C:
/* 8023B96C 002375CC  A0 6D A4 82 */	lhz r3, lbl_8063F742-_SDA_BASE_(r13)
/* 8023B970 002375D0  A3 ED A4 7E */	lhz r31, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B974 002375D4  7C 1F 18 40 */	cmplw r31, r3
/* 8023B978 002375D8  40 82 00 10 */	bne lbl_8023B988
/* 8023B97C 002375DC  A0 0D A4 88 */	lhz r0, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B980 002375E0  50 03 80 1E */	rlwimi r3, r0, 0x10, 0, 0xf
/* 8023B984 002375E4  48 00 00 3C */	b lbl_8023B9C0
lbl_8023B988:
/* 8023B988 002375E8  7F E3 FB 78 */	mr r3, r31
/* 8023B98C 002375EC  48 04 50 C1 */	bl GXSetDrawSync
/* 8023B990 002375F0  A0 6D A4 7E */	lhz r3, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B994 002375F4  A0 0D A4 86 */	lhz r0, lbl_8063F746-_SDA_BASE_(r13)
/* 8023B998 002375F8  38 83 00 01 */	addi r4, r3, 1
/* 8023B99C 002375FC  54 83 04 3E */	clrlwi r3, r4, 0x10
/* 8023B9A0 00237600  B0 8D A4 7E */	sth r4, lbl_8063F73E-_SDA_BASE_(r13)
/* 8023B9A4 00237604  7C 03 00 40 */	cmplw r3, r0
/* 8023B9A8 00237608  41 80 00 0C */	blt lbl_8023B9B4
/* 8023B9AC 0023760C  38 00 00 01 */	li r0, 1
/* 8023B9B0 00237610  B0 0D A4 7E */	sth r0, lbl_8063F73E-_SDA_BASE_(r13)
lbl_8023B9B4:
/* 8023B9B4 00237614  A0 0D A4 88 */	lhz r0, lbl_8063F748-_SDA_BASE_(r13)
/* 8023B9B8 00237618  7F E3 FB 78 */	mr r3, r31
/* 8023B9BC 0023761C  50 03 80 1E */	rlwimi r3, r0, 0x10, 0, 0xf
lbl_8023B9C0:
/* 8023B9C0 00237620  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8023B9C4 00237624  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8023B9C8 00237628  7C 08 03 A6 */	mtlr r0
/* 8023B9CC 0023762C  38 21 00 10 */	addi r1, r1, 0x10
/* 8023B9D0 00237630  4E 80 00 20 */	blr

.global func_8023B9D4
func_8023B9D4:
/* 8023B9D4 00237634  38 A0 00 01 */	li r5, 1
/* 8023B9D8 00237638  38 6D A4 78 */	addi r3, r13, lbl_8063F738-_SDA_BASE_
/* 8023B9DC 0023763C  38 80 00 04 */	li r4, 4
/* 8023B9E0 00237640  38 00 00 00 */	li r0, 0
/* 8023B9E4 00237644  98 AD A4 78 */	stb r5, lbl_8063F738-_SDA_BASE_(r13)
/* 8023B9E8 00237648  B0 83 00 02 */	sth r4, 2(r3)
/* 8023B9EC 0023764C  98 03 00 04 */	stb r0, 4(r3)
/* 8023B9F0 00237650  4E 80 00 20 */	blr