summaryrefslogtreecommitdiff
path: root/asm/SDK/TPL/TPL.s
blob: c631eb23b8cb563c5d674d490aa3e1d815b4547c (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
.include "macros.inc"

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

.global TPLBind
TPLBind:
/* 8029B918 00297578  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8029B91C 0029757C  7C 08 02 A6 */	mflr r0
/* 8029B920 00297580  90 01 00 14 */	stw r0, 0x14(r1)
/* 8029B924 00297584  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8029B928 00297588  7C 7F 1B 78 */	mr r31, r3
/* 8029B92C 0029758C  80 83 00 00 */	lwz r4, 0(r3)
/* 8029B930 00297590  3C 04 FF E0 */	addis r0, r4, 0xffe0
/* 8029B934 00297594  28 00 AF 30 */	cmplwi r0, 0xaf30
/* 8029B938 00297598  41 82 00 1C */	beq lbl_8029B954
/* 8029B93C 0029759C  3C A0 80 44 */	lis r5, lbl_8043BEC0@ha
/* 8029B940 002975A0  38 6D 89 08 */	addi r3, r13, lbl_8063DBC8-_SDA_BASE_
/* 8029B944 002975A4  38 A5 BE C0 */	addi r5, r5, lbl_8043BEC0@l
/* 8029B948 002975A8  38 80 00 19 */	li r4, 0x19
/* 8029B94C 002975AC  4C C6 31 82 */	crclr 6
/* 8029B950 002975B0  4B FC FB 4D */	bl OSPanic
lbl_8029B954:
/* 8029B954 002975B4  80 1F 00 08 */	lwz r0, 8(r31)
/* 8029B958 002975B8  38 60 00 00 */	li r3, 0
/* 8029B95C 002975BC  38 A0 00 01 */	li r5, 1
/* 8029B960 002975C0  7C 00 FA 14 */	add r0, r0, r31
/* 8029B964 002975C4  90 1F 00 08 */	stw r0, 8(r31)
/* 8029B968 002975C8  48 00 00 A0 */	b lbl_8029BA08
lbl_8029B96C:
/* 8029B96C 002975CC  80 9F 00 08 */	lwz r4, 8(r31)
/* 8029B970 002975D0  54 66 1B 78 */	rlwinm r6, r3, 3, 0xd, 0x1c
/* 8029B974 002975D4  7C 04 30 2E */	lwzx r0, r4, r6
/* 8029B978 002975D8  2C 00 00 00 */	cmpwi r0, 0
/* 8029B97C 002975DC  41 82 00 38 */	beq lbl_8029B9B4
/* 8029B980 002975E0  7C 1F 02 14 */	add r0, r31, r0
/* 8029B984 002975E4  7C 04 31 2E */	stwx r0, r4, r6
/* 8029B988 002975E8  80 9F 00 08 */	lwz r4, 8(r31)
/* 8029B98C 002975EC  7C 84 30 2E */	lwzx r4, r4, r6
/* 8029B990 002975F0  88 04 00 23 */	lbz r0, 0x23(r4)
/* 8029B994 002975F4  2C 00 00 00 */	cmpwi r0, 0
/* 8029B998 002975F8  40 82 00 1C */	bne lbl_8029B9B4
/* 8029B99C 002975FC  80 04 00 08 */	lwz r0, 8(r4)
/* 8029B9A0 00297600  7C 1F 02 14 */	add r0, r31, r0
/* 8029B9A4 00297604  90 04 00 08 */	stw r0, 8(r4)
/* 8029B9A8 00297608  80 9F 00 08 */	lwz r4, 8(r31)
/* 8029B9AC 0029760C  7C 84 30 2E */	lwzx r4, r4, r6
/* 8029B9B0 00297610  98 A4 00 23 */	stb r5, 0x23(r4)
lbl_8029B9B4:
/* 8029B9B4 00297614  80 1F 00 08 */	lwz r0, 8(r31)
/* 8029B9B8 00297618  7C 80 32 14 */	add r4, r0, r6
/* 8029B9BC 0029761C  80 04 00 04 */	lwz r0, 4(r4)
/* 8029B9C0 00297620  2C 00 00 00 */	cmpwi r0, 0
/* 8029B9C4 00297624  41 82 00 40 */	beq lbl_8029BA04
/* 8029B9C8 00297628  7C 1F 02 14 */	add r0, r31, r0
/* 8029B9CC 0029762C  90 04 00 04 */	stw r0, 4(r4)
/* 8029B9D0 00297630  80 1F 00 08 */	lwz r0, 8(r31)
/* 8029B9D4 00297634  7C 80 32 14 */	add r4, r0, r6
/* 8029B9D8 00297638  80 84 00 04 */	lwz r4, 4(r4)
/* 8029B9DC 0029763C  88 04 00 02 */	lbz r0, 2(r4)
/* 8029B9E0 00297640  2C 00 00 00 */	cmpwi r0, 0
/* 8029B9E4 00297644  40 82 00 20 */	bne lbl_8029BA04
/* 8029B9E8 00297648  80 04 00 08 */	lwz r0, 8(r4)
/* 8029B9EC 0029764C  7C 1F 02 14 */	add r0, r31, r0
/* 8029B9F0 00297650  90 04 00 08 */	stw r0, 8(r4)
/* 8029B9F4 00297654  80 1F 00 08 */	lwz r0, 8(r31)
/* 8029B9F8 00297658  7C 80 32 14 */	add r4, r0, r6
/* 8029B9FC 0029765C  80 84 00 04 */	lwz r4, 4(r4)
/* 8029BA00 00297660  98 A4 00 02 */	stb r5, 2(r4)
lbl_8029BA04:
/* 8029BA04 00297664  38 63 00 01 */	addi r3, r3, 1
lbl_8029BA08:
/* 8029BA08 00297668  80 1F 00 04 */	lwz r0, 4(r31)
/* 8029BA0C 0029766C  54 64 04 3E */	clrlwi r4, r3, 0x10
/* 8029BA10 00297670  7C 04 00 40 */	cmplw r4, r0
/* 8029BA14 00297674  41 80 FF 58 */	blt lbl_8029B96C
/* 8029BA18 00297678  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8029BA1C 0029767C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8029BA20 00297680  7C 08 03 A6 */	mtlr r0
/* 8029BA24 00297684  38 21 00 10 */	addi r1, r1, 0x10
/* 8029BA28 00297688  4E 80 00 20 */	blr

.global TPLGet
TPLGet:
/* 8029BA2C 0029768C  80 A3 00 04 */	lwz r5, 4(r3)
/* 8029BA30 00297690  80 63 00 08 */	lwz r3, 8(r3)
/* 8029BA34 00297694  7C 04 2B 96 */	divwu r0, r4, r5
/* 8029BA38 00297698  7C 00 29 D6 */	mullw r0, r0, r5
/* 8029BA3C 0029769C  7C 00 20 50 */	subf r0, r0, r4
/* 8029BA40 002976A0  54 00 18 38 */	slwi r0, r0, 3
/* 8029BA44 002976A4  7C 63 02 14 */	add r3, r3, r0
/* 8029BA48 002976A8  4E 80 00 20 */	blr

.global TPLGetGXTexObjFromPalette
TPLGetGXTexObjFromPalette:
/* 8029BA4C 002976AC  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8029BA50 002976B0  7C 08 02 A6 */	mflr r0
/* 8029BA54 002976B4  90 01 00 34 */	stw r0, 0x34(r1)
/* 8029BA58 002976B8  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 8029BA5C 002976BC  93 C1 00 28 */	stw r30, 0x28(r1)
/* 8029BA60 002976C0  93 A1 00 24 */	stw r29, 0x24(r1)
/* 8029BA64 002976C4  7C 9D 23 78 */	mr r29, r4
/* 8029BA68 002976C8  80 C3 00 04 */	lwz r6, 4(r3)
/* 8029BA6C 002976CC  83 C3 00 08 */	lwz r30, 8(r3)
/* 8029BA70 002976D0  7F A3 EB 78 */	mr r3, r29
/* 8029BA74 002976D4  7C 05 33 96 */	divwu r0, r5, r6
/* 8029BA78 002976D8  7C 00 31 D6 */	mullw r0, r0, r6
/* 8029BA7C 002976DC  7C 00 28 50 */	subf r0, r0, r5
/* 8029BA80 002976E0  54 1F 18 38 */	slwi r31, r0, 3
/* 8029BA84 002976E4  7D 3E F8 2E */	lwzx r9, r30, r31
/* 8029BA88 002976E8  88 C9 00 21 */	lbz r6, 0x21(r9)
/* 8029BA8C 002976EC  88 09 00 22 */	lbz r0, 0x22(r9)
/* 8029BA90 002976F0  80 89 00 08 */	lwz r4, 8(r9)
/* 8029BA94 002976F4  7C A6 00 50 */	subf r5, r6, r0
/* 8029BA98 002976F8  7C 00 30 50 */	subf r0, r0, r6
/* 8029BA9C 002976FC  7C A0 03 78 */	or r0, r5, r0
/* 8029BAA0 00297700  A0 A9 00 02 */	lhz r5, 2(r9)
/* 8029BAA4 00297704  A0 C9 00 00 */	lhz r6, 0(r9)
/* 8029BAA8 00297708  54 0A 0F FE */	srwi r10, r0, 0x1f
/* 8029BAAC 0029770C  80 E9 00 04 */	lwz r7, 4(r9)
/* 8029BAB0 00297710  81 09 00 0C */	lwz r8, 0xc(r9)
/* 8029BAB4 00297714  81 29 00 10 */	lwz r9, 0x10(r9)
/* 8029BAB8 00297718  4B FE 6C 19 */	bl GXInitTexObj
/* 8029BABC 0029771C  7C FE F8 2E */	lwzx r7, r30, r31
/* 8029BAC0 00297720  3C A0 43 30 */	lis r5, 0x4330
/* 8029BAC4 00297724  90 A1 00 08 */	stw r5, 8(r1)
/* 8029BAC8 00297728  7F A3 EB 78 */	mr r3, r29
/* 8029BACC 0029772C  88 87 00 21 */	lbz r4, 0x21(r7)
/* 8029BAD0 00297730  38 C0 00 00 */	li r6, 0
/* 8029BAD4 00297734  88 07 00 22 */	lbz r0, 0x22(r7)
/* 8029BAD8 00297738  39 00 00 00 */	li r8, 0
/* 8029BADC 0029773C  90 81 00 0C */	stw r4, 0xc(r1)
/* 8029BAE0 00297740  C8 42 A3 78 */	lfd f2, lbl_80642978-_SDA2_BASE_(r2)
/* 8029BAE4 00297744  C8 01 00 08 */	lfd f0, 8(r1)
/* 8029BAE8 00297748  90 A1 00 10 */	stw r5, 0x10(r1)
/* 8029BAEC 0029774C  EC 20 10 28 */	fsubs f1, f0, f2
/* 8029BAF0 00297750  80 87 00 14 */	lwz r4, 0x14(r7)
/* 8029BAF4 00297754  90 01 00 14 */	stw r0, 0x14(r1)
/* 8029BAF8 00297758  80 A7 00 18 */	lwz r5, 0x18(r7)
/* 8029BAFC 0029775C  C8 01 00 10 */	lfd f0, 0x10(r1)
/* 8029BB00 00297760  C0 67 00 1C */	lfs f3, 0x1c(r7)
/* 8029BB04 00297764  EC 40 10 28 */	fsubs f2, f0, f2
/* 8029BB08 00297768  88 E7 00 20 */	lbz r7, 0x20(r7)
/* 8029BB0C 0029776C  4B FE 6E 19 */	bl GXInitTexObjLOD
/* 8029BB10 00297770  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8029BB14 00297774  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 8029BB18 00297778  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 8029BB1C 0029777C  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 8029BB20 00297780  7C 08 03 A6 */	mtlr r0
/* 8029BB24 00297784  38 21 00 30 */	addi r1, r1, 0x30
/* 8029BB28 00297788  4E 80 00 20 */	blr