summaryrefslogtreecommitdiff
path: root/asm/SDK/GX/GXPixel.s
blob: 730cbd8449903eae9839a5b6c2688a1d6c9c0800 (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
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
.include "macros.inc"

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

.global GXSetFog
GXSetFog:
/* 802841C0 0027FE20  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 802841C4 0027FE24  7C 08 02 A6 */	mflr r0
/* 802841C8 0027FE28  90 01 00 44 */	stw r0, 0x44(r1)
/* 802841CC 0027FE2C  DB E1 00 30 */	stfd f31, 0x30(r1)
/* 802841D0 0027FE30  F3 E1 00 38 */	psq_st f31, 56(r1), 0, qr0
/* 802841D4 0027FE34  39 00 00 00 */	li r8, 0
/* 802841D8 0027FE38  39 20 00 00 */	li r9, 0
/* 802841DC 0027FE3C  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 802841E0 0027FE40  54 7F 07 7E */	clrlwi r31, r3, 0x1d
/* 802841E4 0027FE44  93 C1 00 28 */	stw r30, 0x28(r1)
/* 802841E8 0027FE48  54 7E EF FF */	rlwinm. r30, r3, 0x1d, 0x1f, 0x1f
/* 802841EC 0027FE4C  93 A1 00 24 */	stw r29, 0x24(r1)
/* 802841F0 0027FE50  7C 9D 23 78 */	mr r29, r4
/* 802841F4 0027FE54  93 81 00 20 */	stw r28, 0x20(r1)
/* 802841F8 0027FE58  41 82 00 4C */	beq lbl_80284244
/* 802841FC 0027FE5C  FC 04 18 00 */	fcmpu cr0, f4, f3
/* 80284200 0027FE60  41 82 00 0C */	beq lbl_8028420C
/* 80284204 0027FE64  FC 02 08 00 */	fcmpu cr0, f2, f1
/* 80284208 0027FE68  40 82 00 14 */	bne lbl_8028421C
lbl_8028420C:
/* 8028420C 0027FE6C  C0 02 A1 80 */	lfs f0, lbl_80642780-_SDA2_BASE_(r2)
/* 80284210 0027FE70  D0 01 00 0C */	stfs f0, 0xc(r1)
/* 80284214 0027FE74  D0 01 00 08 */	stfs f0, 8(r1)
/* 80284218 0027FE78  48 00 01 1C */	b lbl_80284334
lbl_8028421C:
/* 8028421C 0027FE7C  EC C2 08 28 */	fsubs f6, f2, f1
/* 80284220 0027FE80  C0 A2 A1 84 */	lfs f5, lbl_80642784-_SDA2_BASE_(r2)
/* 80284224 0027FE84  EC 44 18 28 */	fsubs f2, f4, f3
/* 80284228 0027FE88  EC 01 18 28 */	fsubs f0, f1, f3
/* 8028422C 0027FE8C  EC 65 30 24 */	fdivs f3, f5, f6
/* 80284230 0027FE90  EC 23 00 B2 */	fmuls f1, f3, f2
/* 80284234 0027FE94  EC 03 00 32 */	fmuls f0, f3, f0
/* 80284238 0027FE98  D0 21 00 0C */	stfs f1, 0xc(r1)
/* 8028423C 0027FE9C  D0 01 00 08 */	stfs f0, 8(r1)
/* 80284240 0027FEA0  48 00 00 F4 */	b lbl_80284334
lbl_80284244:
/* 80284244 0027FEA4  FC 04 18 00 */	fcmpu cr0, f4, f3
/* 80284248 0027FEA8  41 82 00 0C */	beq lbl_80284254
/* 8028424C 0027FEAC  FC 02 08 00 */	fcmpu cr0, f2, f1
/* 80284250 0027FEB0  40 82 00 14 */	bne lbl_80284264
lbl_80284254:
/* 80284254 0027FEB4  C0 62 A1 80 */	lfs f3, lbl_80642780-_SDA2_BASE_(r2)
/* 80284258 0027FEB8  C0 82 A1 88 */	lfs f4, lbl_80642788-_SDA2_BASE_(r2)
/* 8028425C 0027FEBC  FF E0 18 90 */	fmr f31, f3
/* 80284260 0027FEC0  48 00 00 20 */	b lbl_80284280
lbl_80284264:
/* 80284264 0027FEC4  EC 04 18 28 */	fsubs f0, f4, f3
/* 80284268 0027FEC8  EC 42 08 28 */	fsubs f2, f2, f1
/* 8028426C 0027FECC  EC 64 00 F2 */	fmuls f3, f4, f3
/* 80284270 0027FED0  EC 84 00 24 */	fdivs f4, f4, f0
/* 80284274 0027FED4  EC 00 00 B2 */	fmuls f0, f0, f2
/* 80284278 0027FED8  EF E1 10 24 */	fdivs f31, f1, f2
/* 8028427C 0027FEDC  EC 63 00 24 */	fdivs f3, f3, f0
lbl_80284280:
/* 80284280 0027FEE0  C0 22 A1 88 */	lfs f1, lbl_80642788-_SDA2_BASE_(r2)
/* 80284284 0027FEE4  3B 80 00 00 */	li r28, 0
/* 80284288 0027FEE8  C8 02 A1 90 */	lfd f0, lbl_80642790-_SDA2_BASE_(r2)
/* 8028428C 0027FEEC  48 00 00 0C */	b lbl_80284298
lbl_80284290:
/* 80284290 0027FEF0  EC 84 00 72 */	fmuls f4, f4, f1
/* 80284294 0027FEF4  3B 9C 00 01 */	addi r28, r28, 1
lbl_80284298:
/* 80284298 0027FEF8  FC 04 00 40 */	fcmpo cr0, f4, f0
/* 8028429C 0027FEFC  41 81 FF F4 */	bgt lbl_80284290
/* 802842A0 0027FF00  C8 02 A1 A0 */	lfd f0, lbl_806427A0-_SDA2_BASE_(r2)
/* 802842A4 0027FF04  C0 42 A1 98 */	lfs f2, lbl_80642798-_SDA2_BASE_(r2)
/* 802842A8 0027FF08  C0 22 A1 80 */	lfs f1, lbl_80642780-_SDA2_BASE_(r2)
/* 802842AC 0027FF0C  48 00 00 0C */	b lbl_802842B8
lbl_802842B0:
/* 802842B0 0027FF10  EC 84 00 B2 */	fmuls f4, f4, f2
/* 802842B4 0027FF14  3B 9C FF FF */	addi r28, r28, -1
lbl_802842B8:
/* 802842B8 0027FF18  FC 04 08 40 */	fcmpo cr0, f4, f1
/* 802842BC 0027FF1C  7C 00 00 26 */	mfcr r0
/* 802842C0 0027FF20  54 00 17 FF */	rlwinm. r0, r0, 2, 0x1f, 0x1f
/* 802842C4 0027FF24  41 82 00 0C */	beq lbl_802842D0
/* 802842C8 0027FF28  FC 04 00 40 */	fcmpo cr0, f4, f0
/* 802842CC 0027FF2C  41 80 FF E4 */	blt lbl_802842B0
lbl_802842D0:
/* 802842D0 0027FF30  38 1C 00 01 */	addi r0, r28, 1
/* 802842D4 0027FF34  38 60 00 01 */	li r3, 1
/* 802842D8 0027FF38  7C 63 00 30 */	slw r3, r3, r0
/* 802842DC 0027FF3C  C0 02 A1 A8 */	lfs f0, lbl_806427A8-_SDA2_BASE_(r2)
/* 802842E0 0027FF40  3C 00 43 30 */	lis r0, 0x4330
/* 802842E4 0027FF44  C8 42 A1 B0 */	lfd f2, lbl_806427B0-_SDA2_BASE_(r2)
/* 802842E8 0027FF48  6C 63 80 00 */	xoris r3, r3, 0x8000
/* 802842EC 0027FF4C  90 01 00 10 */	stw r0, 0x10(r1)
/* 802842F0 0027FF50  EC 20 01 32 */	fmuls f1, f0, f4
/* 802842F4 0027FF54  90 61 00 14 */	stw r3, 0x14(r1)
/* 802842F8 0027FF58  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 802842FC 0027FF5C  EC 00 10 28 */	fsubs f0, f0, f2
/* 80284300 0027FF60  EC 03 00 24 */	fdivs f0, f3, f0
/* 80284304 0027FF64  D0 01 00 0C */	stfs f0, 0xc(r1)
/* 80284308 0027FF68  4B F4 2C F9 */	bl __cvt_fp2unsigned
/* 8028430C 0027FF6C  38 1C 00 01 */	addi r0, r28, 1
/* 80284310 0027FF70  39 00 00 00 */	li r8, 0
/* 80284314 0027FF74  50 68 02 3E */	rlwimi r8, r3, 0, 8, 0x1f
/* 80284318 0027FF78  39 20 00 00 */	li r9, 0
/* 8028431C 0027FF7C  50 09 06 FE */	rlwimi r9, r0, 0, 0x1b, 0x1f
/* 80284320 0027FF80  38 60 00 EF */	li r3, 0xef
/* 80284324 0027FF84  38 00 00 F0 */	li r0, 0xf0
/* 80284328 0027FF88  D3 E1 00 08 */	stfs f31, 8(r1)
/* 8028432C 0027FF8C  50 68 C0 0E */	rlwimi r8, r3, 0x18, 0, 7
/* 80284330 0027FF90  50 09 C0 0E */	rlwimi r9, r0, 0x18, 0, 7
lbl_80284334:
/* 80284334 0027FF94  80 61 00 0C */	lwz r3, 0xc(r1)
/* 80284338 0027FF98  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 8028433C 0027FF9C  38 A0 00 61 */	li r5, 0x61
/* 80284340 0027FFA0  38 00 00 EE */	li r0, 0xee
/* 80284344 0027FFA4  38 C0 00 00 */	li r6, 0
/* 80284348 0027FFA8  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 8028434C 0027FFAC  50 66 A5 7E */	rlwimi r6, r3, 0x14, 0x15, 0x1f
/* 80284350 0027FFB0  81 41 00 08 */	lwz r10, 8(r1)
/* 80284354 0027FFB4  50 66 A3 68 */	rlwimi r6, r3, 0x14, 0xd, 0x14
/* 80284358 0027FFB8  38 E0 00 00 */	li r7, 0
/* 8028435C 0027FFBC  50 66 A3 18 */	rlwimi r6, r3, 0x14, 0xc, 0xc
/* 80284360 0027FFC0  38 60 00 F1 */	li r3, 0xf1
/* 80284364 0027FFC4  50 06 C0 0E */	rlwimi r6, r0, 0x18, 0, 7
/* 80284368 0027FFC8  51 47 A5 7E */	rlwimi r7, r10, 0x14, 0x15, 0x1f
/* 8028436C 0027FFCC  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80284370 0027FFD0  51 47 A3 68 */	rlwimi r7, r10, 0x14, 0xd, 0x14
/* 80284374 0027FFD4  51 47 A3 18 */	rlwimi r7, r10, 0x14, 0xc, 0xc
/* 80284378 0027FFD8  80 1D 00 00 */	lwz r0, 0(r29)
/* 8028437C 0027FFDC  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 80284380 0027FFE0  53 C7 A2 D6 */	rlwimi r7, r30, 0x14, 0xb, 0xb
/* 80284384 0027FFE4  53 E7 AA 14 */	rlwimi r7, r31, 0x15, 8, 0xa
/* 80284388 0027FFE8  38 C0 00 00 */	li r6, 0
/* 8028438C 0027FFEC  91 04 80 00 */	stw r8, -0x8000(r4)
/* 80284390 0027FFF0  50 67 C0 0E */	rlwimi r7, r3, 0x18, 0, 7
/* 80284394 0027FFF4  50 06 C2 3E */	rlwimi r6, r0, 0x18, 8, 0x1f
/* 80284398 0027FFF8  38 00 00 F2 */	li r0, 0xf2
/* 8028439C 0027FFFC  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 802843A0 00280000  50 06 C0 0E */	rlwimi r6, r0, 0x18, 0, 7
/* 802843A4 00280004  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 802843A8 00280008  38 00 00 00 */	li r0, 0
/* 802843AC 0028000C  91 24 80 00 */	stw r9, -0x8000(r4)
/* 802843B0 00280010  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 802843B4 00280014  90 E4 80 00 */	stw r7, -0x8000(r4)
/* 802843B8 00280018  98 A4 80 00 */	stb r5, -0x8000(r4)
/* 802843BC 0028001C  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 802843C0 00280020  B0 03 00 02 */	sth r0, 2(r3)
/* 802843C4 00280024  E3 E1 00 38 */	psq_l f31, 56(r1), 0, qr0
/* 802843C8 00280028  CB E1 00 30 */	lfd f31, 0x30(r1)
/* 802843CC 0028002C  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 802843D0 00280030  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 802843D4 00280034  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 802843D8 00280038  83 81 00 20 */	lwz r28, 0x20(r1)
/* 802843DC 0028003C  80 01 00 44 */	lwz r0, 0x44(r1)
/* 802843E0 00280040  7C 08 03 A6 */	mtlr r0
/* 802843E4 00280044  38 21 00 40 */	addi r1, r1, 0x40
/* 802843E8 00280048  4E 80 00 20 */	blr

.global GXSetFogColor
GXSetFogColor:
/* 802843EC 0028004C  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 802843F0 00280050  38 00 00 61 */	li r0, 0x61
/* 802843F4 00280054  98 04 80 00 */	stb r0, 0xCC008000@l(r4)
/* 802843F8 00280058  3C A0 F2 00 */	lis r5, 0xf200
/* 802843FC 0028005C  80 63 00 00 */	lwz r3, 0(r3)
/* 80284400 00280060  38 00 00 00 */	li r0, 0
/* 80284404 00280064  50 65 C2 3E */	rlwimi r5, r3, 0x18, 8, 0x1f
/* 80284408 00280068  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028440C 0028006C  90 A4 80 00 */	stw r5, -0x8000(r4)
/* 80284410 00280070  B0 03 00 02 */	sth r0, 2(r3)
/* 80284414 00280074  4E 80 00 20 */	blr

.global GXInitFogAdjTable
GXInitFogAdjTable:
/* 80284418 00280078  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 8028441C 0028007C  7C 08 02 A6 */	mflr r0
/* 80284420 00280080  90 01 00 84 */	stw r0, 0x84(r1)
/* 80284424 00280084  DB E1 00 70 */	stfd f31, 0x70(r1)
/* 80284428 00280088  F3 E1 00 78 */	psq_st f31, 120(r1), 0, qr0
/* 8028442C 0028008C  DB C1 00 60 */	stfd f30, 0x60(r1)
/* 80284430 00280090  F3 C1 00 68 */	psq_st f30, 104(r1), 0, qr0
/* 80284434 00280094  DB A1 00 50 */	stfd f29, 0x50(r1)
/* 80284438 00280098  F3 A1 00 58 */	psq_st f29, 88(r1), 0, qr0
/* 8028443C 0028009C  DB 81 00 40 */	stfd f28, 0x40(r1)
/* 80284440 002800A0  F3 81 00 48 */	psq_st f28, 72(r1), 0, qr0
/* 80284444 002800A4  DB 61 00 30 */	stfd f27, 0x30(r1)
/* 80284448 002800A8  F3 61 00 38 */	psq_st f27, 56(r1), 0, qr0
/* 8028444C 002800AC  DB 41 00 20 */	stfd f26, 0x20(r1)
/* 80284450 002800B0  F3 41 00 28 */	psq_st f26, 40(r1), 0, qr0
/* 80284454 002800B4  C8 22 A1 B8 */	lfd f1, lbl_806427B8-_SDA2_BASE_(r2)
/* 80284458 002800B8  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 8028445C 002800BC  C0 05 00 3C */	lfs f0, 0x3c(r5)
/* 80284460 002800C0  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80284464 002800C4  FC 01 00 00 */	fcmpu cr0, f1, f0
/* 80284468 002800C8  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8028446C 002800CC  40 82 00 24 */	bne lbl_80284490
/* 80284470 002800D0  C0 45 00 28 */	lfs f2, 0x28(r5)
/* 80284474 002800D4  C0 02 A1 84 */	lfs f0, lbl_80642784-_SDA2_BASE_(r2)
/* 80284478 002800D8  C0 25 00 2C */	lfs f1, 0x2c(r5)
/* 8028447C 002800DC  EC 42 00 28 */	fsubs f2, f2, f0
/* 80284480 002800E0  C0 05 00 00 */	lfs f0, 0(r5)
/* 80284484 002800E4  EC 21 10 24 */	fdivs f1, f1, f2
/* 80284488 002800E8  EF 41 00 24 */	fdivs f26, f1, f0
/* 8028448C 002800EC  48 00 00 18 */	b lbl_802844A4
lbl_80284490:
/* 80284490 002800F0  C0 42 A1 84 */	lfs f2, lbl_80642784-_SDA2_BASE_(r2)
/* 80284494 002800F4  C0 25 00 00 */	lfs f1, 0(r5)
/* 80284498 002800F8  C0 02 A1 C0 */	lfs f0, lbl_806427C0-_SDA2_BASE_(r2)
/* 8028449C 002800FC  EF 42 08 24 */	fdivs f26, f2, f1
/* 802844A0 00280100  EC 20 06 B2 */	fmuls f1, f0, f26
lbl_802844A4:
/* 802844A4 00280104  3F E0 43 30 */	lis r31, 0x4330
/* 802844A8 00280108  90 81 00 0C */	stw r4, 0xc(r1)
/* 802844AC 0028010C  CB 82 A1 C8 */	lfd f28, lbl_806427C8-_SDA2_BASE_(r2)
/* 802844B0 00280110  EF A1 00 72 */	fmuls f29, f1, f1
/* 802844B4 00280114  93 E1 00 08 */	stw r31, 8(r1)
/* 802844B8 00280118  7C 7E 1B 78 */	mr r30, r3
/* 802844BC 0028011C  C0 02 A1 98 */	lfs f0, lbl_80642798-_SDA2_BASE_(r2)
/* 802844C0 00280120  3B A0 00 00 */	li r29, 0
/* 802844C4 00280124  C8 21 00 08 */	lfd f1, 8(r1)
/* 802844C8 00280128  C3 C2 A1 84 */	lfs f30, lbl_80642784-_SDA2_BASE_(r2)
/* 802844CC 0028012C  EC 21 E0 28 */	fsubs f1, f1, f28
/* 802844D0 00280130  C3 E2 A1 C4 */	lfs f31, lbl_806427C4-_SDA2_BASE_(r2)
/* 802844D4 00280134  EF 60 08 24 */	fdivs f27, f0, f1
lbl_802844D8:
/* 802844D8 00280138  38 1D 00 01 */	addi r0, r29, 1
/* 802844DC 0028013C  93 E1 00 08 */	stw r31, 8(r1)
/* 802844E0 00280140  54 00 28 34 */	slwi r0, r0, 5
/* 802844E4 00280144  90 01 00 0C */	stw r0, 0xc(r1)
/* 802844E8 00280148  C8 01 00 08 */	lfd f0, 8(r1)
/* 802844EC 0028014C  EC 00 E0 28 */	fsubs f0, f0, f28
/* 802844F0 00280150  EC 00 06 F2 */	fmuls f0, f0, f27
/* 802844F4 00280154  EC 00 06 B2 */	fmuls f0, f0, f26
/* 802844F8 00280158  EC 00 00 32 */	fmuls f0, f0, f0
/* 802844FC 0028015C  EC 00 E8 24 */	fdivs f0, f0, f29
/* 80284500 00280160  EC 3E 00 2A */	fadds f1, f30, f0
/* 80284504 00280164  4B F5 03 31 */	bl sqrt
/* 80284508 00280168  FC 00 08 18 */	frsp f0, f1
/* 8028450C 0028016C  EC 3F 00 32 */	fmuls f1, f31, f0
/* 80284510 00280170  4B F4 2A F1 */	bl __cvt_fp2unsigned
/* 80284514 00280174  3B BD 00 01 */	addi r29, r29, 1
/* 80284518 00280178  54 60 05 3E */	clrlwi r0, r3, 0x14
/* 8028451C 0028017C  28 1D 00 0A */	cmplwi r29, 0xa
/* 80284520 00280180  B0 1E 00 00 */	sth r0, 0(r30)
/* 80284524 00280184  3B DE 00 02 */	addi r30, r30, 2
/* 80284528 00280188  41 80 FF B0 */	blt lbl_802844D8
/* 8028452C 0028018C  E3 E1 00 78 */	psq_l f31, 120(r1), 0, qr0
/* 80284530 00280190  CB E1 00 70 */	lfd f31, 0x70(r1)
/* 80284534 00280194  E3 C1 00 68 */	psq_l f30, 104(r1), 0, qr0
/* 80284538 00280198  CB C1 00 60 */	lfd f30, 0x60(r1)
/* 8028453C 0028019C  E3 A1 00 58 */	psq_l f29, 88(r1), 0, qr0
/* 80284540 002801A0  CB A1 00 50 */	lfd f29, 0x50(r1)
/* 80284544 002801A4  E3 81 00 48 */	psq_l f28, 72(r1), 0, qr0
/* 80284548 002801A8  CB 81 00 40 */	lfd f28, 0x40(r1)
/* 8028454C 002801AC  E3 61 00 38 */	psq_l f27, 56(r1), 0, qr0
/* 80284550 002801B0  CB 61 00 30 */	lfd f27, 0x30(r1)
/* 80284554 002801B4  E3 41 00 28 */	psq_l f26, 40(r1), 0, qr0
/* 80284558 002801B8  CB 41 00 20 */	lfd f26, 0x20(r1)
/* 8028455C 002801BC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80284560 002801C0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80284564 002801C4  80 01 00 84 */	lwz r0, 0x84(r1)
/* 80284568 002801C8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8028456C 002801CC  7C 08 03 A6 */	mtlr r0
/* 80284570 002801D0  38 21 00 80 */	addi r1, r1, 0x80
/* 80284574 002801D4  4E 80 00 20 */	blr

.global GXSetFogRangeAdj
GXSetFogRangeAdj:
/* 80284578 002801D8  2C 03 00 00 */	cmpwi r3, 0
/* 8028457C 002801DC  41 82 00 E8 */	beq lbl_80284664
/* 80284580 002801E0  A1 85 00 00 */	lhz r12, 0(r5)
/* 80284584 002801E4  39 60 00 00 */	li r11, 0
/* 80284588 002801E8  A1 45 00 02 */	lhz r10, 2(r5)
/* 8028458C 002801EC  3C C0 CC 01 */	lis r6, 0xCC008000@ha
/* 80284590 002801F0  51 8B 05 3E */	rlwimi r11, r12, 0, 0x14, 0x1f
/* 80284594 002801F4  38 00 00 61 */	li r0, 0x61
/* 80284598 002801F8  7D 69 5B 78 */	mr r9, r11
/* 8028459C 002801FC  98 06 80 00 */	stb r0, 0xCC008000@l(r6)
/* 802845A0 00280200  51 49 62 26 */	rlwimi r9, r10, 0xc, 8, 0x13
/* 802845A4 00280204  38 E0 00 E9 */	li r7, 0xe9
/* 802845A8 00280208  7D 28 4B 78 */	mr r8, r9
/* 802845AC 0028020C  A1 85 00 04 */	lhz r12, 4(r5)
/* 802845B0 00280210  50 E8 C0 0E */	rlwimi r8, r7, 0x18, 0, 7
/* 802845B4 00280214  39 60 00 00 */	li r11, 0
/* 802845B8 00280218  51 8B 05 3E */	rlwimi r11, r12, 0, 0x14, 0x1f
/* 802845BC 0028021C  91 06 80 00 */	stw r8, -0x8000(r6)
/* 802845C0 00280220  7D 69 5B 78 */	mr r9, r11
/* 802845C4 00280224  A1 45 00 06 */	lhz r10, 6(r5)
/* 802845C8 00280228  38 E0 00 EA */	li r7, 0xea
/* 802845CC 0028022C  98 06 80 00 */	stb r0, -0x8000(r6)
/* 802845D0 00280230  51 49 62 26 */	rlwimi r9, r10, 0xc, 8, 0x13
/* 802845D4 00280234  A1 85 00 08 */	lhz r12, 8(r5)
/* 802845D8 00280238  7D 28 4B 78 */	mr r8, r9
/* 802845DC 0028023C  39 60 00 00 */	li r11, 0
/* 802845E0 00280240  50 E8 C0 0E */	rlwimi r8, r7, 0x18, 0, 7
/* 802845E4 00280244  A1 45 00 0A */	lhz r10, 0xa(r5)
/* 802845E8 00280248  51 8B 05 3E */	rlwimi r11, r12, 0, 0x14, 0x1f
/* 802845EC 0028024C  91 06 80 00 */	stw r8, -0x8000(r6)
/* 802845F0 00280250  7D 69 5B 78 */	mr r9, r11
/* 802845F4 00280254  38 E0 00 EB */	li r7, 0xeb
/* 802845F8 00280258  51 49 62 26 */	rlwimi r9, r10, 0xc, 8, 0x13
/* 802845FC 0028025C  98 06 80 00 */	stb r0, -0x8000(r6)
/* 80284600 00280260  7D 28 4B 78 */	mr r8, r9
/* 80284604 00280264  A1 85 00 0C */	lhz r12, 0xc(r5)
/* 80284608 00280268  50 E8 C0 0E */	rlwimi r8, r7, 0x18, 0, 7
/* 8028460C 0028026C  39 60 00 00 */	li r11, 0
/* 80284610 00280270  51 8B 05 3E */	rlwimi r11, r12, 0, 0x14, 0x1f
/* 80284614 00280274  91 06 80 00 */	stw r8, -0x8000(r6)
/* 80284618 00280278  7D 69 5B 78 */	mr r9, r11
/* 8028461C 0028027C  A1 45 00 0E */	lhz r10, 0xe(r5)
/* 80284620 00280280  38 E0 00 EC */	li r7, 0xec
/* 80284624 00280284  98 06 80 00 */	stb r0, -0x8000(r6)
/* 80284628 00280288  51 49 62 26 */	rlwimi r9, r10, 0xc, 8, 0x13
/* 8028462C 0028028C  A1 85 00 10 */	lhz r12, 0x10(r5)
/* 80284630 00280290  7D 28 4B 78 */	mr r8, r9
/* 80284634 00280294  39 60 00 00 */	li r11, 0
/* 80284638 00280298  50 E8 C0 0E */	rlwimi r8, r7, 0x18, 0, 7
/* 8028463C 0028029C  A1 45 00 12 */	lhz r10, 0x12(r5)
/* 80284640 002802A0  91 06 80 00 */	stw r8, -0x8000(r6)
/* 80284644 002802A4  51 8B 05 3E */	rlwimi r11, r12, 0, 0x14, 0x1f
/* 80284648 002802A8  7D 69 5B 78 */	mr r9, r11
/* 8028464C 002802AC  38 E0 00 ED */	li r7, 0xed
/* 80284650 002802B0  51 49 62 26 */	rlwimi r9, r10, 0xc, 8, 0x13
/* 80284654 002802B4  98 06 80 00 */	stb r0, -0x8000(r6)
/* 80284658 002802B8  7D 28 4B 78 */	mr r8, r9
/* 8028465C 002802BC  50 E8 C0 0E */	rlwimi r8, r7, 0x18, 0, 7
/* 80284660 002802C0  91 06 80 00 */	stw r8, -0x8000(r6)
lbl_80284664:
/* 80284664 002802C4  38 04 01 56 */	addi r0, r4, 0x156
/* 80284668 002802C8  38 C0 00 00 */	li r6, 0
/* 8028466C 002802CC  50 06 05 BE */	rlwimi r6, r0, 0, 0x16, 0x1f
/* 80284670 002802D0  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80284674 002802D4  38 00 00 61 */	li r0, 0x61
/* 80284678 002802D8  38 A0 00 E8 */	li r5, 0xe8
/* 8028467C 002802DC  50 66 55 6A */	rlwimi r6, r3, 0xa, 0x15, 0x15
/* 80284680 002802E0  98 04 80 00 */	stb r0, 0xCC008000@l(r4)
/* 80284684 002802E4  50 A6 C0 0E */	rlwimi r6, r5, 0x18, 0, 7
/* 80284688 002802E8  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028468C 002802EC  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80284690 002802F0  38 00 00 00 */	li r0, 0
/* 80284694 002802F4  B0 03 00 02 */	sth r0, 2(r3)
/* 80284698 002802F8  4E 80 00 20 */	blr

.global GXSetBlendMode
GXSetBlendMode:
/* 8028469C 002802FC  81 42 A0 D0 */	lwz r10, lbl_806426D0-_SDA2_BASE_(r2)
/* 802846A0 00280300  38 03 FF FD */	addi r0, r3, -3
/* 802846A4 00280304  39 03 FF FE */	addi r8, r3, -2
/* 802846A8 00280308  3C E0 CC 01 */	lis r7, 0xCC008000@ha
/* 802846AC 0028030C  7C 00 00 34 */	cntlzw r0, r0
/* 802846B0 00280310  81 2A 02 20 */	lwz r9, 0x220(r10)
/* 802846B4 00280314  50 09 35 28 */	rlwimi r9, r0, 6, 0x14, 0x14
/* 802846B8 00280318  7D 08 00 34 */	cntlzw r8, r8
/* 802846BC 0028031C  38 00 00 61 */	li r0, 0x61
/* 802846C0 00280320  98 07 80 00 */	stb r0, 0xCC008000@l(r7)
/* 802846C4 00280324  50 69 07 FE */	rlwimi r9, r3, 0, 0x1f, 0x1f
/* 802846C8 00280328  51 09 E7 BC */	rlwimi r9, r8, 0x1c, 0x1e, 0x1e
/* 802846CC 0028032C  38 00 00 00 */	li r0, 0
/* 802846D0 00280330  50 C9 64 26 */	rlwimi r9, r6, 0xc, 0x10, 0x13
/* 802846D4 00280334  50 89 45 6E */	rlwimi r9, r4, 8, 0x15, 0x17
/* 802846D8 00280338  50 A9 2E 34 */	rlwimi r9, r5, 5, 0x18, 0x1a
/* 802846DC 0028033C  91 27 80 00 */	stw r9, -0x8000(r7)
/* 802846E0 00280340  91 2A 02 20 */	stw r9, 0x220(r10)
/* 802846E4 00280344  B0 0A 00 02 */	sth r0, 2(r10)
/* 802846E8 00280348  4E 80 00 20 */	blr

.global GXSetColorUpdate
GXSetColorUpdate:
/* 802846EC 0028034C  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 802846F0 00280350  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 802846F4 00280354  38 A0 00 61 */	li r5, 0x61
/* 802846F8 00280358  38 00 00 00 */	li r0, 0
/* 802846FC 0028035C  80 C7 02 20 */	lwz r6, 0x220(r7)
/* 80284700 00280360  50 66 1F 38 */	rlwimi r6, r3, 3, 0x1c, 0x1c
/* 80284704 00280364  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80284708 00280368  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 8028470C 0028036C  90 C7 02 20 */	stw r6, 0x220(r7)
/* 80284710 00280370  B0 07 00 02 */	sth r0, 2(r7)
/* 80284714 00280374  4E 80 00 20 */	blr

.global GXSetAlphaUpdate
GXSetAlphaUpdate:
/* 80284718 00280378  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028471C 0028037C  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80284720 00280380  38 A0 00 61 */	li r5, 0x61
/* 80284724 00280384  38 00 00 00 */	li r0, 0
/* 80284728 00280388  80 C7 02 20 */	lwz r6, 0x220(r7)
/* 8028472C 0028038C  50 66 26 F6 */	rlwimi r6, r3, 4, 0x1b, 0x1b
/* 80284730 00280390  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80284734 00280394  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80284738 00280398  90 C7 02 20 */	stw r6, 0x220(r7)
/* 8028473C 0028039C  B0 07 00 02 */	sth r0, 2(r7)
/* 80284740 002803A0  4E 80 00 20 */	blr

.global GXSetZMode
GXSetZMode:
/* 80284744 002803A4  81 22 A0 D0 */	lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
/* 80284748 002803A8  3C C0 CC 01 */	lis r6, 0xCC008000@ha
/* 8028474C 002803AC  38 E0 00 61 */	li r7, 0x61
/* 80284750 002803B0  38 00 00 00 */	li r0, 0
/* 80284754 002803B4  81 09 02 28 */	lwz r8, 0x228(r9)
/* 80284758 002803B8  50 68 07 FE */	rlwimi r8, r3, 0, 0x1f, 0x1f
/* 8028475C 002803BC  50 88 0F 3C */	rlwimi r8, r4, 1, 0x1c, 0x1e
/* 80284760 002803C0  98 E6 80 00 */	stb r7, 0xCC008000@l(r6)
/* 80284764 002803C4  50 A8 26 F6 */	rlwimi r8, r5, 4, 0x1b, 0x1b
/* 80284768 002803C8  91 06 80 00 */	stw r8, -0x8000(r6)
/* 8028476C 002803CC  91 09 02 28 */	stw r8, 0x228(r9)
/* 80284770 002803D0  B0 09 00 02 */	sth r0, 2(r9)
/* 80284774 002803D4  4E 80 00 20 */	blr

.global GXSetZCompLoc
GXSetZCompLoc:
/* 80284778 002803D8  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 8028477C 002803DC  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80284780 002803E0  38 A0 00 61 */	li r5, 0x61
/* 80284784 002803E4  38 00 00 00 */	li r0, 0
/* 80284788 002803E8  80 C7 02 2C */	lwz r6, 0x22c(r7)
/* 8028478C 002803EC  50 66 36 72 */	rlwimi r6, r3, 6, 0x19, 0x19
/* 80284790 002803F0  90 C7 02 2C */	stw r6, 0x22c(r7)
/* 80284794 002803F4  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 80284798 002803F8  80 67 02 2C */	lwz r3, 0x22c(r7)
/* 8028479C 002803FC  90 64 80 00 */	stw r3, -0x8000(r4)
/* 802847A0 00280400  B0 07 00 02 */	sth r0, 2(r7)
/* 802847A4 00280404  4E 80 00 20 */	blr

.global GXSetPixelFmt
GXSetPixelFmt:
/* 802847A8 00280408  81 22 A0 D0 */	lwz r9, lbl_806426D0-_SDA2_BASE_(r2)
/* 802847AC 0028040C  3C C0 80 43 */	lis r6, lbl_80435948@ha
/* 802847B0 00280410  54 67 10 3A */	slwi r7, r3, 2
/* 802847B4 00280414  38 C6 59 48 */	addi r6, r6, lbl_80435948@l
/* 802847B8 00280418  81 09 02 2C */	lwz r8, 0x22c(r9)
/* 802847BC 0028041C  7C 06 38 2E */	lwzx r0, r6, r7
/* 802847C0 00280420  7D 05 43 78 */	mr r5, r8
/* 802847C4 00280424  50 05 07 7E */	rlwimi r5, r0, 0, 0x1d, 0x1f
/* 802847C8 00280428  50 85 1E B8 */	rlwimi r5, r4, 3, 0x1a, 0x1c
/* 802847CC 0028042C  7C 08 28 40 */	cmplw r8, r5
/* 802847D0 00280430  90 A9 02 2C */	stw r5, 0x22c(r9)
/* 802847D4 00280434  41 82 00 38 */	beq lbl_8028480C
/* 802847D8 00280438  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 802847DC 0028043C  38 00 00 61 */	li r0, 0x61
/* 802847E0 00280440  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 802847E4 00280444  38 03 FF FE */	addi r0, r3, -2
/* 802847E8 00280448  7C 04 00 34 */	cntlzw r4, r0
/* 802847EC 0028044C  80 09 02 2C */	lwz r0, 0x22c(r9)
/* 802847F0 00280450  90 05 80 00 */	stw r0, -0x8000(r5)
/* 802847F4 00280454  80 09 02 54 */	lwz r0, 0x254(r9)
/* 802847F8 00280458  50 80 25 AC */	rlwimi r0, r4, 4, 0x16, 0x16
/* 802847FC 0028045C  90 09 02 54 */	stw r0, 0x254(r9)
/* 80284800 00280460  80 09 05 FC */	lwz r0, 0x5fc(r9)
/* 80284804 00280464  60 00 00 04 */	ori r0, r0, 4
/* 80284808 00280468  90 09 05 FC */	stw r0, 0x5fc(r9)
lbl_8028480C:
/* 8028480C 0028046C  7C 06 38 2E */	lwzx r0, r6, r7
/* 80284810 00280470  28 00 00 04 */	cmplwi r0, 4
/* 80284814 00280474  40 82 00 30 */	bne lbl_80284844
/* 80284818 00280478  38 03 FF FC */	addi r0, r3, -4
/* 8028481C 0028047C  80 89 02 24 */	lwz r4, 0x224(r9)
/* 80284820 00280480  50 04 4D 6C */	rlwimi r4, r0, 9, 0x15, 0x16
/* 80284824 00280484  3C 60 CC 01 */	lis r3, 0xCC008000@ha
/* 80284828 00280488  38 00 00 42 */	li r0, 0x42
/* 8028482C 0028048C  50 04 C0 0E */	rlwimi r4, r0, 0x18, 0, 7
/* 80284830 00280490  90 89 02 24 */	stw r4, 0x224(r9)
/* 80284834 00280494  38 00 00 61 */	li r0, 0x61
/* 80284838 00280498  98 03 80 00 */	stb r0, 0xCC008000@l(r3)
/* 8028483C 0028049C  80 09 02 24 */	lwz r0, 0x224(r9)
/* 80284840 002804A0  90 03 80 00 */	stw r0, -0x8000(r3)
lbl_80284844:
/* 80284844 002804A4  38 00 00 00 */	li r0, 0
/* 80284848 002804A8  B0 09 00 02 */	sth r0, 2(r9)
/* 8028484C 002804AC  4E 80 00 20 */	blr

.global GXSetDither
GXSetDither:
/* 80284850 002804B0  80 E2 A0 D0 */	lwz r7, lbl_806426D0-_SDA2_BASE_(r2)
/* 80284854 002804B4  3C 80 CC 01 */	lis r4, 0xCC008000@ha
/* 80284858 002804B8  38 A0 00 61 */	li r5, 0x61
/* 8028485C 002804BC  38 00 00 00 */	li r0, 0
/* 80284860 002804C0  80 C7 02 20 */	lwz r6, 0x220(r7)
/* 80284864 002804C4  50 66 17 7A */	rlwimi r6, r3, 2, 0x1d, 0x1d
/* 80284868 002804C8  98 A4 80 00 */	stb r5, 0xCC008000@l(r4)
/* 8028486C 002804CC  90 C4 80 00 */	stw r6, -0x8000(r4)
/* 80284870 002804D0  90 C7 02 20 */	stw r6, 0x220(r7)
/* 80284874 002804D4  B0 07 00 02 */	sth r0, 2(r7)
/* 80284878 002804D8  4E 80 00 20 */	blr

.global GXSetDstAlpha
GXSetDstAlpha:
/* 8028487C 002804DC  81 02 A0 D0 */	lwz r8, lbl_806426D0-_SDA2_BASE_(r2)
/* 80284880 002804E0  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 80284884 002804E4  38 C0 00 61 */	li r6, 0x61
/* 80284888 002804E8  38 00 00 00 */	li r0, 0
/* 8028488C 002804EC  80 E8 02 24 */	lwz r7, 0x224(r8)
/* 80284890 002804F0  50 87 06 3E */	rlwimi r7, r4, 0, 0x18, 0x1f
/* 80284894 002804F4  50 67 45 EE */	rlwimi r7, r3, 8, 0x17, 0x17
/* 80284898 002804F8  98 C5 80 00 */	stb r6, 0xCC008000@l(r5)
/* 8028489C 002804FC  90 E5 80 00 */	stw r7, -0x8000(r5)
/* 802848A0 00280500  90 E8 02 24 */	stw r7, 0x224(r8)
/* 802848A4 00280504  B0 08 00 02 */	sth r0, 2(r8)
/* 802848A8 00280508  4E 80 00 20 */	blr

.global GXSetFieldMask
GXSetFieldMask:
/* 802848AC 0028050C  3C A0 CC 01 */	lis r5, 0xCC008000@ha
/* 802848B0 00280510  38 00 00 61 */	li r0, 0x61
/* 802848B4 00280514  98 05 80 00 */	stb r0, 0xCC008000@l(r5)
/* 802848B8 00280518  38 00 00 44 */	li r0, 0x44
/* 802848BC 0028051C  38 C0 00 00 */	li r6, 0
/* 802848C0 00280520  50 86 07 FE */	rlwimi r6, r4, 0, 0x1f, 0x1f
/* 802848C4 00280524  50 66 0F BC */	rlwimi r6, r3, 1, 0x1e, 0x1e
/* 802848C8 00280528  80 62 A0 D0 */	lwz r3, lbl_806426D0-_SDA2_BASE_(r2)
/* 802848CC 0028052C  50 06 C0 0E */	rlwimi r6, r0, 0x18, 0, 7
/* 802848D0 00280530  38 00 00 00 */	li r0, 0
/* 802848D4 00280534  90 C5 80 00 */	stw r6, -0x8000(r5)
/* 802848D8 00280538  B0 03 00 02 */	sth r0, 2(r3)
/* 802848DC 0028053C  4E 80 00 20 */	blr

.global GXSetFieldMode
GXSetFieldMode:
/* 802848E0 00280540  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802848E4 00280544  7C 08 02 A6 */	mflr r0
/* 802848E8 00280548  80 A2 A0 D0 */	lwz r5, lbl_806426D0-_SDA2_BASE_(r2)
/* 802848EC 0028054C  90 01 00 24 */	stw r0, 0x24(r1)
/* 802848F0 00280550  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802848F4 00280554  3F E0 CC 01 */	lis r31, 0xCC008000@ha
/* 802848F8 00280558  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802848FC 0028055C  3B C0 00 61 */	li r30, 0x61
/* 80284900 00280560  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80284904 00280564  7C 7D 1B 78 */	mr r29, r3
/* 80284908 00280568  80 05 00 7C */	lwz r0, 0x7c(r5)
/* 8028490C 0028056C  50 80 B2 52 */	rlwimi r0, r4, 0x16, 9, 9
/* 80284910 00280570  90 05 00 7C */	stw r0, 0x7c(r5)
/* 80284914 00280574  9B DF 80 00 */	stb r30, 0xCC008000@l(r31)
/* 80284918 00280578  80 05 00 7C */	lwz r0, 0x7c(r5)
/* 8028491C 0028057C  90 1F 80 00 */	stw r0, -0x8000(r31)
/* 80284920 00280580  4B FF F1 FD */	bl __GXFlushTextureState
/* 80284924 00280584  9B DF 80 00 */	stb r30, -0x8000(r31)
/* 80284928 00280588  67 A0 68 00 */	oris r0, r29, 0x6800
/* 8028492C 0028058C  90 1F 80 00 */	stw r0, -0x8000(r31)
/* 80284930 00280590  4B FF F1 ED */	bl __GXFlushTextureState
/* 80284934 00280594  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80284938 00280598  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 8028493C 0028059C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80284940 002805A0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80284944 002805A4  7C 08 03 A6 */	mtlr r0
/* 80284948 002805A8  38 21 00 20 */	addi r1, r1, 0x20
/* 8028494C 002805AC  4E 80 00 20 */	blr