summaryrefslogtreecommitdiff
path: root/asm/code_80262B00.s
blob: 8c9e0e28cb277b79a52949a7d5f5a217f17bccaf (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
.include "macros.inc"

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

.global func_80262B00
func_80262B00:
/* 80262B00 0025E760  4B FF 8B E8 */	b lbl_8025B6E8

.global func_80262B04
func_80262B04:
/* 80262B04 0025E764  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80262B08 0025E768  7C 08 02 A6 */	mflr r0
/* 80262B0C 0025E76C  3C 60 80 26 */	lis r3, lbl_80262B48@ha
/* 80262B10 0025E770  90 01 00 14 */	stw r0, 0x14(r1)
/* 80262B14 0025E774  38 63 2B 48 */	addi r3, r3, lbl_80262B48@l
/* 80262B18 0025E778  4B FF 8C 09 */	bl func_8025B720
/* 80262B1C 0025E77C  3C 80 80 26 */	lis r4, lbl_80262BDC@ha
/* 80262B20 0025E780  38 60 00 04 */	li r3, 4
/* 80262B24 0025E784  38 84 2B DC */	addi r4, r4, lbl_80262BDC@l
/* 80262B28 0025E788  4B FF 8B C5 */	bl func_8025B6EC
/* 80262B2C 0025E78C  3C 60 80 26 */	lis r3, lbl_80262D68@ha
/* 80262B30 0025E790  38 63 2D 68 */	addi r3, r3, lbl_80262D68@l
/* 80262B34 0025E794  4B FF 8C BD */	bl func_8025B7F0
/* 80262B38 0025E798  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80262B3C 0025E79C  7C 08 03 A6 */	mtlr r0
/* 80262B40 0025E7A0  38 21 00 10 */	addi r1, r1, 0x10
/* 80262B44 0025E7A4  4E 80 00 20 */	blr
lbl_80262B48:
/* 80262B48 0025E7A8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80262B4C 0025E7AC  7C 08 02 A6 */	mflr r0
/* 80262B50 0025E7B0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80262B54 0025E7B4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80262B58 0025E7B8  7C 9F 23 78 */	mr r31, r4
/* 80262B5C 0025E7BC  4B FF B4 75 */	bl func_8025DFD0
/* 80262B60 0025E7C0  4B FF B7 AD */	bl func_8025E30C
/* 80262B64 0025E7C4  80 9F 00 00 */	lwz r4, 0(r31)
/* 80262B68 0025E7C8  7C 7F 1B 78 */	mr r31, r3
/* 80262B6C 0025E7CC  4B FF C2 5D */	bl func_8025EDC8
/* 80262B70 0025E7D0  A0 7F 0F 00 */	lhz r3, 0xf00(r31)
/* 80262B74 0025E7D4  2C 03 00 00 */	cmpwi r3, 0
/* 80262B78 0025E7D8  41 82 00 0C */	beq lbl_80262B84
/* 80262B7C 0025E7DC  38 03 FF FF */	addi r0, r3, -1
/* 80262B80 0025E7E0  B0 1F 0F 00 */	sth r0, 0xf00(r31)
lbl_80262B84:
/* 80262B84 0025E7E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80262B88 0025E7E8  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80262B8C 0025E7EC  7C 08 03 A6 */	mtlr r0
/* 80262B90 0025E7F0  38 21 00 10 */	addi r1, r1, 0x10
/* 80262B94 0025E7F4  4E 80 00 20 */	blr

.global func_80262B98
func_80262B98:
/* 80262B98 0025E7F8  3C 80 80 50 */	lis r4, lbl_80503AF8@ha
/* 80262B9C 0025E7FC  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 80262BA0 0025E800  38 84 3A F8 */	addi r4, r4, lbl_80503AF8@l
/* 80262BA4 0025E804  38 60 00 00 */	li r3, 0
/* 80262BA8 0025E808  7C 64 01 AE */	stbx r3, r4, r0
/* 80262BAC 0025E80C  4E 80 00 20 */	blr

.global func_80262BB0
func_80262BB0:
/* 80262BB0 0025E810  3C 80 80 50 */	lis r4, lbl_80503AF8@ha
/* 80262BB4 0025E814  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 80262BB8 0025E818  38 84 3A F8 */	addi r4, r4, lbl_80503AF8@l
/* 80262BBC 0025E81C  38 60 00 01 */	li r3, 1
/* 80262BC0 0025E820  7C 64 01 AE */	stbx r3, r4, r0
/* 80262BC4 0025E824  4E 80 00 20 */	blr

.global func_80262BC8
func_80262BC8:
/* 80262BC8 0025E828  3C 80 80 50 */	lis r4, lbl_80503AF8@ha
/* 80262BCC 0025E82C  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 80262BD0 0025E830  38 84 3A F8 */	addi r4, r4, lbl_80503AF8@l
/* 80262BD4 0025E834  7C 64 00 AE */	lbzx r3, r4, r0
/* 80262BD8 0025E838  4E 80 00 20 */	blr
lbl_80262BDC:
/* 80262BDC 0025E83C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80262BE0 0025E840  7C 08 02 A6 */	mflr r0
/* 80262BE4 0025E844  90 01 00 24 */	stw r0, 0x24(r1)
/* 80262BE8 0025E848  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80262BEC 0025E84C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80262BF0 0025E850  7C 7E 1B 78 */	mr r30, r3
/* 80262BF4 0025E854  54 63 04 3E */	clrlwi r3, r3, 0x10
/* 80262BF8 0025E858  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80262BFC 0025E85C  7C 9D 23 78 */	mr r29, r4
/* 80262C00 0025E860  4B FF FF B1 */	bl func_80262BB0
/* 80262C04 0025E864  2C 1E 00 04 */	cmpwi r30, 4
/* 80262C08 0025E868  41 82 00 20 */	beq lbl_80262C28
/* 80262C0C 0025E86C  40 80 00 10 */	bge lbl_80262C1C
/* 80262C10 0025E870  2C 1E 00 03 */	cmpwi r30, 3
/* 80262C14 0025E874  40 80 01 00 */	bge lbl_80262D14
/* 80262C18 0025E878  48 00 01 34 */	b lbl_80262D4C
lbl_80262C1C:
/* 80262C1C 0025E87C  2C 1E 00 06 */	cmpwi r30, 6
/* 80262C20 0025E880  40 80 01 2C */	bge lbl_80262D4C
/* 80262C24 0025E884  48 00 00 60 */	b lbl_80262C84
lbl_80262C28:
/* 80262C28 0025E888  83 DD 00 10 */	lwz r30, 0x10(r29)
/* 80262C2C 0025E88C  38 00 00 01 */	li r0, 1
/* 80262C30 0025E890  7C 1F F0 30 */	slw r31, r0, r30
/* 80262C34 0025E894  4B FF B3 9D */	bl func_8025DFD0
/* 80262C38 0025E898  4B FF B6 D5 */	bl func_8025E30C
/* 80262C3C 0025E89C  A0 03 0F 08 */	lhz r0, 0xf08(r3)
/* 80262C40 0025E8A0  7F E0 00 39 */	and. r0, r31, r0
/* 80262C44 0025E8A4  40 82 01 08 */	bne lbl_80262D4C
/* 80262C48 0025E8A8  4B FF B3 89 */	bl func_8025DFD0
/* 80262C4C 0025E8AC  4B FF B6 C1 */	bl func_8025E30C
/* 80262C50 0025E8B0  A0 03 0F 08 */	lhz r0, 0xf08(r3)
/* 80262C54 0025E8B4  7C 00 FB 78 */	or r0, r0, r31
/* 80262C58 0025E8B8  B0 03 0F 08 */	sth r0, 0xf08(r3)
/* 80262C5C 0025E8BC  4B FF B3 75 */	bl func_8025DFD0
/* 80262C60 0025E8C0  4B FF B6 AD */	bl func_8025E30C
/* 80262C64 0025E8C4  57 C0 07 3E */	clrlwi r0, r30, 0x1c
/* 80262C68 0025E8C8  38 9D 00 18 */	addi r4, r29, 0x18
/* 80262C6C 0025E8CC  1C 00 00 06 */	mulli r0, r0, 6
/* 80262C70 0025E8D0  38 A0 00 06 */	li r5, 6
/* 80262C74 0025E8D4  7C 63 02 14 */	add r3, r3, r0
/* 80262C78 0025E8D8  38 63 0F 0C */	addi r3, r3, 0xf0c
/* 80262C7C 0025E8DC  4B DA 13 85 */	bl memcpy
/* 80262C80 0025E8E0  48 00 00 CC */	b lbl_80262D4C
lbl_80262C84:
/* 80262C84 0025E8E4  80 1D 00 10 */	lwz r0, 0x10(r29)
/* 80262C88 0025E8E8  38 60 00 01 */	li r3, 1
/* 80262C8C 0025E8EC  7C 7F 00 30 */	slw r31, r3, r0
/* 80262C90 0025E8F0  4B FF B3 41 */	bl func_8025DFD0
/* 80262C94 0025E8F4  4B FF B6 79 */	bl func_8025E30C
/* 80262C98 0025E8F8  A0 03 0F 08 */	lhz r0, 0xf08(r3)
/* 80262C9C 0025E8FC  7F E0 00 39 */	and. r0, r31, r0
/* 80262CA0 0025E900  41 82 00 AC */	beq lbl_80262D4C
/* 80262CA4 0025E904  3C 60 00 01 */	lis r3, 0x0000C003@ha
/* 80262CA8 0025E908  80 9D 00 14 */	lwz r4, 0x14(r29)
/* 80262CAC 0025E90C  38 03 C0 03 */	addi r0, r3, 0x0000C003@l
/* 80262CB0 0025E910  7C 04 00 00 */	cmpw r4, r0
/* 80262CB4 0025E914  40 80 00 18 */	bge lbl_80262CCC
/* 80262CB8 0025E918  38 03 80 01 */	addi r0, r3, -32767
/* 80262CBC 0025E91C  7C 04 00 00 */	cmpw r4, r0
/* 80262CC0 0025E920  41 82 00 3C */	beq lbl_80262CFC
/* 80262CC4 0025E924  41 80 00 38 */	blt lbl_80262CFC
/* 80262CC8 0025E928  48 00 00 34 */	b lbl_80262CFC
lbl_80262CCC:
/* 80262CCC 0025E92C  38 03 F0 03 */	addi r0, r3, -4093
/* 80262CD0 0025E930  7C 04 00 00 */	cmpw r4, r0
/* 80262CD4 0025E934  40 80 00 28 */	bge lbl_80262CFC
/* 80262CD8 0025E938  38 03 F0 01 */	addi r0, r3, -4095
/* 80262CDC 0025E93C  7C 04 00 00 */	cmpw r4, r0
/* 80262CE0 0025E940  40 80 00 08 */	bge lbl_80262CE8
/* 80262CE4 0025E944  48 00 00 18 */	b lbl_80262CFC
lbl_80262CE8:
/* 80262CE8 0025E948  3B E0 00 00 */	li r31, 0
/* 80262CEC 0025E94C  4B FF B2 E5 */	bl func_8025DFD0
/* 80262CF0 0025E950  4B FF B6 1D */	bl func_8025E30C
/* 80262CF4 0025E954  B3 E3 0F 08 */	sth r31, 0xf08(r3)
/* 80262CF8 0025E958  48 00 00 54 */	b lbl_80262D4C
lbl_80262CFC:
/* 80262CFC 0025E95C  4B FF B2 D5 */	bl func_8025DFD0
/* 80262D00 0025E960  4B FF B6 0D */	bl func_8025E30C
/* 80262D04 0025E964  A0 03 0F 08 */	lhz r0, 0xf08(r3)
/* 80262D08 0025E968  7C 00 F8 78 */	andc r0, r0, r31
/* 80262D0C 0025E96C  B0 03 0F 08 */	sth r0, 0xf08(r3)
/* 80262D10 0025E970  48 00 00 3C */	b lbl_80262D4C
lbl_80262D14:
/* 80262D14 0025E974  83 FD 00 18 */	lwz r31, 0x18(r29)
/* 80262D18 0025E978  83 DD 00 10 */	lwz r30, 0x10(r29)
/* 80262D1C 0025E97C  2C 1F 00 00 */	cmpwi r31, 0
/* 80262D20 0025E980  83 BD 00 14 */	lwz r29, 0x14(r29)
/* 80262D24 0025E984  41 82 00 28 */	beq lbl_80262D4C
/* 80262D28 0025E988  28 1F 00 50 */	cmplwi r31, 0x50
/* 80262D2C 0025E98C  41 81 00 20 */	bgt lbl_80262D4C
/* 80262D30 0025E990  4B FF B2 A1 */	bl func_8025DFD0
/* 80262D34 0025E994  4B FF B5 D9 */	bl func_8025E30C
/* 80262D38 0025E998  7F A4 EB 78 */	mr r4, r29
/* 80262D3C 0025E99C  57 E5 04 3E */	clrlwi r5, r31, 0x10
/* 80262D40 0025E9A0  57 C6 06 3E */	clrlwi r6, r30, 0x18
/* 80262D44 0025E9A4  38 E0 00 00 */	li r7, 0
/* 80262D48 0025E9A8  4B FF BF 21 */	bl func_8025EC68
lbl_80262D4C:
/* 80262D4C 0025E9AC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80262D50 0025E9B0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80262D54 0025E9B4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80262D58 0025E9B8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80262D5C 0025E9BC  7C 08 03 A6 */	mtlr r0
/* 80262D60 0025E9C0  38 21 00 20 */	addi r1, r1, 0x20
/* 80262D64 0025E9C4  4E 80 00 20 */	blr
lbl_80262D68:
/* 80262D68 0025E9C8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80262D6C 0025E9CC  7C 08 02 A6 */	mflr r0
/* 80262D70 0025E9D0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80262D74 0025E9D4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80262D78 0025E9D8  93 C1 00 08 */	stw r30, 8(r1)
/* 80262D7C 0025E9DC  4B FF B2 55 */	bl func_8025DFD0
/* 80262D80 0025E9E0  4B FF B5 8D */	bl func_8025E30C
/* 80262D84 0025E9E4  80 03 10 0C */	lwz r0, 0x100c(r3)
/* 80262D88 0025E9E8  2C 00 00 01 */	cmpwi r0, 1
/* 80262D8C 0025E9EC  40 81 00 CC */	ble lbl_80262E58
/* 80262D90 0025E9F0  4B FF B2 41 */	bl func_8025DFD0
/* 80262D94 0025E9F4  4B FF B5 79 */	bl func_8025E30C
/* 80262D98 0025E9F8  80 83 10 08 */	lwz r4, 0x1008(r3)
/* 80262D9C 0025E9FC  38 04 00 01 */	addi r0, r4, 1
/* 80262DA0 0025EA00  90 03 10 08 */	stw r0, 0x1008(r3)
/* 80262DA4 0025EA04  4B FF B2 2D */	bl func_8025DFD0
/* 80262DA8 0025EA08  4B FF B5 65 */	bl func_8025E30C
/* 80262DAC 0025EA0C  83 E3 10 0C */	lwz r31, 0x100c(r3)
/* 80262DB0 0025EA10  4B FF B2 21 */	bl func_8025DFD0
/* 80262DB4 0025EA14  4B FF B5 59 */	bl func_8025E30C
/* 80262DB8 0025EA18  80 03 10 08 */	lwz r0, 0x1008(r3)
/* 80262DBC 0025EA1C  7C 00 F8 00 */	cmpw r0, r31
/* 80262DC0 0025EA20  41 80 00 14 */	blt lbl_80262DD4
/* 80262DC4 0025EA24  3B E0 00 00 */	li r31, 0
/* 80262DC8 0025EA28  4B FF B2 09 */	bl func_8025DFD0
/* 80262DCC 0025EA2C  4B FF B5 41 */	bl func_8025E30C
/* 80262DD0 0025EA30  93 E3 10 08 */	stw r31, 0x1008(r3)
lbl_80262DD4:
/* 80262DD4 0025EA34  3F E0 00 01 */	lis r31, 0x00008000@ha
/* 80262DD8 0025EA38  38 7F 80 00 */	addi r3, r31, 0x00008000@l
/* 80262DDC 0025EA3C  4B FF B6 99 */	bl func_8025E474
/* 80262DE0 0025EA40  3C A0 80 00 */	lis r5, 0x800000F8@ha
/* 80262DE4 0025EA44  3C 80 10 62 */	lis r4, 0x10624DD3@ha
/* 80262DE8 0025EA48  80 A5 00 F8 */	lwz r5, 0x800000F8@l(r5)
/* 80262DEC 0025EA4C  38 C4 4D D3 */	addi r6, r4, 0x10624DD3@l
/* 80262DF0 0025EA50  38 00 00 0A */	li r0, 0xa
/* 80262DF4 0025EA54  38 80 00 00 */	li r4, 0
/* 80262DF8 0025EA58  54 A5 F0 BE */	srwi r5, r5, 2
/* 80262DFC 0025EA5C  7C 7E 1B 78 */	mr r30, r3
/* 80262E00 0025EA60  7C A6 28 16 */	mulhwu r5, r6, r5
/* 80262E04 0025EA64  7C 64 01 D6 */	mullw r3, r4, r0
/* 80262E08 0025EA68  54 A4 D1 BE */	srwi r4, r5, 6
/* 80262E0C 0025EA6C  7C 04 00 16 */	mulhwu r0, r4, r0
/* 80262E10 0025EA70  1C 84 00 0A */	mulli r4, r4, 0xa
/* 80262E14 0025EA74  7C 60 1A 14 */	add r3, r0, r3
/* 80262E18 0025EA78  48 00 F8 ED */	bl OSSleepTicks
/* 80262E1C 0025EA7C  7F C3 F3 78 */	mr r3, r30
/* 80262E20 0025EA80  38 9F 80 00 */	addi r4, r31, -32768
/* 80262E24 0025EA84  48 00 78 E9 */	bl DCZeroRange
/* 80262E28 0025EA88  7F C3 F3 78 */	mr r3, r30
/* 80262E2C 0025EA8C  4B FF B6 A5 */	bl func_8025E4D0
/* 80262E30 0025EA90  4B FF B1 A1 */	bl func_8025DFD0
/* 80262E34 0025EA94  4B FF B4 D9 */	bl func_8025E30C
/* 80262E38 0025EA98  80 03 10 08 */	lwz r0, 0x1008(r3)
/* 80262E3C 0025EA9C  1F E0 00 70 */	mulli r31, r0, 0x70
/* 80262E40 0025EAA0  4B FF B1 91 */	bl func_8025DFD0
/* 80262E44 0025EAA4  4B FF B4 C9 */	bl func_8025E30C
/* 80262E48 0025EAA8  80 03 10 10 */	lwz r0, 0x1010(r3)
/* 80262E4C 0025EAAC  38 80 00 70 */	li r4, 0x70
/* 80262E50 0025EAB0  7C 60 FA 14 */	add r3, r0, r31
/* 80262E54 0025EAB4  4B FF 89 E5 */	bl func_8025B838
lbl_80262E58:
/* 80262E58 0025EAB8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80262E5C 0025EABC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80262E60 0025EAC0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80262E64 0025EAC4  7C 08 03 A6 */	mtlr r0
/* 80262E68 0025EAC8  38 21 00 10 */	addi r1, r1, 0x10
/* 80262E6C 0025EACC  4E 80 00 20 */	blr

.global func_80262E70
func_80262E70:
/* 80262E70 0025EAD0  38 A0 00 01 */	li r5, 1
/* 80262E74 0025EAD4  38 6D A7 38 */	addi r3, r13, lbl_8063F9F8-_SDA_BASE_
/* 80262E78 0025EAD8  38 80 00 04 */	li r4, 4
/* 80262E7C 0025EADC  38 00 00 00 */	li r0, 0
/* 80262E80 0025EAE0  98 AD A7 38 */	stb r5, lbl_8063F9F8-_SDA_BASE_(r13)
/* 80262E84 0025EAE4  B0 83 00 02 */	sth r4, 2(r3)
/* 80262E88 0025EAE8  98 03 00 04 */	stb r0, 4(r3)
/* 80262E8C 0025EAEC  4E 80 00 20 */	blr