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

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

.global GetButtonIndex
GetButtonIndex:
/* 80162784 0015E3E4  7C 60 00 34 */	cntlzw r0, r3
/* 80162788 0015E3E8  20 60 00 20 */	subfic r3, r0, 0x20
/* 8016278C 0015E3EC  4E 80 00 20 */	blr

.global func_80162790
func_80162790:
/* 80162790 0015E3F0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80162794 0015E3F4  7C 08 02 A6 */	mflr r0
/* 80162798 0015E3F8  3C 60 80 64 */	lis r3, lbl_8063CE34@ha
/* 8016279C 0015E3FC  90 01 00 24 */	stw r0, 0x24(r1)
/* 801627A0 0015E400  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801627A4 0015E404  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801627A8 0015E408  3B C3 CE 34 */	addi r30, r3, lbl_8063CE34@l
/* 801627AC 0015E40C  38 7E 00 44 */	addi r3, r30, 0x44
/* 801627B0 0015E410  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801627B4 0015E414  93 81 00 10 */	stw r28, 0x10(r1)
/* 801627B8 0015E418  48 23 3E E5 */	bl func_8039669C
/* 801627BC 0015E41C  7C 7F 1B 78 */	mr r31, r3
/* 801627C0 0015E420  3B A0 00 00 */	li r29, 0
/* 801627C4 0015E424  3B 80 00 00 */	li r28, 0
/* 801627C8 0015E428  48 00 00 2C */	b lbl_801627F4
lbl_801627CC:
/* 801627CC 0015E42C  7F 84 E3 78 */	mr r4, r28
/* 801627D0 0015E430  7F A5 EB 78 */	mr r5, r29
/* 801627D4 0015E434  38 7E 00 44 */	addi r3, r30, 0x44
/* 801627D8 0015E438  48 23 3F 7D */	bl func_80396754
/* 801627DC 0015E43C  7F 84 E3 78 */	mr r4, r28
/* 801627E0 0015E440  38 7E 00 44 */	addi r3, r30, 0x44
/* 801627E4 0015E444  48 23 3E D5 */	bl func_803966B8
/* 801627E8 0015E448  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 801627EC 0015E44C  3B 9C 00 01 */	addi r28, r28, 1
/* 801627F0 0015E450  7F BD 02 14 */	add r29, r29, r0
lbl_801627F4:
/* 801627F4 0015E454  7C 1C F8 40 */	cmplw r28, r31
/* 801627F8 0015E458  41 80 FF D4 */	blt lbl_801627CC
/* 801627FC 0015E45C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80162800 0015E460  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80162804 0015E464  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80162808 0015E468  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8016280C 0015E46C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 80162810 0015E470  7C 08 03 A6 */	mtlr r0
/* 80162814 0015E474  38 21 00 20 */	addi r1, r1, 0x20
/* 80162818 0015E478  4E 80 00 20 */	blr

.global func_8016281C
func_8016281C:
/* 8016281C 0015E47C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80162820 0015E480  7C 08 02 A6 */	mflr r0
/* 80162824 0015E484  3C 80 80 64 */	lis r4, lbl_8063CE34@ha
/* 80162828 0015E488  90 01 00 24 */	stw r0, 0x24(r1)
/* 8016282C 0015E48C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80162830 0015E490  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80162834 0015E494  3B C4 CE 34 */	addi r30, r4, lbl_8063CE34@l
/* 80162838 0015E498  93 A1 00 14 */	stw r29, 0x14(r1)
/* 8016283C 0015E49C  7C 7D 1B 78 */	mr r29, r3
/* 80162840 0015E4A0  38 7E 00 44 */	addi r3, r30, 0x44
/* 80162844 0015E4A4  48 23 3E 59 */	bl func_8039669C
/* 80162848 0015E4A8  9B AD 9D 7E */	stb r29, lbl_8063F03E-_SDA_BASE_(r13)
/* 8016284C 0015E4AC  7C 7F 1B 78 */	mr r31, r3
/* 80162850 0015E4B0  3B A0 00 00 */	li r29, 0
/* 80162854 0015E4B4  48 00 00 24 */	b lbl_80162878
lbl_80162858:
/* 80162858 0015E4B8  7F A4 EB 78 */	mr r4, r29
/* 8016285C 0015E4BC  38 7E 00 44 */	addi r3, r30, 0x44
/* 80162860 0015E4C0  48 23 3E 8D */	bl func_803966EC
/* 80162864 0015E4C4  7C 64 1B 78 */	mr r4, r3
/* 80162868 0015E4C8  7F A3 EB 78 */	mr r3, r29
/* 8016286C 0015E4CC  38 A0 00 00 */	li r5, 0
/* 80162870 0015E4D0  48 00 00 D1 */	bl func_80162940
/* 80162874 0015E4D4  3B BD 00 01 */	addi r29, r29, 1
lbl_80162878:
/* 80162878 0015E4D8  7C 1D F8 40 */	cmplw r29, r31
/* 8016287C 0015E4DC  41 80 FF DC */	blt lbl_80162858
/* 80162880 0015E4E0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80162884 0015E4E4  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80162888 0015E4E8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 8016288C 0015E4EC  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80162890 0015E4F0  7C 08 03 A6 */	mtlr r0
/* 80162894 0015E4F4  38 21 00 20 */	addi r1, r1, 0x20
/* 80162898 0015E4F8  4E 80 00 20 */	blr

.global func_8016289C
func_8016289C:
/* 8016289C 0015E4FC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801628A0 0015E500  7C 08 02 A6 */	mflr r0
/* 801628A4 0015E504  3C 80 80 64 */	lis r4, lbl_8063CE34@ha
/* 801628A8 0015E508  90 01 00 24 */	stw r0, 0x24(r1)
/* 801628AC 0015E50C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801628B0 0015E510  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801628B4 0015E514  3B C4 CE 34 */	addi r30, r4, lbl_8063CE34@l
/* 801628B8 0015E518  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801628BC 0015E51C  7C 7D 1B 78 */	mr r29, r3
/* 801628C0 0015E520  38 7E 00 44 */	addi r3, r30, 0x44
/* 801628C4 0015E524  48 23 3D D9 */	bl func_8039669C
/* 801628C8 0015E528  9B AD 9D 7E */	stb r29, lbl_8063F03E-_SDA_BASE_(r13)
/* 801628CC 0015E52C  7C 7F 1B 78 */	mr r31, r3
/* 801628D0 0015E530  3B A0 00 00 */	li r29, 0
/* 801628D4 0015E534  48 00 00 3C */	b lbl_80162910
lbl_801628D8:
/* 801628D8 0015E538  7F A4 EB 78 */	mr r4, r29
/* 801628DC 0015E53C  38 7E 00 44 */	addi r3, r30, 0x44
/* 801628E0 0015E540  48 23 3E AD */	bl func_8039678C
/* 801628E4 0015E544  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 801628E8 0015E548  28 00 00 01 */	cmplwi r0, 1
/* 801628EC 0015E54C  40 82 00 20 */	bne lbl_8016290C
/* 801628F0 0015E550  7F A4 EB 78 */	mr r4, r29
/* 801628F4 0015E554  38 7E 00 44 */	addi r3, r30, 0x44
/* 801628F8 0015E558  48 23 3D F5 */	bl func_803966EC
/* 801628FC 0015E55C  7C 64 1B 78 */	mr r4, r3
/* 80162900 0015E560  7F A3 EB 78 */	mr r3, r29
/* 80162904 0015E564  38 A0 00 00 */	li r5, 0
/* 80162908 0015E568  48 00 00 39 */	bl func_80162940
lbl_8016290C:
/* 8016290C 0015E56C  3B BD 00 01 */	addi r29, r29, 1
lbl_80162910:
/* 80162910 0015E570  7C 1D F8 40 */	cmplw r29, r31
/* 80162914 0015E574  41 80 FF C4 */	blt lbl_801628D8
/* 80162918 0015E578  80 01 00 24 */	lwz r0, 0x24(r1)
/* 8016291C 0015E57C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80162920 0015E580  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80162924 0015E584  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80162928 0015E588  7C 08 03 A6 */	mtlr r0
/* 8016292C 0015E58C  38 21 00 20 */	addi r1, r1, 0x20
/* 80162930 0015E590  4E 80 00 20 */	blr

.global func_80162934
func_80162934:
/* 80162934 0015E594  38 80 00 01 */	li r4, 1
/* 80162938 0015E598  38 A0 00 01 */	li r5, 1
/* 8016293C 0015E59C  48 00 00 04 */	b func_80162940

.global func_80162940
func_80162940:
/* 80162940 0015E5A0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80162944 0015E5A4  7C 08 02 A6 */	mflr r0
/* 80162948 0015E5A8  90 01 00 24 */	stw r0, 0x24(r1)
/* 8016294C 0015E5AC  39 61 00 20 */	addi r11, r1, 0x20
/* 80162950 0015E5B0  48 06 47 D9 */	bl _savegpr_27
/* 80162954 0015E5B4  3F A0 80 64 */	lis r29, lbl_8063CE34@ha
/* 80162958 0015E5B8  7C 7E 1B 78 */	mr r30, r3
/* 8016295C 0015E5BC  3B BD CE 34 */	addi r29, r29, lbl_8063CE34@l
/* 80162960 0015E5C0  7C 9C 23 78 */	mr r28, r4
/* 80162964 0015E5C4  7C BB 2B 78 */	mr r27, r5
/* 80162968 0015E5C8  7F C4 F3 78 */	mr r4, r30
/* 8016296C 0015E5CC  38 7D 00 44 */	addi r3, r29, 0x44
/* 80162970 0015E5D0  48 23 3D 49 */	bl func_803966B8
/* 80162974 0015E5D4  54 7F 06 3E */	clrlwi r31, r3, 0x18
/* 80162978 0015E5D8  7F C4 F3 78 */	mr r4, r30
/* 8016297C 0015E5DC  38 7D 00 44 */	addi r3, r29, 0x44
/* 80162980 0015E5E0  48 23 3D A1 */	bl func_80396720
/* 80162984 0015E5E4  2C 1B 00 00 */	cmpwi r27, 0
/* 80162988 0015E5E8  54 7B D9 7E */	srwi r27, r3, 5
/* 8016298C 0015E5EC  54 7E 06 FE */	clrlwi r30, r3, 0x1b
/* 80162990 0015E5F0  41 82 00 0C */	beq lbl_8016299C
/* 80162994 0015E5F4  4B FF CD 4D */	bl func_8015F6E0
/* 80162998 0015E5F8  48 00 00 0C */	b lbl_801629A4
lbl_8016299C:
/* 8016299C 0015E5FC  88 6D 9D 7E */	lbz r3, lbl_8063F03E-_SDA_BASE_(r13)
/* 801629A0 0015E600  4B FF CD 11 */	bl func_8015F6B0
lbl_801629A4:
/* 801629A4 0015E604  3F A3 00 01 */	addis r29, r3, 1
/* 801629A8 0015E608  7F 83 E3 78 */	mr r3, r28
/* 801629AC 0015E60C  3B BD 24 D8 */	addi r29, r29, 0x24d8
/* 801629B0 0015E610  4B FF FD D5 */	bl GetButtonIndex
/* 801629B4 0015E614  7C 03 F8 40 */	cmplw r3, r31
/* 801629B8 0015E618  40 81 00 18 */	ble lbl_801629D0
/* 801629BC 0015E61C  3C 60 80 42 */	lis r3, lbl_8041F078@ha
/* 801629C0 0015E620  57 E0 10 3A */	slwi r0, r31, 2
/* 801629C4 0015E624  38 63 F0 78 */	addi r3, r3, lbl_8041F078@l
/* 801629C8 0015E628  7C 03 00 2E */	lwzx r0, r3, r0
/* 801629CC 0015E62C  7F 9C 00 38 */	and r28, r28, r0
lbl_801629D0:
/* 801629D0 0015E630  28 1F 00 01 */	cmplwi r31, 1
/* 801629D4 0015E634  40 81 00 68 */	ble lbl_80162A3C
/* 801629D8 0015E638  3C 80 80 42 */	lis r4, lbl_8041F078@ha
/* 801629DC 0015E63C  57 63 10 3A */	slwi r3, r27, 2
/* 801629E0 0015E640  57 E0 10 3A */	slwi r0, r31, 2
/* 801629E4 0015E644  7C DF F2 14 */	add r6, r31, r30
/* 801629E8 0015E648  7C BD 1A 14 */	add r5, r29, r3
/* 801629EC 0015E64C  38 84 F0 78 */	addi r4, r4, lbl_8041F078@l
/* 801629F0 0015E650  7C 64 00 2E */	lwzx r3, r4, r0
/* 801629F4 0015E654  7F 80 F0 30 */	slw r0, r28, r30
/* 801629F8 0015E658  80 E5 00 00 */	lwz r7, 0(r5)
/* 801629FC 0015E65C  28 06 00 20 */	cmplwi r6, 0x20
/* 80162A00 0015E660  7C 63 F0 30 */	slw r3, r3, r30
/* 80162A04 0015E664  7C E7 18 78 */	andc r7, r7, r3
/* 80162A08 0015E668  7C 00 3B 78 */	or r0, r0, r7
/* 80162A0C 0015E66C  90 05 00 00 */	stw r0, 0(r5)
/* 80162A10 0015E670  41 80 00 68 */	blt lbl_80162A78
/* 80162A14 0015E674  38 E6 FF E0 */	addi r7, r6, -32
/* 80162A18 0015E678  80 C5 00 04 */	lwz r6, 4(r5)
/* 80162A1C 0015E67C  54 E0 10 3A */	slwi r0, r7, 2
/* 80162A20 0015E680  7C 64 00 2E */	lwzx r3, r4, r0
/* 80162A24 0015E684  7C 07 F8 50 */	subf r0, r7, r31
/* 80162A28 0015E688  7F 80 04 30 */	srw r0, r28, r0
/* 80162A2C 0015E68C  7C C6 18 78 */	andc r6, r6, r3
/* 80162A30 0015E690  7C 00 33 78 */	or r0, r0, r6
/* 80162A34 0015E694  90 05 00 04 */	stw r0, 4(r5)
/* 80162A38 0015E698  48 00 00 40 */	b lbl_80162A78
lbl_80162A3C:
/* 80162A3C 0015E69C  2C 1C 00 00 */	cmpwi r28, 0
/* 80162A40 0015E6A0  40 82 00 20 */	bne lbl_80162A60
/* 80162A44 0015E6A4  57 64 10 3A */	slwi r4, r27, 2
/* 80162A48 0015E6A8  38 00 00 01 */	li r0, 1
/* 80162A4C 0015E6AC  7C 7D 20 2E */	lwzx r3, r29, r4
/* 80162A50 0015E6B0  7C 00 F0 30 */	slw r0, r0, r30
/* 80162A54 0015E6B4  7C 60 00 78 */	andc r0, r3, r0
/* 80162A58 0015E6B8  7C 1D 21 2E */	stwx r0, r29, r4
/* 80162A5C 0015E6BC  48 00 00 1C */	b lbl_80162A78
lbl_80162A60:
/* 80162A60 0015E6C0  57 64 10 3A */	slwi r4, r27, 2
/* 80162A64 0015E6C4  38 00 00 01 */	li r0, 1
/* 80162A68 0015E6C8  7C 7D 20 2E */	lwzx r3, r29, r4
/* 80162A6C 0015E6CC  7C 00 F0 30 */	slw r0, r0, r30
/* 80162A70 0015E6D0  7C 60 03 78 */	or r0, r3, r0
/* 80162A74 0015E6D4  7C 1D 21 2E */	stwx r0, r29, r4
lbl_80162A78:
/* 80162A78 0015E6D8  39 61 00 20 */	addi r11, r1, 0x20
/* 80162A7C 0015E6DC  48 06 46 F9 */	bl _restgpr_27
/* 80162A80 0015E6E0  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80162A84 0015E6E4  7C 08 03 A6 */	mtlr r0
/* 80162A88 0015E6E8  38 21 00 20 */	addi r1, r1, 0x20
/* 80162A8C 0015E6EC  4E 80 00 20 */	blr

.global func_80162A90
func_80162A90:
/* 80162A90 0015E6F0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80162A94 0015E6F4  7C 08 02 A6 */	mflr r0
/* 80162A98 0015E6F8  90 01 00 24 */	stw r0, 0x24(r1)
/* 80162A9C 0015E6FC  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80162AA0 0015E700  3F E0 80 64 */	lis r31, lbl_8063CE34@ha
/* 80162AA4 0015E704  3B FF CE 34 */	addi r31, r31, lbl_8063CE34@l
/* 80162AA8 0015E708  93 C1 00 18 */	stw r30, 0x18(r1)
/* 80162AAC 0015E70C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 80162AB0 0015E710  7C 7D 1B 78 */	mr r29, r3
/* 80162AB4 0015E714  7F A4 EB 78 */	mr r4, r29
/* 80162AB8 0015E718  38 7F 00 44 */	addi r3, r31, 0x44
/* 80162ABC 0015E71C  48 23 3B FD */	bl func_803966B8
/* 80162AC0 0015E720  54 7E 06 3E */	clrlwi r30, r3, 0x18
/* 80162AC4 0015E724  7F A4 EB 78 */	mr r4, r29
/* 80162AC8 0015E728  38 7F 00 44 */	addi r3, r31, 0x44
/* 80162ACC 0015E72C  48 23 3C 55 */	bl func_80396720
/* 80162AD0 0015E730  54 7F D9 7E */	srwi r31, r3, 5
/* 80162AD4 0015E734  54 7D 06 FE */	clrlwi r29, r3, 0x1b
/* 80162AD8 0015E738  4B FF CC 09 */	bl func_8015F6E0
/* 80162ADC 0015E73C  28 1E 00 01 */	cmplwi r30, 1
/* 80162AE0 0015E740  3C A3 00 01 */	addis r5, r3, 1
/* 80162AE4 0015E744  38 A5 24 D8 */	addi r5, r5, 0x24d8
/* 80162AE8 0015E748  40 81 00 3C */	ble lbl_80162B24
/* 80162AEC 0015E74C  57 E0 10 3A */	slwi r0, r31, 2
/* 80162AF0 0015E750  3C 60 80 42 */	lis r3, lbl_8041F078@ha
/* 80162AF4 0015E754  7C 85 02 14 */	add r4, r5, r0
/* 80162AF8 0015E758  7C A5 00 2E */	lwzx r5, r5, r0
/* 80162AFC 0015E75C  80 C4 00 04 */	lwz r6, 4(r4)
/* 80162B00 0015E760  20 9D 00 20 */	subfic r4, r29, 0x20
/* 80162B04 0015E764  57 C0 10 3A */	slwi r0, r30, 2
/* 80162B08 0015E768  38 63 F0 78 */	addi r3, r3, lbl_8041F078@l
/* 80162B0C 0015E76C  7C A5 EC 30 */	srw r5, r5, r29
/* 80162B10 0015E770  7C C6 20 30 */	slw r6, r6, r4
/* 80162B14 0015E774  7C 03 00 2E */	lwzx r0, r3, r0
/* 80162B18 0015E778  7C C3 2B 78 */	or r3, r6, r5
/* 80162B1C 0015E77C  7C 63 00 38 */	and r3, r3, r0
/* 80162B20 0015E780  48 00 00 14 */	b lbl_80162B34
lbl_80162B24:
/* 80162B24 0015E784  57 E0 10 3A */	slwi r0, r31, 2
/* 80162B28 0015E788  7C 05 00 2E */	lwzx r0, r5, r0
/* 80162B2C 0015E78C  7C 00 EC 30 */	srw r0, r0, r29
/* 80162B30 0015E790  54 03 07 FE */	clrlwi r3, r0, 0x1f
lbl_80162B34:
/* 80162B34 0015E794  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80162B38 0015E798  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80162B3C 0015E79C  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80162B40 0015E7A0  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80162B44 0015E7A4  7C 08 03 A6 */	mtlr r0
/* 80162B48 0015E7A8  38 21 00 20 */	addi r1, r1, 0x20
/* 80162B4C 0015E7AC  4E 80 00 20 */	blr

.global func_80162B50
func_80162B50:
/* 80162B50 0015E7B0  38 A0 00 01 */	li r5, 1
/* 80162B54 0015E7B4  38 6D 9D 78 */	addi r3, r13, lbl_8063F038-_SDA_BASE_
/* 80162B58 0015E7B8  38 80 00 04 */	li r4, 4
/* 80162B5C 0015E7BC  38 00 00 00 */	li r0, 0
/* 80162B60 0015E7C0  98 AD 9D 78 */	stb r5, lbl_8063F038-_SDA_BASE_(r13)
/* 80162B64 0015E7C4  B0 83 00 02 */	sth r4, 2(r3)
/* 80162B68 0015E7C8  98 03 00 04 */	stb r0, 4(r3)
/* 80162B6C 0015E7CC  4E 80 00 20 */	blr