summaryrefslogtreecommitdiff
path: root/asm/SDK/GX/GXGeometry.s
blob: bfda50117ef5605fced856e9d6a843df0b2c5580 (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
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
.include "macros.inc"

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

.global __GXSetDirtyState
__GXSetDirtyState:
/* 80280ED0 0027CB30  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80280ED4 0027CB34  7C 08 02 A6 */	mflr r0
/* 80280ED8 0027CB38  90 01 00 14 */	stw r0, 0x14(r1)
/* 80280EDC 0027CB3C  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80280EE0 0027CB40  83 E2 A0 D0 */	lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280EE4 0027CB44  93 C1 00 08 */	stw r30, 8(r1)
/* 80280EE8 0027CB48  83 DF 05 FC */	lwz r30, 0x5fc(r31)
/* 80280EEC 0027CB4C  57 C0 07 FF */	clrlwi. r0, r30, 0x1f
/* 80280EF0 0027CB50  41 82 00 08 */	beq lbl_80280EF8
/* 80280EF4 0027CB54  48 00 1F B5 */	bl __GXSetSUTexRegs
lbl_80280EF8:
/* 80280EF8 0027CB58  57 C0 07 BD */	rlwinm. r0, r30, 0, 0x1e, 0x1e
/* 80280EFC 0027CB5C  41 82 00 08 */	beq lbl_80280F04
/* 80280F00 0027CB60  48 00 2B E9 */	bl __GXUpdateBPMask
lbl_80280F04:
/* 80280F04 0027CB64  57 C0 07 7B */	rlwinm. r0, r30, 0, 0x1d, 0x1d
/* 80280F08 0027CB68  41 82 00 24 */	beq lbl_80280F2C
/* 80280F0C 0027CB6C  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80280F10 0027CB70  38 00 00 61 */	li r0, 0x61
/* 80280F14 0027CB74  98 04 80 00 */	stb r0, 0xCC008000@l(r4)
/* 80280F18 0027CB78  38 00 00 00 */	li r0, 0
/* 80280F1C 0027CB7C  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 80280F20 0027CB80  80 65 02 54 */	lwz r3, 0x254(r5)
/* 80280F24 0027CB84  90 64 80 00 */	stw r3, -0x8000(r4)
/* 80280F28 0027CB88  B0 05 00 02 */	sth r0, 2(r5)
lbl_80280F2C:
/* 80280F2C 0027CB8C  57 C0 07 39 */	rlwinm. r0, r30, 0, 0x1c, 0x1c
/* 80280F30 0027CB90  41 82 00 08 */	beq lbl_80280F38
/* 80280F34 0027CB94  4B FF E9 31 */	bl __GXSetVCD
lbl_80280F38:
/* 80280F38 0027CB98  57 C0 06 F7 */	rlwinm. r0, r30, 0, 0x1b, 0x1b
/* 80280F3C 0027CB9C  41 82 00 08 */	beq lbl_80280F44
/* 80280F40 0027CBA0  4B FF F0 DD */	bl __GXSetVAT
lbl_80280F44:
/* 80280F44 0027CBA4  57 C0 06 F9 */	rlwinm. r0, r30, 0, 0x1b, 0x1c
/* 80280F48 0027CBA8  41 82 00 08 */	beq lbl_80280F50
/* 80280F4C 0027CBAC  4B FF E9 C9 */	bl __GXCalculateVLim
lbl_80280F50:
/* 80280F50 0027CBB0  57 DE 00 2F */	rlwinm. r30, r30, 0, 0, 0x17
/* 80280F54 0027CBB4  41 82 01 D4 */	beq lbl_80281128
/* 80280F58 0027CBB8  57 C4 05 2F */	rlwinm. r4, r30, 0, 0x14, 0x17
/* 80280F5C 0027CBBC  41 82 00 94 */	beq lbl_80280FF0
/* 80280F60 0027CBC0  54 80 05 EF */	rlwinm. r0, r4, 0, 0x17, 0x17
/* 80280F64 0027CBC4  41 82 00 20 */	beq lbl_80280F84
/* 80280F68 0027CBC8  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280F6C 0027CBCC  38 00 00 10 */	li r0, 0x10
/* 80280F70 0027CBD0  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80280F74 0027CBD4  38 00 10 0A */	li r0, 0x100a
/* 80280F78 0027CBD8  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280F7C 0027CBDC  80 1F 00 A8 */	lwz r0, 0xa8(r31)
/* 80280F80 0027CBE0  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80280F84:
/* 80280F84 0027CBE4  54 80 05 AD */	rlwinm. r0, r4, 0, 0x16, 0x16
/* 80280F88 0027CBE8  41 82 00 20 */	beq lbl_80280FA8
/* 80280F8C 0027CBEC  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280F90 0027CBF0  38 00 00 10 */	li r0, 0x10
/* 80280F94 0027CBF4  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80280F98 0027CBF8  38 00 10 0B */	li r0, 0x100b
/* 80280F9C 0027CBFC  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280FA0 0027CC00  80 1F 00 AC */	lwz r0, 0xac(r31)
/* 80280FA4 0027CC04  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80280FA8:
/* 80280FA8 0027CC08  54 80 05 6B */	rlwinm. r0, r4, 0, 0x15, 0x15
/* 80280FAC 0027CC0C  41 82 00 20 */	beq lbl_80280FCC
/* 80280FB0 0027CC10  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280FB4 0027CC14  38 00 00 10 */	li r0, 0x10
/* 80280FB8 0027CC18  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80280FBC 0027CC1C  38 00 10 0C */	li r0, 0x100c
/* 80280FC0 0027CC20  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280FC4 0027CC24  80 1F 00 B0 */	lwz r0, 0xb0(r31)
/* 80280FC8 0027CC28  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80280FCC:
/* 80280FCC 0027CC2C  54 80 05 29 */	rlwinm. r0, r4, 0, 0x14, 0x14
/* 80280FD0 0027CC30  41 82 00 20 */	beq lbl_80280FF0
/* 80280FD4 0027CC34  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80280FD8 0027CC38  38 00 00 10 */	li r0, 0x10
/* 80280FDC 0027CC3C  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80280FE0 0027CC40  38 00 10 0D */	li r0, 0x100d
/* 80280FE4 0027CC44  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80280FE8 0027CC48  80 1F 00 B4 */	lwz r0, 0xb4(r31)
/* 80280FEC 0027CC4C  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80280FF0:
/* 80280FF0 0027CC50  57 C7 01 CE */	rlwinm r7, r30, 0, 7, 7
/* 80280FF4 0027CC54  53 C7 04 27 */	rlwimi. r7, r30, 0, 0x10, 0x13
/* 80280FF8 0027CC58  41 82 00 70 */	beq lbl_80281068
/* 80280FFC 0027CC5C  54 E0 01 CF */	rlwinm. r0, r7, 0, 7, 7
/* 80281000 0027CC60  38 C0 10 0E */	li r6, 0x100e
/* 80281004 0027CC64  41 82 00 24 */	beq lbl_80281028
/* 80281008 0027CC68  80 BF 02 54 */	lwz r5, 0x254(r31)
/* 8028100C 0027CC6C  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281010 0027CC70  38 80 00 10 */	li r4, 0x10
/* 80281014 0027CC74  38 00 10 09 */	li r0, 0x1009
/* 80281018 0027CC78  98 83 80 00 */	stb r4, 0xCC008000@l(r3)
/* 8028101C 0027CC7C  54 A4 E7 7E */	rlwinm r4, r5, 0x1c, 0x1d, 0x1f
/* 80281020 0027CC80  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80281024 0027CC84  90 83 80 00 */	stw r4, -0x8000(r3)
lbl_80281028:
/* 80281028 0027CC88  7F E5 FB 78 */	mr r5, r31
/* 8028102C 0027CC8C  54 E7 A7 3E */	rlwinm r7, r7, 0x14, 0x1c, 0x1f
/* 80281030 0027CC90  38 80 00 10 */	li r4, 0x10
/* 80281034 0027CC94  3C 60 CC 01 */	lis r3, 0xcc01
/* 80281038 0027CC98  48 00 00 28 */	b lbl_80281060
lbl_8028103C:
/* 8028103C 0027CC9C  54 E0 07 FF */	clrlwi. r0, r7, 0x1f
/* 80281040 0027CCA0  41 82 00 14 */	beq lbl_80281054
/* 80281044 0027CCA4  98 83 80 00 */	stb r4, -0x8000(r3)
/* 80281048 0027CCA8  90 C3 80 00 */	stw r6, -0x8000(r3)
/* 8028104C 0027CCAC  80 05 00 B8 */	lwz r0, 0xb8(r5)
/* 80281050 0027CCB0  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80281054:
/* 80281054 0027CCB4  54 E7 F8 7E */	srwi r7, r7, 1
/* 80281058 0027CCB8  38 A5 00 04 */	addi r5, r5, 4
/* 8028105C 0027CCBC  38 C6 00 01 */	addi r6, r6, 1
lbl_80281060:
/* 80281060 0027CCC0  2C 07 00 00 */	cmpwi r7, 0
/* 80281064 0027CCC4  40 82 FF D8 */	bne lbl_8028103C
lbl_80281068:
/* 80281068 0027CCC8  77 C8 02 FF */	andis. r8, r30, 0x2ff
/* 8028106C 0027CCCC  41 82 00 84 */	beq lbl_802810F0
/* 80281070 0027CCD0  55 00 01 8D */	rlwinm. r0, r8, 0, 6, 6
/* 80281074 0027CCD4  38 C0 10 40 */	li r6, 0x1040
/* 80281078 0027CCD8  41 82 00 24 */	beq lbl_8028109C
/* 8028107C 0027CCDC  80 BF 02 54 */	lwz r5, 0x254(r31)
/* 80281080 0027CCE0  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281084 0027CCE4  38 80 00 10 */	li r4, 0x10
/* 80281088 0027CCE8  38 00 10 3F */	li r0, 0x103f
/* 8028108C 0027CCEC  98 83 80 00 */	stb r4, 0xCC008000@l(r3)
/* 80281090 0027CCF0  54 A4 07 3E */	clrlwi r4, r5, 0x1c
/* 80281094 0027CCF4  90 03 80 00 */	stw r0, -0x8000(r3)
/* 80281098 0027CCF8  90 83 80 00 */	stw r4, -0x8000(r3)
lbl_8028109C:
/* 8028109C 0027CCFC  7F E7 FB 78 */	mr r7, r31
/* 802810A0 0027CD00  55 08 86 3E */	rlwinm r8, r8, 0x10, 0x18, 0x1f
/* 802810A4 0027CD04  38 80 00 10 */	li r4, 0x10
/* 802810A8 0027CD08  3C 60 CC 01 */	lis r3, 0xcc01
/* 802810AC 0027CD0C  48 00 00 3C */	b lbl_802810E8
lbl_802810B0:
/* 802810B0 0027CD10  55 00 07 FF */	clrlwi. r0, r8, 0x1f
/* 802810B4 0027CD14  38 A6 00 10 */	addi r5, r6, 0x10
/* 802810B8 0027CD18  41 82 00 24 */	beq lbl_802810DC
/* 802810BC 0027CD1C  98 83 80 00 */	stb r4, -0x8000(r3)
/* 802810C0 0027CD20  90 C3 80 00 */	stw r6, -0x8000(r3)
/* 802810C4 0027CD24  80 07 00 C8 */	lwz r0, 0xc8(r7)
/* 802810C8 0027CD28  90 03 80 00 */	stw r0, -0x8000(r3)
/* 802810CC 0027CD2C  98 83 80 00 */	stb r4, -0x8000(r3)
/* 802810D0 0027CD30  90 A3 80 00 */	stw r5, -0x8000(r3)
/* 802810D4 0027CD34  80 07 00 E8 */	lwz r0, 0xe8(r7)
/* 802810D8 0027CD38  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_802810DC:
/* 802810DC 0027CD3C  55 08 F8 7E */	srwi r8, r8, 1
/* 802810E0 0027CD40  38 C6 00 01 */	addi r6, r6, 1
/* 802810E4 0027CD44  38 E7 00 04 */	addi r7, r7, 4
lbl_802810E8:
/* 802810E8 0027CD48  2C 08 00 00 */	cmpwi r8, 0
/* 802810EC 0027CD4C  40 82 FF C4 */	bne lbl_802810B0
lbl_802810F0:
/* 802810F0 0027CD50  57 C0 01 4B */	rlwinm. r0, r30, 0, 5, 5
/* 802810F4 0027CD54  41 82 00 14 */	beq lbl_80281108
/* 802810F8 0027CD58  38 60 00 00 */	li r3, 0
/* 802810FC 0027CD5C  48 00 5C CD */	bl __GXSetMatrixIndex
/* 80281100 0027CD60  38 60 00 05 */	li r3, 5
/* 80281104 0027CD64  48 00 5C C5 */	bl __GXSetMatrixIndex
lbl_80281108:
/* 80281108 0027CD68  57 C0 00 C7 */	rlwinm. r0, r30, 0, 3, 3
/* 8028110C 0027CD6C  41 82 00 08 */	beq lbl_80281114
/* 80281110 0027CD70  48 00 5A F5 */	bl __GXSetViewport
lbl_80281114:
/* 80281114 0027CD74  57 C0 01 09 */	rlwinm. r0, r30, 0, 4, 4
/* 80281118 0027CD78  41 82 00 08 */	beq lbl_80281120
/* 8028111C 0027CD7C  48 00 58 79 */	bl __GXSetProjection
lbl_80281120:
/* 80281120 0027CD80  38 00 00 01 */	li r0, 1
/* 80281124 0027CD84  B0 1F 00 02 */	sth r0, 2(r31)
lbl_80281128:
/* 80281128 0027CD88  38 00 00 00 */	li r0, 0
/* 8028112C 0027CD8C  90 1F 05 FC */	stw r0, 0x5fc(r31)
/* 80281130 0027CD90  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80281134 0027CD94  83 C1 00 08 */	lwz r30, 8(r1)
/* 80281138 0027CD98  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8028113C 0027CD9C  7C 08 03 A6 */	mtlr r0
/* 80281140 0027CDA0  38 21 00 10 */	addi r1, r1, 0x10
/* 80281144 0027CDA4  4E 80 00 20 */	blr

.global GXBegin
GXBegin:
/* 80281148 0027CDA8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 8028114C 0027CDAC  7C 08 02 A6 */	mflr r0
/* 80281150 0027CDB0  90 01 00 24 */	stw r0, 0x24(r1)
/* 80281154 0027CDB4  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80281158 0027CDB8  83 E2 A0 D0 */	lwz r31, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028115C 0027CDBC  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80281160 0027CDC0  7C BE 2B 78 */	mr r30, r5
/* 80281164 0027CDC4  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80281168 0027CDC8  7C 9D 23 78 */	mr r29, r4
/* 8028116C 0027CDCC  93 81 00 10 */	stw r28, 0x10(r1)
/* 80281170 0027CDD0  7C 7C 1B 78 */	mr r28, r3
/* 80281174 0027CDD4  80 1F 05 FC */	lwz r0, 0x5fc(r31)
/* 80281178 0027CDD8  2C 00 00 00 */	cmpwi r0, 0
/* 8028117C 0027CDDC  41 82 00 08 */	beq lbl_80281184
/* 80281180 0027CDE0  4B FF FD 51 */	bl __GXSetDirtyState
lbl_80281184:
/* 80281184 0027CDE4  80 1F 00 00 */	lwz r0, 0(r31)
/* 80281188 0027CDE8  2C 00 00 00 */	cmpwi r0, 0
/* 8028118C 0027CDEC  40 82 00 D8 */	bne lbl_80281264
/* 80281190 0027CDF0  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281194 0027CDF4  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281198 0027CDF8  38 00 00 98 */	li r0, 0x98
/* 8028119C 0027CDFC  38 C0 00 00 */	li r6, 0
/* 802811A0 0027CE00  A0 A7 00 04 */	lhz r5, 4(r7)
/* 802811A4 0027CE04  A0 87 00 06 */	lhz r4, 6(r7)
/* 802811A8 0027CE08  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 802811AC 0027CE0C  7C A5 21 D7 */	mullw. r5, r5, r4
/* 802811B0 0027CE10  A0 07 00 04 */	lhz r0, 4(r7)
/* 802811B4 0027CE14  B0 03 80 00 */	sth r0, -0x8000(r3)
/* 802811B8 0027CE18  41 82 00 A4 */	beq lbl_8028125C
/* 802811BC 0027CE1C  38 65 00 03 */	addi r3, r5, 3
/* 802811C0 0027CE20  38 E5 FF E0 */	addi r7, r5, -32
/* 802811C4 0027CE24  54 60 F0 BE */	srwi r0, r3, 2
/* 802811C8 0027CE28  28 00 00 08 */	cmplwi r0, 8
/* 802811CC 0027CE2C  40 81 00 68 */	ble lbl_80281234
/* 802811D0 0027CE30  28 03 00 03 */	cmplwi r3, 3
/* 802811D4 0027CE34  38 00 00 00 */	li r0, 0
/* 802811D8 0027CE38  41 80 00 10 */	blt lbl_802811E8
/* 802811DC 0027CE3C  7C 05 18 40 */	cmplw r5, r3
/* 802811E0 0027CE40  41 81 00 08 */	bgt lbl_802811E8
/* 802811E4 0027CE44  38 00 00 01 */	li r0, 1
lbl_802811E8:
/* 802811E8 0027CE48  2C 00 00 00 */	cmpwi r0, 0
/* 802811EC 0027CE4C  41 82 00 48 */	beq lbl_80281234
/* 802811F0 0027CE50  38 07 00 1F */	addi r0, r7, 0x1f
/* 802811F4 0027CE54  38 80 00 00 */	li r4, 0
/* 802811F8 0027CE58  54 00 D9 7E */	srwi r0, r0, 5
/* 802811FC 0027CE5C  3C 60 CC 01 */	lis r3, 0xcc01
/* 80281200 0027CE60  7C 09 03 A6 */	mtctr r0
/* 80281204 0027CE64  28 07 00 00 */	cmplwi r7, 0
/* 80281208 0027CE68  40 81 00 2C */	ble lbl_80281234
lbl_8028120C:
/* 8028120C 0027CE6C  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281210 0027CE70  38 C6 00 20 */	addi r6, r6, 0x20
/* 80281214 0027CE74  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281218 0027CE78  90 83 80 00 */	stw r4, -0x8000(r3)
/* 8028121C 0027CE7C  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281220 0027CE80  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281224 0027CE84  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281228 0027CE88  90 83 80 00 */	stw r4, -0x8000(r3)
/* 8028122C 0027CE8C  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281230 0027CE90  42 00 FF DC */	bdnz lbl_8028120C
lbl_80281234:
/* 80281234 0027CE94  38 05 00 03 */	addi r0, r5, 3
/* 80281238 0027CE98  38 80 00 00 */	li r4, 0
/* 8028123C 0027CE9C  7C 06 00 50 */	subf r0, r6, r0
/* 80281240 0027CEA0  3C 60 CC 01 */	lis r3, 0xcc01
/* 80281244 0027CEA4  54 00 F0 BE */	srwi r0, r0, 2
/* 80281248 0027CEA8  7C 09 03 A6 */	mtctr r0
/* 8028124C 0027CEAC  7C 06 28 40 */	cmplw r6, r5
/* 80281250 0027CEB0  40 80 00 0C */	bge lbl_8028125C
lbl_80281254:
/* 80281254 0027CEB4  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281258 0027CEB8  42 00 FF FC */	bdnz lbl_80281254
lbl_8028125C:
/* 8028125C 0027CEBC  38 00 00 01 */	li r0, 1
/* 80281260 0027CEC0  B0 1F 00 02 */	sth r0, 2(r31)
lbl_80281264:
/* 80281264 0027CEC4  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80281268 0027CEC8  7F A0 E3 78 */	or r0, r29, r28
/* 8028126C 0027CECC  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 80281270 0027CED0  B3 C3 80 00 */	sth r30, -0x8000(r3)
/* 80281274 0027CED4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80281278 0027CED8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8028127C 0027CEDC  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80281280 0027CEE0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80281284 0027CEE4  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80281288 0027CEE8  7C 08 03 A6 */	mtlr r0
/* 8028128C 0027CEEC  38 21 00 20 */	addi r1, r1, 0x20
/* 80281290 0027CEF0  4E 80 00 20 */	blr

.global __GXSendFlushPrim
__GXSendFlushPrim:
/* 80281294 0027CEF4  80 C2 A0 D0 */	lwz r6, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281298 0027CEF8  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 8028129C 0027CEFC  38 00 00 98 */	li r0, 0x98
/* 802812A0 0027CF00  38 E0 00 00 */	li r7, 0
/* 802812A4 0027CF04  A0 A6 00 04 */	lhz r5, 4(r6)
/* 802812A8 0027CF08  A0 86 00 06 */	lhz r4, 6(r6)
/* 802812AC 0027CF0C  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 802812B0 0027CF10  7D 05 21 D7 */	mullw. r8, r5, r4
/* 802812B4 0027CF14  A0 06 00 04 */	lhz r0, 4(r6)
/* 802812B8 0027CF18  B0 03 80 00 */	sth r0, -0x8000(r3)
/* 802812BC 0027CF1C  41 82 00 A4 */	beq lbl_80281360
/* 802812C0 0027CF20  38 68 00 03 */	addi r3, r8, 3
/* 802812C4 0027CF24  38 A8 FF E0 */	addi r5, r8, -32
/* 802812C8 0027CF28  54 60 F0 BE */	srwi r0, r3, 2
/* 802812CC 0027CF2C  28 00 00 08 */	cmplwi r0, 8
/* 802812D0 0027CF30  40 81 00 68 */	ble lbl_80281338
/* 802812D4 0027CF34  28 03 00 03 */	cmplwi r3, 3
/* 802812D8 0027CF38  38 00 00 00 */	li r0, 0
/* 802812DC 0027CF3C  41 80 00 10 */	blt lbl_802812EC
/* 802812E0 0027CF40  7C 08 18 40 */	cmplw r8, r3
/* 802812E4 0027CF44  41 81 00 08 */	bgt lbl_802812EC
/* 802812E8 0027CF48  38 00 00 01 */	li r0, 1
lbl_802812EC:
/* 802812EC 0027CF4C  2C 00 00 00 */	cmpwi r0, 0
/* 802812F0 0027CF50  41 82 00 48 */	beq lbl_80281338
/* 802812F4 0027CF54  38 05 00 1F */	addi r0, r5, 0x1f
/* 802812F8 0027CF58  38 80 00 00 */	li r4, 0
/* 802812FC 0027CF5C  54 00 D9 7E */	srwi r0, r0, 5
/* 80281300 0027CF60  3C 60 CC 01 */	lis r3, 0xcc01
/* 80281304 0027CF64  7C 09 03 A6 */	mtctr r0
/* 80281308 0027CF68  28 05 00 00 */	cmplwi r5, 0
/* 8028130C 0027CF6C  40 81 00 2C */	ble lbl_80281338
lbl_80281310:
/* 80281310 0027CF70  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281314 0027CF74  38 E7 00 20 */	addi r7, r7, 0x20
/* 80281318 0027CF78  90 83 80 00 */	stw r4, -0x8000(r3)
/* 8028131C 0027CF7C  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281320 0027CF80  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281324 0027CF84  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281328 0027CF88  90 83 80 00 */	stw r4, -0x8000(r3)
/* 8028132C 0027CF8C  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281330 0027CF90  90 83 80 00 */	stw r4, -0x8000(r3)
/* 80281334 0027CF94  42 00 FF DC */	bdnz lbl_80281310
lbl_80281338:
/* 80281338 0027CF98  38 08 00 03 */	addi r0, r8, 3
/* 8028133C 0027CF9C  38 80 00 00 */	li r4, 0
/* 80281340 0027CFA0  7C 07 00 50 */	subf r0, r7, r0
/* 80281344 0027CFA4  3C 60 CC 01 */	lis r3, 0xcc01
/* 80281348 0027CFA8  54 00 F0 BE */	srwi r0, r0, 2
/* 8028134C 0027CFAC  7C 09 03 A6 */	mtctr r0
/* 80281350 0027CFB0  7C 07 40 40 */	cmplw r7, r8
/* 80281354 0027CFB4  40 80 00 0C */	bge lbl_80281360
lbl_80281358:
/* 80281358 0027CFB8  90 83 80 00 */	stw r4, -0x8000(r3)
/* 8028135C 0027CFBC  42 00 FF FC */	bdnz lbl_80281358
lbl_80281360:
/* 80281360 0027CFC0  38 00 00 01 */	li r0, 1
/* 80281364 0027CFC4  B0 06 00 02 */	sth r0, 2(r6)
/* 80281368 0027CFC8  4E 80 00 20 */	blr

.global GXSetLineWidth
GXSetLineWidth:
/* 8028136C 0027CFCC  81 02 A0 D0 */	lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281370 0027CFD0  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80281374 0027CFD4  38 C0 00 61 */	li r6, 0x61
/* 80281378 0027CFD8  38 00 00 00 */	li r0, 0
/* 8028137C 0027CFDC  80 E8 00 7C */	lwz r7, 0x7c(r8)
/* 80281380 0027CFE0  50 67 06 3E */	rlwimi r7, r3, 0, 0x18, 0x1f
/* 80281384 0027CFE4  50 87 83 5E */	rlwimi r7, r4, 0x10, 0xd, 0xf
/* 80281388 0027CFE8  90 E8 00 7C */	stw r7, 0x7c(r8)
/* 8028138C 0027CFEC  98 C5 80 00 */	stb r6, 0xCC008000@l(r5)
/* 80281390 0027CFF0  80 68 00 7C */	lwz r3, 0x7c(r8)
/* 80281394 0027CFF4  90 65 80 00 */	stw r3, -0x8000(r5)
/* 80281398 0027CFF8  B0 08 00 02 */	sth r0, 2(r8)
/* 8028139C 0027CFFC  4E 80 00 20 */	blr

.global GXSetPointSize
GXSetPointSize:
/* 802813A0 0027D000  81 02 A0 D0 */	lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
/* 802813A4 0027D004  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 802813A8 0027D008  38 C0 00 61 */	li r6, 0x61
/* 802813AC 0027D00C  38 00 00 00 */	li r0, 0
/* 802813B0 0027D010  80 E8 00 7C */	lwz r7, 0x7c(r8)
/* 802813B4 0027D014  50 67 44 2E */	rlwimi r7, r3, 8, 0x10, 0x17
/* 802813B8 0027D018  50 87 9A 98 */	rlwimi r7, r4, 0x13, 0xa, 0xc
/* 802813BC 0027D01C  90 E8 00 7C */	stw r7, 0x7c(r8)
/* 802813C0 0027D020  98 C5 80 00 */	stb r6, 0xCC008000@l(r5)
/* 802813C4 0027D024  80 68 00 7C */	lwz r3, 0x7c(r8)
/* 802813C8 0027D028  90 65 80 00 */	stw r3, -0x8000(r5)
/* 802813CC 0027D02C  B0 08 00 02 */	sth r0, 2(r8)
/* 802813D0 0027D030  4E 80 00 20 */	blr

.global GXEnableTexOffsets
GXEnableTexOffsets:
/* 802813D4 0027D034  81 22 A0 D0 */	lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
/* 802813D8 0027D038  54 60 10 3A */	slwi r0, r3, 2
/* 802813DC 0027D03C  3C C0 CC 01 */	lis r6, 0xCC008000@ha
/* 802813E0 0027D040  38 60 00 61 */	li r3, 0x61
/* 802813E4 0027D044  7D 09 02 14 */	add r8, r9, r0
/* 802813E8 0027D048  38 00 00 00 */	li r0, 0
/* 802813EC 0027D04C  80 E8 01 08 */	lwz r7, 0x108(r8)
/* 802813F0 0027D050  50 87 93 5A */	rlwimi r7, r4, 0x12, 0xd, 0xd
/* 802813F4 0027D054  50 A7 9B 18 */	rlwimi r7, r5, 0x13, 0xc, 0xc
/* 802813F8 0027D058  90 E8 01 08 */	stw r7, 0x108(r8)
/* 802813FC 0027D05C  98 66 80 00 */	stb r3, 0xCC008000@l(r6)
/* 80281400 0027D060  80 68 01 08 */	lwz r3, 0x108(r8)
/* 80281404 0027D064  90 66 80 00 */	stw r3, -0x8000(r6)
/* 80281408 0027D068  B0 09 00 02 */	sth r0, 2(r9)
/* 8028140C 0027D06C  4E 80 00 20 */	blr

.global GXSetCullMode
GXSetCullMode:
/* 80281410 0027D070  80 82 A0 D0 */	lwz r4, lbl_806426D0-_SDA2_BASE_(r2)
/* 80281414 0027D074  54 65 FF FE */	rlwinm r5, r3, 0x1f, 0x1f, 0x1f
/* 80281418 0027D078  50 65 0F BC */	rlwimi r5, r3, 1, 0x1e, 0x1e
/* 8028141C 0027D07C  80 04 02 54 */	lwz r0, 0x254(r4)
/* 80281420 0027D080  50 A0 74 22 */	rlwimi r0, r5, 0xe, 0x10, 0x11
/* 80281424 0027D084  90 04 02 54 */	stw r0, 0x254(r4)
/* 80281428 0027D088  80 04 05 FC */	lwz r0, 0x5fc(r4)
/* 8028142C 0027D08C  60 00 00 04 */	ori r0, r0, 4
/* 80281430 0027D090  90 04 05 FC */	stw r0, 0x5fc(r4)
/* 80281434 0027D094  4E 80 00 20 */	blr

.global GXSetCoPlanar
GXSetCoPlanar:
/* 80281438 0027D098  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028143C 0027D09C  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80281440 0027D0A0  38 A0 00 61 */	li r5, 0x61
/* 80281444 0027D0A4  3C 00 FE 08 */	lis r0, 0xfe08
/* 80281448 0027D0A8  80 C7 02 54 */	lwz r6, 0x254(r7)
/* 8028144C 0027D0AC  50 66 9B 18 */	rlwimi r6, r3, 0x13, 0xc, 0xc
/* 80281450 0027D0B0  90 C7 02 54 */	stw r6, 0x254(r7)
/* 80281454 0027D0B4  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80281458 0027D0B8  90 04 80 00 */	stw r0, -0x8000(r4)
/* 8028145C 0027D0BC  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 80281460 0027D0C0  80 07 02 54 */	lwz r0, 0x254(r7)
/* 80281464 0027D0C4  90 04 80 00 */	stw r0, -0x8000(r4)
/* 80281468 0027D0C8  4E 80 00 20 */	blr