summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24Manage.s
blob: 372e88ea88a916a1c002385964c9e22ab5c39358 (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
.include "macros.inc"

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

.global NWC24iRegister
NWC24iRegister:
/* 80303054 002FECB4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80303058 002FECB8  7C 08 02 A6 */	mflr r0
/* 8030305C 002FECBC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80303060 002FECC0  80 0D AF A0 */	lwz r0, lbl_80640260-_SDA_BASE_(r13)
/* 80303064 002FECC4  2C 00 00 00 */	cmpwi r0, 0
/* 80303068 002FECC8  40 82 00 14 */	bne lbl_8030307C
/* 8030306C 002FECCC  80 6D 8C A0 */	lwz r3, lbl_8063DF60-_SDA_BASE_(r13)
/* 80303070 002FECD0  4B F6 65 E1 */	bl OSRegisterVersion
/* 80303074 002FECD4  38 00 00 01 */	li r0, 1
/* 80303078 002FECD8  90 0D AF A0 */	stw r0, lbl_80640260-_SDA_BASE_(r13)
lbl_8030307C:
/* 8030307C 002FECDC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80303080 002FECE0  7C 08 03 A6 */	mtlr r0
/* 80303084 002FECE4  38 21 00 10 */	addi r1, r1, 0x10
/* 80303088 002FECE8  4E 80 00 20 */	blr

.global NWC24OpenLib
NWC24OpenLib:
/* 8030308C 002FECEC  80 0D AF 94 */	lwz r0, lbl_80640254-_SDA_BASE_(r13)
/* 80303090 002FECF0  2C 00 00 02 */	cmpwi r0, 2
/* 80303094 002FECF4  40 82 00 0C */	bne lbl_803030A0
/* 80303098 002FECF8  38 60 FF E6 */	li r3, -26
/* 8030309C 002FECFC  4E 80 00 20 */	blr
lbl_803030A0:
/* 803030A0 002FED00  38 80 00 01 */	li r4, 1
/* 803030A4 002FED04  48 00 00 08 */	b NWC24OpenLibInternal
/* 803030A8 002FED08  4E 80 00 20 */	blr

NWC24OpenLibInternal:
/* 803030AC 002FED0C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803030B0 002FED10  7C 08 02 A6 */	mflr r0
/* 803030B4 002FED14  90 01 00 24 */	stw r0, 0x24(r1)
/* 803030B8 002FED18  38 00 00 00 */	li r0, 0
/* 803030BC 002FED1C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803030C0 002FED20  93 C1 00 18 */	stw r30, 0x18(r1)
/* 803030C4 002FED24  7C 7E 1B 78 */	mr r30, r3
/* 803030C8 002FED28  93 A1 00 14 */	stw r29, 0x14(r1)
/* 803030CC 002FED2C  7C 9D 23 78 */	mr r29, r4
/* 803030D0 002FED30  90 0D AF 9C */	stw r0, lbl_8064025C-_SDA_BASE_(r13)
/* 803030D4 002FED34  48 01 73 CD */	bl VFIsAvailable
/* 803030D8 002FED38  2C 03 00 00 */	cmpwi r3, 0
/* 803030DC 002FED3C  40 82 00 0C */	bne lbl_803030E8
/* 803030E0 002FED40  38 60 FF FF */	li r3, -1
/* 803030E4 002FED44  48 00 01 78 */	b lbl_8030325C
lbl_803030E8:
/* 803030E8 002FED48  80 0D AF 94 */	lwz r0, lbl_80640254-_SDA_BASE_(r13)
/* 803030EC 002FED4C  2C 00 00 01 */	cmpwi r0, 1
/* 803030F0 002FED50  40 82 00 0C */	bne lbl_803030FC
/* 803030F4 002FED54  38 60 FF F6 */	li r3, -10
/* 803030F8 002FED58  48 00 01 64 */	b lbl_8030325C
lbl_803030FC:
/* 803030FC 002FED5C  2C 00 00 03 */	cmpwi r0, 3
/* 80303100 002FED60  40 82 00 0C */	bne lbl_8030310C
/* 80303104 002FED64  38 60 FF E6 */	li r3, -26
/* 80303108 002FED68  48 00 01 54 */	b lbl_8030325C
lbl_8030310C:
/* 8030310C 002FED6C  2C 1E 00 00 */	cmpwi r30, 0
/* 80303110 002FED70  40 82 00 0C */	bne lbl_8030311C
/* 80303114 002FED74  38 60 FF FB */	li r3, -5
/* 80303118 002FED78  48 00 01 44 */	b lbl_8030325C
lbl_8030311C:
/* 8030311C 002FED7C  57 C0 06 FF */	clrlwi. r0, r30, 0x1b
/* 80303120 002FED80  41 82 00 0C */	beq lbl_8030312C
/* 80303124 002FED84  38 60 FF E9 */	li r3, -23
/* 80303128 002FED88  48 00 01 34 */	b lbl_8030325C
lbl_8030312C:
/* 8030312C 002FED8C  48 00 0C 85 */	bl NWC24iTrySuspendForOpenLib
/* 80303130 002FED90  2C 03 00 00 */	cmpwi r3, 0
/* 80303134 002FED94  40 82 00 F8 */	bne lbl_8030322C
/* 80303138 002FED98  80 0D AF A0 */	lwz r0, lbl_80640260-_SDA_BASE_(r13)
/* 8030313C 002FED9C  2C 00 00 00 */	cmpwi r0, 0
/* 80303140 002FEDA0  40 82 00 14 */	bne lbl_80303154
/* 80303144 002FEDA4  80 6D 8C A0 */	lwz r3, lbl_8063DF60-_SDA_BASE_(r13)
/* 80303148 002FEDA8  4B F6 65 09 */	bl OSRegisterVersion
/* 8030314C 002FEDAC  38 00 00 01 */	li r0, 1
/* 80303150 002FEDB0  90 0D AF A0 */	stw r0, lbl_80640260-_SDA_BASE_(r13)
lbl_80303154:
/* 80303154 002FEDB4  80 0D AF 98 */	lwz r0, lbl_80640258-_SDA_BASE_(r13)
/* 80303158 002FEDB8  38 7E 13 00 */	addi r3, r30, 0x1300
/* 8030315C 002FEDBC  93 CD AF 90 */	stw r30, lbl_80640250-_SDA_BASE_(r13)
/* 80303160 002FEDC0  54 00 00 3C */	rlwinm r0, r0, 0, 0, 0x1e
/* 80303164 002FEDC4  90 0D AF 98 */	stw r0, lbl_80640258-_SDA_BASE_(r13)
/* 80303168 002FEDC8  48 00 05 AD */	bl NWC24InitBase64Table
/* 8030316C 002FEDCC  3B C0 00 00 */	li r30, 0
/* 80303170 002FEDD0  3B E0 00 00 */	li r31, 0
/* 80303174 002FEDD4  4B FF FA F9 */	bl NWC24iConfigOpen
/* 80303178 002FEDD8  2C 03 00 00 */	cmpwi r3, 0
/* 8030317C 002FEDDC  41 82 00 0C */	beq lbl_80303188
/* 80303180 002FEDE0  7C 7F 1B 78 */	mr r31, r3
/* 80303184 002FEDE4  63 DE 00 04 */	ori r30, r30, 4
lbl_80303188:
/* 80303188 002FEDE8  48 00 02 25 */	bl NWC24iOpenMBox
/* 8030318C 002FEDEC  2C 03 00 00 */	cmpwi r3, 0
/* 80303190 002FEDF0  41 82 00 0C */	beq lbl_8030319C
/* 80303194 002FEDF4  7C 7F 1B 78 */	mr r31, r3
/* 80303198 002FEDF8  63 DE 00 04 */	ori r30, r30, 4
lbl_8030319C:
/* 8030319C 002FEDFC  48 00 10 CD */	bl NWC24iOpenFriendList
/* 803031A0 002FEE00  2C 03 00 00 */	cmpwi r3, 0
/* 803031A4 002FEE04  41 82 00 0C */	beq lbl_803031B0
/* 803031A8 002FEE08  7C 7F 1B 78 */	mr r31, r3
/* 803031AC 002FEE0C  63 DE 00 04 */	ori r30, r30, 4
lbl_803031B0:
/* 803031B0 002FEE10  48 00 11 D5 */	bl NWC24iOpenSecretFriendList
/* 803031B4 002FEE14  2C 03 00 00 */	cmpwi r3, 0
/* 803031B8 002FEE18  41 82 00 1C */	beq lbl_803031D4
/* 803031BC 002FEE1C  2C 03 FF EC */	cmpwi r3, -20
/* 803031C0 002FEE20  7C 7F 1B 78 */	mr r31, r3
/* 803031C4 002FEE24  63 C0 00 01 */	ori r0, r30, 1
/* 803031C8 002FEE28  40 82 00 08 */	bne lbl_803031D0
/* 803031CC 002FEE2C  63 C0 00 04 */	ori r0, r30, 4
lbl_803031D0:
/* 803031D0 002FEE30  7C 1E 03 78 */	mr r30, r0
lbl_803031D4:
/* 803031D4 002FEE34  48 00 16 1D */	bl NWC24iOpenDlTaskList
/* 803031D8 002FEE38  2C 03 00 00 */	cmpwi r3, 0
/* 803031DC 002FEE3C  40 80 00 1C */	bge lbl_803031F8
/* 803031E0 002FEE40  2C 03 FF EC */	cmpwi r3, -20
/* 803031E4 002FEE44  7C 7F 1B 78 */	mr r31, r3
/* 803031E8 002FEE48  63 C0 00 02 */	ori r0, r30, 2
/* 803031EC 002FEE4C  40 82 00 08 */	bne lbl_803031F4
/* 803031F0 002FEE50  63 C0 00 04 */	ori r0, r30, 4
lbl_803031F4:
/* 803031F4 002FEE54  7C 1E 03 78 */	mr r30, r0
lbl_803031F8:
/* 803031F8 002FEE58  28 1E 00 03 */	cmplwi r30, 3
/* 803031FC 002FEE5C  40 82 00 08 */	bne lbl_80303204
/* 80303200 002FEE60  3B E0 FF CF */	li r31, -49
lbl_80303204:
/* 80303204 002FEE64  2C 1E 00 00 */	cmpwi r30, 0
/* 80303208 002FEE68  41 82 00 18 */	beq lbl_80303220
/* 8030320C 002FEE6C  38 00 00 00 */	li r0, 0
/* 80303210 002FEE70  90 0D AF 90 */	stw r0, lbl_80640250-_SDA_BASE_(r13)
/* 80303214 002FEE74  48 00 0C 7D */	bl NWC24iResumeForCloseLib
/* 80303218 002FEE78  7F E3 FB 78 */	mr r3, r31
/* 8030321C 002FEE7C  48 00 00 10 */	b lbl_8030322C
lbl_80303220:
/* 80303220 002FEE80  93 AD AF 94 */	stw r29, lbl_80640254-_SDA_BASE_(r13)
/* 80303224 002FEE84  38 60 00 00 */	li r3, 0
/* 80303228 002FEE88  48 00 00 34 */	b lbl_8030325C
lbl_8030322C:
/* 8030322C 002FEE8C  38 03 00 31 */	addi r0, r3, 0x31
/* 80303230 002FEE90  28 00 00 30 */	cmplwi r0, 0x30
/* 80303234 002FEE94  41 81 00 28 */	bgt lbl_8030325C
/* 80303238 002FEE98  3C 80 80 44 */	lis r4, lbl_804463BC@ha
/* 8030323C 002FEE9C  54 00 10 3A */	slwi r0, r0, 2
/* 80303240 002FEEA0  38 84 63 BC */	addi r4, r4, lbl_804463BC@l
/* 80303244 002FEEA4  7C 84 00 2E */	lwzx r4, r4, r0
/* 80303248 002FEEA8  7C 89 03 A6 */	mtctr r4
/* 8030324C 002FEEAC  4E 80 04 20 */	bctr
/* 80303250 002FEEB0  3C 83 FF FE */	addis r4, r3, 0xfffe
/* 80303254 002FEEB4  38 04 56 38 */	addi r0, r4, 0x5638
/* 80303258 002FEEB8  90 0D AF 9C */	stw r0, lbl_8064025C-_SDA_BASE_(r13)
lbl_8030325C:
/* 8030325C 002FEEBC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80303260 002FEEC0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80303264 002FEEC4  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80303268 002FEEC8  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8030326C 002FEECC  7C 08 03 A6 */	mtlr r0
/* 80303270 002FEED0  38 21 00 20 */	addi r1, r1, 0x20
/* 80303274 002FEED4  4E 80 00 20 */	blr

.global NWC24CloseLib
NWC24CloseLib:
/* 80303278 002FEED8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8030327C 002FEEDC  7C 08 02 A6 */	mflr r0
/* 80303280 002FEEE0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80303284 002FEEE4  80 0D AF 94 */	lwz r0, lbl_80640254-_SDA_BASE_(r13)
/* 80303288 002FEEE8  2C 00 00 01 */	cmpwi r0, 1
/* 8030328C 002FEEEC  41 82 00 0C */	beq lbl_80303298
/* 80303290 002FEEF0  38 60 FF F7 */	li r3, -9
/* 80303294 002FEEF4  48 00 00 40 */	b lbl_803032D4
lbl_80303298:
/* 80303298 002FEEF8  4B FF FA E1 */	bl NWC24iConfigFlush
/* 8030329C 002FEEFC  2C 03 00 00 */	cmpwi r3, 0
/* 803032A0 002FEF00  41 82 00 08 */	beq lbl_803032A8
/* 803032A4 002FEF04  48 00 00 30 */	b lbl_803032D4
lbl_803032A8:
/* 803032A8 002FEF08  48 00 15 95 */	bl NWC24iCloseDlTaskList
/* 803032AC 002FEF0C  2C 03 00 00 */	cmpwi r3, 0
/* 803032B0 002FEF10  40 80 00 08 */	bge lbl_803032B8
/* 803032B4 002FEF14  48 00 00 20 */	b lbl_803032D4
lbl_803032B8:
/* 803032B8 002FEF18  48 00 0B D9 */	bl NWC24iResumeForCloseLib
/* 803032BC 002FEF1C  2C 03 00 00 */	cmpwi r3, 0
/* 803032C0 002FEF20  41 82 00 08 */	beq lbl_803032C8
/* 803032C4 002FEF24  48 00 00 10 */	b lbl_803032D4
lbl_803032C8:
/* 803032C8 002FEF28  38 00 00 00 */	li r0, 0
/* 803032CC 002FEF2C  90 0D AF 90 */	stw r0, lbl_80640250-_SDA_BASE_(r13)
/* 803032D0 002FEF30  90 0D AF 94 */	stw r0, lbl_80640254-_SDA_BASE_(r13)
lbl_803032D4:
/* 803032D4 002FEF34  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803032D8 002FEF38  7C 08 03 A6 */	mtlr r0
/* 803032DC 002FEF3C  38 21 00 10 */	addi r1, r1, 0x10
/* 803032E0 002FEF40  4E 80 00 20 */	blr

.global NWC24IsMsgLibOpened
NWC24IsMsgLibOpened:
/* 803032E4 002FEF44  80 6D AF 94 */	lwz r3, lbl_80640254-_SDA_BASE_(r13)
/* 803032E8 002FEF48  38 03 FF FF */	addi r0, r3, -1
/* 803032EC 002FEF4C  7C 00 00 34 */	cntlzw r0, r0
/* 803032F0 002FEF50  54 03 D9 7E */	srwi r3, r0, 5
/* 803032F4 002FEF54  4E 80 00 20 */	blr

.global NWC24IsMsgLibOpenedByTool
NWC24IsMsgLibOpenedByTool:
/* 803032F8 002FEF58  80 6D AF 94 */	lwz r3, lbl_80640254-_SDA_BASE_(r13)
/* 803032FC 002FEF5C  38 03 FF FE */	addi r0, r3, -2
/* 80303300 002FEF60  7C 00 00 34 */	cntlzw r0, r0
/* 80303304 002FEF64  54 03 D9 7E */	srwi r3, r0, 5
/* 80303308 002FEF68  4E 80 00 20 */	blr

.global NWC24BlockOpenMsgLib
NWC24BlockOpenMsgLib:
/* 8030330C 002FEF6C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80303310 002FEF70  7C 08 02 A6 */	mflr r0
/* 80303314 002FEF74  90 01 00 14 */	stw r0, 0x14(r1)
/* 80303318 002FEF78  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8030331C 002FEF7C  3B E0 00 00 */	li r31, 0
/* 80303320 002FEF80  93 C1 00 08 */	stw r30, 8(r1)
/* 80303324 002FEF84  7C 7E 1B 78 */	mr r30, r3
/* 80303328 002FEF88  4B F6 B4 35 */	bl OSDisableInterrupts
/* 8030332C 002FEF8C  2C 1E 00 00 */	cmpwi r30, 0
/* 80303330 002FEF90  41 82 00 34 */	beq lbl_80303364
/* 80303334 002FEF94  80 0D AF 94 */	lwz r0, lbl_80640254-_SDA_BASE_(r13)
/* 80303338 002FEF98  2C 00 00 00 */	cmpwi r0, 0
/* 8030333C 002FEF9C  40 82 00 10 */	bne lbl_8030334C
/* 80303340 002FEFA0  38 00 00 03 */	li r0, 3
/* 80303344 002FEFA4  90 0D AF 94 */	stw r0, lbl_80640254-_SDA_BASE_(r13)
/* 80303348 002FEFA8  48 00 00 44 */	b lbl_8030338C
lbl_8030334C:
/* 8030334C 002FEFAC  2C 00 00 01 */	cmpwi r0, 1
/* 80303350 002FEFB0  40 82 00 0C */	bne lbl_8030335C
/* 80303354 002FEFB4  3B E0 FF F6 */	li r31, -10
/* 80303358 002FEFB8  48 00 00 34 */	b lbl_8030338C
lbl_8030335C:
/* 8030335C 002FEFBC  3B E0 FF E6 */	li r31, -26
/* 80303360 002FEFC0  48 00 00 2C */	b lbl_8030338C
lbl_80303364:
/* 80303364 002FEFC4  80 8D AF 94 */	lwz r4, lbl_80640254-_SDA_BASE_(r13)
/* 80303368 002FEFC8  38 04 FF FD */	addi r0, r4, -3
/* 8030336C 002FEFCC  7C 00 00 34 */	cntlzw r0, r0
/* 80303370 002FEFD0  54 04 D9 7F */	rlwinm. r4, r0, 0x1b, 5, 0x1f
/* 80303374 002FEFD4  41 82 00 0C */	beq lbl_80303380
/* 80303378 002FEFD8  38 00 00 00 */	li r0, 0
/* 8030337C 002FEFDC  90 0D AF 94 */	stw r0, lbl_80640254-_SDA_BASE_(r13)
lbl_80303380:
/* 80303380 002FEFE0  2C 04 00 00 */	cmpwi r4, 0
/* 80303384 002FEFE4  40 82 00 08 */	bne lbl_8030338C
/* 80303388 002FEFE8  3B E0 FF F7 */	li r31, -9
lbl_8030338C:
/* 8030338C 002FEFEC  4B F6 B3 F9 */	bl OSRestoreInterrupts
/* 80303390 002FEFF0  7F E3 FB 78 */	mr r3, r31
/* 80303394 002FEFF4  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80303398 002FEFF8  83 C1 00 08 */	lwz r30, 8(r1)
/* 8030339C 002FEFFC  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803033A0 002FF000  7C 08 03 A6 */	mtlr r0
/* 803033A4 002FF004  38 21 00 10 */	addi r1, r1, 0x10
/* 803033A8 002FF008  4E 80 00 20 */	blr