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

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

.global NWC24iOpenMBox
NWC24iOpenMBox:
/* 803033AC 002FF00C  94 21 FE B0 */	stwu r1, -0x150(r1)
/* 803033B0 002FF010  7C 08 02 A6 */	mflr r0
/* 803033B4 002FF014  38 80 00 00 */	li r4, 0
/* 803033B8 002FF018  38 A0 00 80 */	li r5, 0x80
/* 803033BC 002FF01C  90 01 01 54 */	stw r0, 0x154(r1)
/* 803033C0 002FF020  93 E1 01 4C */	stw r31, 0x14c(r1)
/* 803033C4 002FF024  93 C1 01 48 */	stw r30, 0x148(r1)
/* 803033C8 002FF028  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 803033CC 002FF02C  3B C3 08 00 */	addi r30, r3, 0x800
/* 803033D0 002FF030  38 63 11 00 */	addi r3, r3, 0x1100
/* 803033D4 002FF034  4B FF DC 41 */	bl Mail_memset
/* 803033D8 002FF038  38 81 00 08 */	addi r4, r1, 8
/* 803033DC 002FF03C  38 60 00 00 */	li r3, 0
/* 803033E0 002FF040  48 00 01 61 */	bl GetCachedMBCHeader
/* 803033E4 002FF044  2C 03 00 00 */	cmpwi r3, 0
/* 803033E8 002FF048  41 82 00 08 */	beq lbl_803033F0
/* 803033EC 002FF04C  48 00 01 3C */	b lbl_80303528
lbl_803033F0:
/* 803033F0 002FF050  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 803033F4 002FF054  38 80 00 00 */	li r4, 0
/* 803033F8 002FF058  38 A0 00 80 */	li r5, 0x80
/* 803033FC 002FF05C  38 63 11 80 */	addi r3, r3, 0x1180
/* 80303400 002FF060  4B FF DC 15 */	bl Mail_memset
/* 80303404 002FF064  38 81 00 08 */	addi r4, r1, 8
/* 80303408 002FF068  38 60 00 01 */	li r3, 1
/* 8030340C 002FF06C  48 00 01 35 */	bl GetCachedMBCHeader
/* 80303410 002FF070  2C 03 00 00 */	cmpwi r3, 0
/* 80303414 002FF074  41 82 00 08 */	beq lbl_8030341C
/* 80303418 002FF078  48 00 01 10 */	b lbl_80303528
lbl_8030341C:
/* 8030341C 002FF07C  4B FF FA DD */	bl NWC24GetMBoxDir
/* 80303420 002FF080  7C 7F 1B 78 */	mr r31, r3
/* 80303424 002FF084  38 80 00 40 */	li r4, 0x40
/* 80303428 002FF088  4B FF DB BD */	bl STD_strnlen
/* 8030342C 002FF08C  38 03 00 0E */	addi r0, r3, 0xe
/* 80303430 002FF090  2C 00 01 00 */	cmpwi r0, 0x100
/* 80303434 002FF094  40 81 00 0C */	ble lbl_80303440
/* 80303438 002FF098  38 60 FF F5 */	li r3, -11
/* 8030343C 002FF09C  48 00 00 24 */	b lbl_80303460
lbl_80303440:
/* 80303440 002FF0A0  3C C0 80 44 */	lis r6, lbl_804464A0@ha
/* 80303444 002FF0A4  7F C3 F3 78 */	mr r3, r30
/* 80303448 002FF0A8  7F E5 FB 78 */	mr r5, r31
/* 8030344C 002FF0AC  38 8D 8C A8 */	addi r4, r13, lbl_8063DF68-_SDA_BASE_
/* 80303450 002FF0B0  38 C6 64 A0 */	addi r6, r6, lbl_804464A0@l
/* 80303454 002FF0B4  4C C6 31 82 */	crclr 6
/* 80303458 002FF0B8  4B FF E1 A5 */	bl Mail_sprintf
/* 8030345C 002FF0BC  38 60 00 00 */	li r3, 0
lbl_80303460:
/* 80303460 002FF0C0  2C 03 00 00 */	cmpwi r3, 0
/* 80303464 002FF0C4  41 82 00 08 */	beq lbl_8030346C
/* 80303468 002FF0C8  48 00 00 C0 */	b lbl_80303528
lbl_8030346C:
/* 8030346C 002FF0CC  7F C4 F3 78 */	mr r4, r30
/* 80303470 002FF0D0  38 61 00 A8 */	addi r3, r1, 0xa8
/* 80303474 002FF0D4  38 A0 00 02 */	li r5, 2
/* 80303478 002FF0D8  4B FF E6 D1 */	bl NWC24FOpen
/* 8030347C 002FF0DC  2C 03 00 00 */	cmpwi r3, 0
/* 80303480 002FF0E0  40 82 00 0C */	bne lbl_8030348C
/* 80303484 002FF0E4  38 61 00 A8 */	addi r3, r1, 0xa8
/* 80303488 002FF0E8  4B FF EA 11 */	bl NWC24FClose
lbl_8030348C:
/* 8030348C 002FF0EC  2C 03 00 00 */	cmpwi r3, 0
/* 80303490 002FF0F0  41 82 00 08 */	beq lbl_80303498
/* 80303494 002FF0F4  48 00 00 94 */	b lbl_80303528
lbl_80303498:
/* 80303498 002FF0F8  4B FF FA 61 */	bl NWC24GetMBoxDir
/* 8030349C 002FF0FC  7C 7F 1B 78 */	mr r31, r3
/* 803034A0 002FF100  38 80 00 40 */	li r4, 0x40
/* 803034A4 002FF104  4B FF DB 41 */	bl STD_strnlen
/* 803034A8 002FF108  38 03 00 0E */	addi r0, r3, 0xe
/* 803034AC 002FF10C  2C 00 01 00 */	cmpwi r0, 0x100
/* 803034B0 002FF110  40 81 00 0C */	ble lbl_803034BC
/* 803034B4 002FF114  38 60 FF F5 */	li r3, -11
/* 803034B8 002FF118  48 00 00 24 */	b lbl_803034DC
lbl_803034BC:
/* 803034BC 002FF11C  3C C0 80 44 */	lis r6, lbl_804464B0@ha
/* 803034C0 002FF120  7F C3 F3 78 */	mr r3, r30
/* 803034C4 002FF124  7F E5 FB 78 */	mr r5, r31
/* 803034C8 002FF128  38 8D 8C A8 */	addi r4, r13, lbl_8063DF68-_SDA_BASE_
/* 803034CC 002FF12C  38 C6 64 B0 */	addi r6, r6, lbl_804464B0@l
/* 803034D0 002FF130  4C C6 31 82 */	crclr 6
/* 803034D4 002FF134  4B FF E1 29 */	bl Mail_sprintf
/* 803034D8 002FF138  38 60 00 00 */	li r3, 0
lbl_803034DC:
/* 803034DC 002FF13C  2C 03 00 00 */	cmpwi r3, 0
/* 803034E0 002FF140  41 82 00 08 */	beq lbl_803034E8
/* 803034E4 002FF144  48 00 00 44 */	b lbl_80303528
lbl_803034E8:
/* 803034E8 002FF148  7F C4 F3 78 */	mr r4, r30
/* 803034EC 002FF14C  38 61 00 0C */	addi r3, r1, 0xc
/* 803034F0 002FF150  38 A0 00 02 */	li r5, 2
/* 803034F4 002FF154  4B FF E6 55 */	bl NWC24FOpen
/* 803034F8 002FF158  2C 03 00 00 */	cmpwi r3, 0
/* 803034FC 002FF15C  40 82 00 0C */	bne lbl_80303508
/* 80303500 002FF160  38 61 00 0C */	addi r3, r1, 0xc
/* 80303504 002FF164  4B FF E9 95 */	bl NWC24FClose
lbl_80303508:
/* 80303508 002FF168  2C 03 00 00 */	cmpwi r3, 0
/* 8030350C 002FF16C  41 82 00 08 */	beq lbl_80303514
/* 80303510 002FF170  48 00 00 18 */	b lbl_80303528
lbl_80303514:
/* 80303514 002FF174  38 00 00 00 */	li r0, 0
/* 80303518 002FF178  38 8D AF A8 */	addi r4, r13, lbl_80640268-_SDA_BASE_
/* 8030351C 002FF17C  90 0D AF A8 */	stw r0, lbl_80640268-_SDA_BASE_(r13)
/* 80303520 002FF180  38 60 00 00 */	li r3, 0
/* 80303524 002FF184  90 04 00 04 */	stw r0, 4(r4)
lbl_80303528:
/* 80303528 002FF188  80 01 01 54 */	lwz r0, 0x154(r1)
/* 8030352C 002FF18C  83 E1 01 4C */	lwz r31, 0x14c(r1)
/* 80303530 002FF190  83 C1 01 48 */	lwz r30, 0x148(r1)
/* 80303534 002FF194  7C 08 03 A6 */	mtlr r0
/* 80303538 002FF198  38 21 01 50 */	addi r1, r1, 0x150
/* 8030353C 002FF19C  4E 80 00 20 */	blr

.global GetCachedMBCHeader
GetCachedMBCHeader:
/* 80303540 002FF1A0  94 21 FF 40 */	stwu r1, -0xc0(r1)
/* 80303544 002FF1A4  7C 08 02 A6 */	mflr r0
/* 80303548 002FF1A8  2C 03 00 00 */	cmpwi r3, 0
/* 8030354C 002FF1AC  90 01 00 C4 */	stw r0, 0xc4(r1)
/* 80303550 002FF1B0  93 E1 00 BC */	stw r31, 0xbc(r1)
/* 80303554 002FF1B4  3B E0 00 00 */	li r31, 0
/* 80303558 002FF1B8  93 C1 00 B8 */	stw r30, 0xb8(r1)
/* 8030355C 002FF1BC  93 A1 00 B4 */	stw r29, 0xb4(r1)
/* 80303560 002FF1C0  7C 9D 23 78 */	mr r29, r4
/* 80303564 002FF1C4  93 81 00 B0 */	stw r28, 0xb0(r1)
/* 80303568 002FF1C8  7C 7C 1B 78 */	mr r28, r3
/* 8030356C 002FF1CC  40 82 00 14 */	bne lbl_80303580
/* 80303570 002FF1D0  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80303574 002FF1D4  38 03 11 00 */	addi r0, r3, 0x1100
/* 80303578 002FF1D8  90 04 00 00 */	stw r0, 0(r4)
/* 8030357C 002FF1DC  48 00 00 2C */	b lbl_803035A8
lbl_80303580:
/* 80303580 002FF1E0  2C 03 00 01 */	cmpwi r3, 1
/* 80303584 002FF1E4  40 82 00 14 */	bne lbl_80303598
/* 80303588 002FF1E8  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 8030358C 002FF1EC  38 03 11 80 */	addi r0, r3, 0x1180
/* 80303590 002FF1F0  90 04 00 00 */	stw r0, 0(r4)
/* 80303594 002FF1F4  48 00 00 14 */	b lbl_803035A8
lbl_80303598:
/* 80303598 002FF1F8  38 00 00 00 */	li r0, 0
/* 8030359C 002FF1FC  38 60 FF FD */	li r3, -3
/* 803035A0 002FF200  90 04 00 00 */	stw r0, 0(r4)
/* 803035A4 002FF204  48 00 01 50 */	b lbl_803036F4
lbl_803035A8:
/* 803035A8 002FF208  80 64 00 00 */	lwz r3, 0(r4)
/* 803035AC 002FF20C  80 63 00 00 */	lwz r3, 0(r3)
/* 803035B0 002FF210  3C 03 A8 9D */	addis r0, r3, 0xa89d
/* 803035B4 002FF214  28 00 54 66 */	cmplwi r0, 0x5466
/* 803035B8 002FF218  41 82 01 24 */	beq lbl_803036DC
/* 803035BC 002FF21C  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 803035C0 002FF220  3B C3 08 00 */	addi r30, r3, 0x800
/* 803035C4 002FF224  4B FF F9 35 */	bl NWC24GetMBoxDir
/* 803035C8 002FF228  7C 7F 1B 78 */	mr r31, r3
/* 803035CC 002FF22C  38 80 00 40 */	li r4, 0x40
/* 803035D0 002FF230  4B FF DA 15 */	bl STD_strnlen
/* 803035D4 002FF234  38 03 00 0E */	addi r0, r3, 0xe
/* 803035D8 002FF238  2C 00 01 00 */	cmpwi r0, 0x100
/* 803035DC 002FF23C  40 81 00 0C */	ble lbl_803035E8
/* 803035E0 002FF240  38 60 FF F5 */	li r3, -11
/* 803035E4 002FF244  48 00 00 68 */	b lbl_8030364C
lbl_803035E8:
/* 803035E8 002FF248  2C 1C 00 01 */	cmpwi r28, 1
/* 803035EC 002FF24C  41 82 00 34 */	beq lbl_80303620
/* 803035F0 002FF250  40 80 00 50 */	bge lbl_80303640
/* 803035F4 002FF254  2C 1C 00 00 */	cmpwi r28, 0
/* 803035F8 002FF258  40 80 00 08 */	bge lbl_80303600
/* 803035FC 002FF25C  48 00 00 44 */	b lbl_80303640
lbl_80303600:
/* 80303600 002FF260  3C C0 80 44 */	lis r6, lbl_80446480@ha
/* 80303604 002FF264  7F C3 F3 78 */	mr r3, r30
/* 80303608 002FF268  7F E5 FB 78 */	mr r5, r31
/* 8030360C 002FF26C  38 8D 8C A8 */	addi r4, r13, lbl_8063DF68-_SDA_BASE_
/* 80303610 002FF270  38 C6 64 80 */	addi r6, r6, lbl_80446480@l
/* 80303614 002FF274  4C C6 31 82 */	crclr 6
/* 80303618 002FF278  4B FF DF E5 */	bl Mail_sprintf
/* 8030361C 002FF27C  48 00 00 2C */	b lbl_80303648
lbl_80303620:
/* 80303620 002FF280  3C C0 80 44 */	lis r6, lbl_80446490@ha
/* 80303624 002FF284  7F C3 F3 78 */	mr r3, r30
/* 80303628 002FF288  7F E5 FB 78 */	mr r5, r31
/* 8030362C 002FF28C  38 8D 8C A8 */	addi r4, r13, lbl_8063DF68-_SDA_BASE_
/* 80303630 002FF290  38 C6 64 90 */	addi r6, r6, lbl_80446490@l
/* 80303634 002FF294  4C C6 31 82 */	crclr 6
/* 80303638 002FF298  4B FF DF C5 */	bl Mail_sprintf
/* 8030363C 002FF29C  48 00 00 0C */	b lbl_80303648
lbl_80303640:
/* 80303640 002FF2A0  38 60 FF FD */	li r3, -3
/* 80303644 002FF2A4  48 00 00 08 */	b lbl_8030364C
lbl_80303648:
/* 80303648 002FF2A8  38 60 00 00 */	li r3, 0
lbl_8030364C:
/* 8030364C 002FF2AC  2C 03 00 00 */	cmpwi r3, 0
/* 80303650 002FF2B0  41 82 00 08 */	beq lbl_80303658
/* 80303654 002FF2B4  48 00 00 A0 */	b lbl_803036F4
lbl_80303658:
/* 80303658 002FF2B8  7F C4 F3 78 */	mr r4, r30
/* 8030365C 002FF2BC  38 61 00 08 */	addi r3, r1, 8
/* 80303660 002FF2C0  38 A0 00 02 */	li r5, 2
/* 80303664 002FF2C4  4B FF E4 E5 */	bl NWC24FOpen
/* 80303668 002FF2C8  2C 03 00 00 */	cmpwi r3, 0
/* 8030366C 002FF2CC  41 82 00 08 */	beq lbl_80303674
/* 80303670 002FF2D0  48 00 00 84 */	b lbl_803036F4
lbl_80303674:
/* 80303674 002FF2D4  83 FD 00 00 */	lwz r31, 0(r29)
/* 80303678 002FF2D8  38 61 00 08 */	addi r3, r1, 8
/* 8030367C 002FF2DC  38 80 00 00 */	li r4, 0
/* 80303680 002FF2E0  38 A0 00 00 */	li r5, 0
/* 80303684 002FF2E4  4B FF E9 A9 */	bl NWC24FSeek
/* 80303688 002FF2E8  7F E3 FB 78 */	mr r3, r31
/* 8030368C 002FF2EC  38 A1 00 08 */	addi r5, r1, 8
/* 80303690 002FF2F0  38 80 00 80 */	li r4, 0x80
/* 80303694 002FF2F4  4B FF EB 85 */	bl NWC24FRead
/* 80303698 002FF2F8  2C 03 00 00 */	cmpwi r3, 0
/* 8030369C 002FF2FC  41 82 00 0C */	beq lbl_803036A8
/* 803036A0 002FF300  7C 7F 1B 78 */	mr r31, r3
/* 803036A4 002FF304  48 00 00 1C */	b lbl_803036C0
lbl_803036A8:
/* 803036A8 002FF308  80 7F 00 00 */	lwz r3, 0(r31)
/* 803036AC 002FF30C  3B E0 00 00 */	li r31, 0
/* 803036B0 002FF310  3C 03 A8 9D */	addis r0, r3, 0xa89d
/* 803036B4 002FF314  28 00 54 66 */	cmplwi r0, 0x5466
/* 803036B8 002FF318  41 82 00 08 */	beq lbl_803036C0
/* 803036BC 002FF31C  3B E0 FF F2 */	li r31, -14
lbl_803036C0:
/* 803036C0 002FF320  38 61 00 08 */	addi r3, r1, 8
/* 803036C4 002FF324  4B FF E7 D5 */	bl NWC24FClose
/* 803036C8 002FF328  2C 1F 00 00 */	cmpwi r31, 0
/* 803036CC 002FF32C  40 82 00 10 */	bne lbl_803036DC
/* 803036D0 002FF330  2C 03 00 00 */	cmpwi r3, 0
/* 803036D4 002FF334  41 82 00 08 */	beq lbl_803036DC
/* 803036D8 002FF338  7C 7F 1B 78 */	mr r31, r3
lbl_803036DC:
/* 803036DC 002FF33C  80 7D 00 00 */	lwz r3, 0(r29)
/* 803036E0 002FF340  80 03 00 04 */	lwz r0, 4(r3)
/* 803036E4 002FF344  28 00 00 04 */	cmplwi r0, 4
/* 803036E8 002FF348  41 82 00 08 */	beq lbl_803036F0
/* 803036EC 002FF34C  3B E0 FF E5 */	li r31, -27
lbl_803036F0:
/* 803036F0 002FF350  7F E3 FB 78 */	mr r3, r31
lbl_803036F4:
/* 803036F4 002FF354  80 01 00 C4 */	lwz r0, 0xc4(r1)
/* 803036F8 002FF358  83 E1 00 BC */	lwz r31, 0xbc(r1)
/* 803036FC 002FF35C  83 C1 00 B8 */	lwz r30, 0xb8(r1)
/* 80303700 002FF360  83 A1 00 B4 */	lwz r29, 0xb4(r1)
/* 80303704 002FF364  83 81 00 B0 */	lwz r28, 0xb0(r1)
/* 80303708 002FF368  7C 08 03 A6 */	mtlr r0
/* 8030370C 002FF36C  38 21 00 C0 */	addi r1, r1, 0xc0
/* 80303710 002FF370  4E 80 00 20 */	blr