summaryrefslogtreecommitdiff
path: root/asm/nw4r/snd/detail/snd_RemoteSpeakerManager.s
blob: a97c8526ab12326534f4b666b7d167e130bfd6b3 (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
.include "macros.inc"

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

.global GetInstance__Q44nw4r3snd6detail20RemoteSpeakerManagerFv
GetInstance__Q44nw4r3snd6detail20RemoteSpeakerManagerFv:
/* 803737A8 0036F408  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 803737AC 0036F40C  7C 08 02 A6 */	mflr r0
/* 803737B0 0036F410  90 01 00 24 */	stw r0, 0x24(r1)
/* 803737B4 0036F414  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 803737B8 0036F418  93 C1 00 18 */	stw r30, 0x18(r1)
/* 803737BC 0036F41C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 803737C0 0036F420  88 0D B2 18 */	lbz r0, lbl_806404D8-_SDA_BASE_(r13)
/* 803737C4 0036F424  7C 00 07 75 */	extsb. r0, r0
/* 803737C8 0036F428  40 82 00 54 */	bne lbl_8037381C
/* 803737CC 0036F42C  3C 60 80 62 */	lis r3, lbl_806219F0@ha
/* 803737D0 0036F430  38 00 00 00 */	li r0, 0
/* 803737D4 0036F434  3B C3 19 F0 */	addi r30, r3, lbl_806219F0@l
/* 803737D8 0036F438  98 03 19 F0 */	stb r0, 0x19f0(r3)
/* 803737DC 0036F43C  3B BE 00 38 */	addi r29, r30, 0x38
/* 803737E0 0036F440  3B FE 02 D8 */	addi r31, r30, 0x2d8
lbl_803737E4:
/* 803737E4 0036F444  7F A3 EB 78 */	mr r3, r29
/* 803737E8 0036F448  4B FF F7 AD */	bl __ct__Q34nw4r3snd13RemoteSpeakerFv
/* 803737EC 0036F44C  3B BD 00 A8 */	addi r29, r29, 0xa8
/* 803737F0 0036F450  7C 1D F8 40 */	cmplw r29, r31
/* 803737F4 0036F454  41 80 FF F0 */	blt lbl_803737E4
/* 803737F8 0036F458  38 80 00 01 */	li r4, 1
/* 803737FC 0036F45C  38 A0 00 00 */	li r5, 0
/* 80373800 0036F460  38 60 00 02 */	li r3, 2
/* 80373804 0036F464  38 00 00 03 */	li r0, 3
/* 80373808 0036F468  90 BE 00 70 */	stw r5, 0x70(r30)
/* 8037380C 0036F46C  90 9E 01 18 */	stw r4, 0x118(r30)
/* 80373810 0036F470  90 7E 01 C0 */	stw r3, 0x1c0(r30)
/* 80373814 0036F474  90 1E 02 68 */	stw r0, 0x268(r30)
/* 80373818 0036F478  98 8D B2 18 */	stb r4, lbl_806404D8-_SDA_BASE_(r13)
lbl_8037381C:
/* 8037381C 0036F47C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80373820 0036F480  3C 60 80 62 */	lis r3, lbl_806219F0@ha
/* 80373824 0036F484  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80373828 0036F488  38 63 19 F0 */	addi r3, r3, lbl_806219F0@l
/* 8037382C 0036F48C  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 80373830 0036F490  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80373834 0036F494  7C 08 03 A6 */	mtlr r0
/* 80373838 0036F498  38 21 00 20 */	addi r1, r1, 0x20
/* 8037383C 0036F49C  4E 80 00 20 */	blr

.global GetRemoteSpeaker__Q44nw4r3snd6detail20RemoteSpeakerManagerFi
GetRemoteSpeaker__Q44nw4r3snd6detail20RemoteSpeakerManagerFi:
/* 80373840 0036F4A0  1C 04 00 A8 */	mulli r0, r4, 0xa8
/* 80373844 0036F4A4  7C 63 02 14 */	add r3, r3, r0
/* 80373848 0036F4A8  38 63 00 38 */	addi r3, r3, 0x38
/* 8037384C 0036F4AC  4E 80 00 20 */	blr

.global Setup__Q44nw4r3snd6detail20RemoteSpeakerManagerFv
Setup__Q44nw4r3snd6detail20RemoteSpeakerManagerFv:
/* 80373850 0036F4B0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80373854 0036F4B4  7C 08 02 A6 */	mflr r0
/* 80373858 0036F4B8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8037385C 0036F4BC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80373860 0036F4C0  7C 7F 1B 78 */	mr r31, r3
/* 80373864 0036F4C4  88 03 00 00 */	lbz r0, 0(r3)
/* 80373868 0036F4C8  2C 00 00 00 */	cmpwi r0, 0
/* 8037386C 0036F4CC  40 82 00 6C */	bne lbl_803738D8
/* 80373870 0036F4D0  38 63 00 08 */	addi r3, r3, 8
/* 80373874 0036F4D4  4B EF 5E B1 */	bl OSCreateAlarm
/* 80373878 0036F4D8  4B EF EF 41 */	bl OSGetTime
/* 8037387C 0036F4DC  3C C0 80 00 */	lis r6, 0x800000F8@ha
/* 80373880 0036F4E0  3C A0 43 1C */	lis r5, 0x431BDE83@ha
/* 80373884 0036F4E4  80 06 00 F8 */	lwz r0, 0x800000F8@l(r6)
/* 80373888 0036F4E8  3C C0 10 62 */	lis r6, 0x10624DD3@ha
/* 8037388C 0036F4EC  39 46 4D D3 */	addi r10, r6, 0x10624DD3@l
/* 80373890 0036F4F0  3D 20 80 37 */	lis r9, RemoteSpeakerAlarmProc__Q44nw4r3snd6detail20RemoteSpeakerManagerFP7OSAlarmP9OSContext@ha
/* 80373894 0036F4F4  54 00 F0 BE */	srwi r0, r0, 2
/* 80373898 0036F4F8  38 A5 DE 83 */	addi r5, r5, 0x431BDE83@l
/* 8037389C 0036F4FC  7D 05 00 16 */	mulhwu r8, r5, r0
/* 803738A0 0036F500  3C E0 00 66 */	lis r7, 0x0065B9AB@ha
/* 803738A4 0036F504  7C 86 23 78 */	mr r6, r4
/* 803738A8 0036F508  38 07 B9 AB */	addi r0, r7, 0x0065B9AB@l
/* 803738AC 0036F50C  7C 65 1B 78 */	mr r5, r3
/* 803738B0 0036F510  38 7F 00 08 */	addi r3, r31, 8
/* 803738B4 0036F514  55 04 8B FE */	srwi r4, r8, 0xf
/* 803738B8 0036F518  39 29 38 EC */	addi r9, r9, RemoteSpeakerAlarmProc__Q44nw4r3snd6detail20RemoteSpeakerManagerFP7OSAlarmP9OSContext@l
/* 803738BC 0036F51C  7C 04 01 D6 */	mullw r0, r4, r0
/* 803738C0 0036F520  38 E0 00 00 */	li r7, 0
/* 803738C4 0036F524  7C 0A 00 16 */	mulhwu r0, r10, r0
/* 803738C8 0036F528  54 08 BA 7E */	srwi r8, r0, 9
/* 803738CC 0036F52C  4B EF 61 29 */	bl OSSetPeriodicAlarm
/* 803738D0 0036F530  38 00 00 01 */	li r0, 1
/* 803738D4 0036F534  98 1F 00 00 */	stb r0, 0(r31)
lbl_803738D8:
/* 803738D8 0036F538  80 01 00 14 */	lwz r0, 0x14(r1)
/* 803738DC 0036F53C  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 803738E0 0036F540  7C 08 03 A6 */	mtlr r0
/* 803738E4 0036F544  38 21 00 10 */	addi r1, r1, 0x10
/* 803738E8 0036F548  4E 80 00 20 */	blr

.global RemoteSpeakerAlarmProc__Q44nw4r3snd6detail20RemoteSpeakerManagerFP7OSAlarmP9OSContext
RemoteSpeakerAlarmProc__Q44nw4r3snd6detail20RemoteSpeakerManagerFP7OSAlarmP9OSContext:
/* 803738EC 0036F54C  94 21 FF 90 */	stwu r1, -0x70(r1)
/* 803738F0 0036F550  7C 08 02 A6 */	mflr r0
/* 803738F4 0036F554  90 01 00 74 */	stw r0, 0x74(r1)
/* 803738F8 0036F558  93 E1 00 6C */	stw r31, 0x6c(r1)
/* 803738FC 0036F55C  93 C1 00 68 */	stw r30, 0x68(r1)
/* 80373900 0036F560  93 A1 00 64 */	stw r29, 0x64(r1)
/* 80373904 0036F564  88 0D B2 18 */	lbz r0, lbl_806404D8-_SDA_BASE_(r13)
/* 80373908 0036F568  7C 00 07 75 */	extsb. r0, r0
/* 8037390C 0036F56C  40 82 00 54 */	bne lbl_80373960
/* 80373910 0036F570  3C 60 80 62 */	lis r3, lbl_806219F0@ha
/* 80373914 0036F574  38 00 00 00 */	li r0, 0
/* 80373918 0036F578  3B C3 19 F0 */	addi r30, r3, lbl_806219F0@l
/* 8037391C 0036F57C  98 03 19 F0 */	stb r0, 0x19f0(r3)
/* 80373920 0036F580  3B BE 00 38 */	addi r29, r30, 0x38
/* 80373924 0036F584  3B FE 02 D8 */	addi r31, r30, 0x2d8
lbl_80373928:
/* 80373928 0036F588  7F A3 EB 78 */	mr r3, r29
/* 8037392C 0036F58C  4B FF F6 69 */	bl __ct__Q34nw4r3snd13RemoteSpeakerFv
/* 80373930 0036F590  3B BD 00 A8 */	addi r29, r29, 0xa8
/* 80373934 0036F594  7C 1D F8 40 */	cmplw r29, r31
/* 80373938 0036F598  41 80 FF F0 */	blt lbl_80373928
/* 8037393C 0036F59C  38 80 00 01 */	li r4, 1
/* 80373940 0036F5A0  38 A0 00 00 */	li r5, 0
/* 80373944 0036F5A4  38 60 00 02 */	li r3, 2
/* 80373948 0036F5A8  38 00 00 03 */	li r0, 3
/* 8037394C 0036F5AC  90 BE 00 70 */	stw r5, 0x70(r30)
/* 80373950 0036F5B0  90 9E 01 18 */	stw r4, 0x118(r30)
/* 80373954 0036F5B4  90 7E 01 C0 */	stw r3, 0x1c0(r30)
/* 80373958 0036F5B8  90 1E 02 68 */	stw r0, 0x268(r30)
/* 8037395C 0036F5BC  98 8D B2 18 */	stb r4, lbl_806404D8-_SDA_BASE_(r13)
lbl_80373960:
/* 80373960 0036F5C0  3F C0 80 62 */	lis r30, lbl_806219F0@ha
/* 80373964 0036F5C4  3B DE 19 F0 */	addi r30, r30, lbl_806219F0@l
/* 80373968 0036F5C8  4B F1 D5 2D */	bl AXRmtGetSamplesLeft
/* 8037396C 0036F5CC  2C 03 00 28 */	cmpwi r3, 0x28
/* 80373970 0036F5D0  41 80 00 58 */	blt lbl_803739C8
/* 80373974 0036F5D4  3B BE 00 38 */	addi r29, r30, 0x38
/* 80373978 0036F5D8  3B E0 00 00 */	li r31, 0
lbl_8037397C:
/* 8037397C 0036F5DC  80 1E 00 44 */	lwz r0, 0x44(r30)
/* 80373980 0036F5E0  2C 00 00 04 */	cmpwi r0, 4
/* 80373984 0036F5E4  40 82 00 20 */	bne lbl_803739A4
/* 80373988 0036F5E8  7F E3 FB 78 */	mr r3, r31
/* 8037398C 0036F5EC  38 81 00 08 */	addi r4, r1, 8
/* 80373990 0036F5F0  38 A0 00 28 */	li r5, 0x28
/* 80373994 0036F5F4  4B F1 D5 2D */	bl AXRmtGetSamples
/* 80373998 0036F5F8  7F A3 EB 78 */	mr r3, r29
/* 8037399C 0036F5FC  38 81 00 08 */	addi r4, r1, 8
/* 803739A0 0036F600  4B FF F7 4D */	bl UpdateStreamData__Q34nw4r3snd13RemoteSpeakerFPCs
lbl_803739A4:
/* 803739A4 0036F604  7F A3 EB 78 */	mr r3, r29
/* 803739A8 0036F608  4B FF F6 71 */	bl Update__Q34nw4r3snd13RemoteSpeakerFv
/* 803739AC 0036F60C  3B FF 00 01 */	addi r31, r31, 1
/* 803739B0 0036F610  3B BD 00 A8 */	addi r29, r29, 0xa8
/* 803739B4 0036F614  2C 1F 00 04 */	cmpwi r31, 4
/* 803739B8 0036F618  3B DE 00 A8 */	addi r30, r30, 0xa8
/* 803739BC 0036F61C  41 80 FF C0 */	blt lbl_8037397C
/* 803739C0 0036F620  38 60 00 28 */	li r3, 0x28
/* 803739C4 0036F624  4B F1 D5 C1 */	bl AXRmtAdvancePtr
lbl_803739C8:
/* 803739C8 0036F628  80 01 00 74 */	lwz r0, 0x74(r1)
/* 803739CC 0036F62C  83 E1 00 6C */	lwz r31, 0x6c(r1)
/* 803739D0 0036F630  83 C1 00 68 */	lwz r30, 0x68(r1)
/* 803739D4 0036F634  83 A1 00 64 */	lwz r29, 0x64(r1)
/* 803739D8 0036F638  7C 08 03 A6 */	mtlr r0
/* 803739DC 0036F63C  38 21 00 70 */	addi r1, r1, 0x70
/* 803739E0 0036F640  4E 80 00 20 */	blr