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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
|
//
// Generated By: dol2asm
// Translation Unit: JAISeqMgr
//
#include "JSystem/JAudio2/JAISeqMgr.h"
#include "JSystem/JAudio2/JAISeq.h"
#include "JSystem/JAudio2/JAISoundHandles.h"
#include "JSystem/JAudio2/JAISoundInfo.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion();
extern "C" void releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion();
extern "C" void __ct__9JAISeqMgrFb();
extern "C" void freeDeadSeq___9JAISeqMgrFv();
extern "C" void func_802A1AF4(void* _this);
extern "C" void func_802A1B48();
extern "C" void calc__9JAISeqMgrFv();
extern "C" void stop__9JAISeqMgrFv();
extern "C" void stop__9JAISeqMgrFUl();
extern "C" void stopSoundID__9JAISeqMgrF10JAISoundID();
extern "C" void mixOut__9JAISeqMgrFv();
extern "C" void beginStartSeq___9JAISeqMgrFv();
extern "C" void endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle();
extern "C" void __dt__9JAISeqMgrFv();
//
// External References:
//
extern "C" void __ct__17JASGenericMemPoolFv();
extern "C" void __dt__17JASGenericMemPoolFv();
extern "C" void alloc__17JASGenericMemPoolFUl();
extern "C" void free__17JASGenericMemPoolFPvUl();
extern "C" void __dt__8JASTrackFv();
extern "C" void func_802A0A8C();
extern "C" void func_802A0B64();
extern "C" void JAISeqMgr_calc___6JAISeqFv();
extern "C" void JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity();
extern "C" void __dt__14JAISeqDataUserFv();
extern "C" void attachHandle__8JAISoundFP14JAISoundHandle();
extern "C" void stop__8JAISoundFUl();
extern "C" void stop__8JAISoundFv();
extern "C" void __dl__FPv();
extern "C" void __dt__10JSUPtrLinkFv();
extern "C" void __dt__10JSUPtrListFv();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void __register_global_object();
extern "C" void _savegpr_25();
extern "C" void _savegpr_29();
extern "C" void _restgpr_25();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__6JAISeq[12 + 1 /* padding */];
extern "C" extern void* __vt__14JAISeqDataUser[5 + 1 /* padding */];
extern "C" extern u8 data_80450B5C[4];
extern "C" extern u8 data_80451320[8];
extern "C" extern u8 __OSReport_disable;
//
// Declarations:
//
/* 802A1804-802A1870 29C144 006C+00 1/0 0/0 0/0 .text
* isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion */
bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) {
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
if (param_1.intersects(link->getObject()->getSeqData())) {
return true;
}
}
return false;
}
/* 802A1870-802A1914 29C1B0 00A4+00 1/0 0/0 0/0 .text
* releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion */
int JAISeqMgr::releaseSeqData(JAISeqDataRegion const& param_1) {
bool bVar1 = false;
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
if (param_1.intersects(link->getObject()->getSeqData())) {
link->getObject()->stop();
bVar1 = true;
}
}
ReleaseSeqResult uVar4;
if (!bVar1) {
uVar4 = RELEASE_SEQ_2;
} else {
uVar4 = RELEASE_SEQ_1;
}
return uVar4;
}
/* ############################################################################################## */
/* 803C9958-803C9970 026A78 0014+04 2/2 1/1 0/0 .data __vt__9JAISeqMgr */
SECTION_DATA extern void* __vt__9JAISeqMgr[5 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__9JAISeqMgrFv,
(void*)isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion,
(void*)releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion,
/* padding */
NULL,
};
/* 804557A8-804557AC 003DA8 0004+00 1/1 0/0 0/0 .sdata2 @691 */
SECTION_SDATA2 static f32 lit_691 = 1.0f;
/* 804557AC-804557B0 003DAC 0004+00 1/1 0/0 0/0 .sdata2 @692 */
SECTION_SDATA2 static u8 lit_692[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 804557B0-804557B8 003DB0 0004+04 1/1 0/0 0/0 .sdata2 @693 */
SECTION_SDATA2 static f32 lit_693[1 + 1 /* padding */] = {
0.5f,
/* padding */
0.0f,
};
/* 802A1914-802A1A08 29C254 00F4+00 0/0 1/1 0/0 .text __ct__9JAISeqMgrFb */
JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance<JAISeqMgr>(param_1), mAudience(NULL) {
seqDataMgr_ = NULL;
field_0x10 = NULL;
field_0x70 = 16;
mMove.init();
mActivity.init();
}
/* ############################################################################################## */
/* 804340C0-804340CC 060DE0 000C+00 3/3 0/0 0/0 .bss @715 */
static u8 lit_715[12];
/* 804340CC-804340E0 060DEC 0010+04 3/3 1/1 0/0 .bss
* memPool_$localstatic3$getMemPool___27JASPoolAllocObject<6JAISeq>Fv */
extern u8 data_804340CC[16 + 4 /* padding */];
u8 data_804340CC[16 + 4 /* padding */];
/* 802A1A08-802A1AF4 29C348 00EC+00 1/1 0/0 0/0 .text freeDeadSeq___9JAISeqMgrFv */
// Matches with all JASPoolAllocObject definitions and data_80451320
#ifdef NONMATCHING
void JAISeqMgr::freeDeadSeq_() {
JSULink<JAISeq>* link = mSeqList.getFirst();
while (link != NULL) {
JAISeq* seq = link->getObject();
JSULink<JAISeq>* next = seq->getNext();
if (seq->status_.isDead()) {
mSeqList.remove(link);
delete seq;
}
link = next;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JAISeqMgr::freeDeadSeq_() {
nofralloc
#include "asm/JSystem/JAudio2/JAISeqMgr/freeDeadSeq___9JAISeqMgrFv.s"
}
#pragma pop
#endif
/* 802A1AF4-802A1B48 29C434 0054+00 3/3 1/1 0/0 .text __dt__19JASMemPool<6JAISeq>Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_802A1AF4(void* _this) {
nofralloc
#include "asm/JSystem/JAudio2/JAISeqMgr/func_802A1AF4.s"
}
#pragma pop
/* 802A1B48-802A1C90 29C488 0148+00 0/0 1/1 0/0 .text
* startSound__9JAISeqMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2,
JGeometry::TVec3<f32> const* param_3) {
if (param_2 != NULL && *param_2) {
(*param_2)->stop();
}
JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::getInstance();
int category = (soundInfo != NULL) ? soundInfo->getCategory(param_1) : -1;
JAISeqData aJStack_38(NULL, 0);
JUT_ASSERT(81, seqDataMgr_);
if (seqDataMgr_->getSeqData(param_1, &aJStack_38) == JAISeqDataMgr::SeqDataReturnValue_0) {
return false;
}
JAISeq* jaiSeq = beginStartSeq_();
if (jaiSeq != NULL) {
jaiSeq->JAISeqMgr_startID_(param_1, param_3, mAudience, category, field_0x70);
if (endStartSeq_(jaiSeq, param_2) != 0) {
if (soundInfo != NULL) {
soundInfo->getSeqInfo(param_1, jaiSeq);
}
return true;
}
}
return false;
}
/* 802A1C90-802A1DFC 29C5D0 016C+00 0/0 4/4 0/0 .text calc__9JAISeqMgrFv */
void JAISeqMgr::calc() {
mMove.calc();
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAISeqMgr_calc_();
}
freeDeadSeq_();
}
/* 802A1DFC-802A1E3C 29C73C 0040+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFv */
void JAISeqMgr::stop() {
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop();
}
}
/* 802A1E3C-802A1E8C 29C77C 0050+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFUl */
void JAISeqMgr::stop(u32 param_0) {
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop(param_0);
}
}
/* 802A1E8C-802A1EFC 29C7CC 0070+00 0/0 1/1 0/0 .text stopSoundID__9JAISeqMgrF10JAISoundID */
void JAISeqMgr::stopSoundID(JAISoundID param_1) {
if (!param_1.isAnonymous()) {
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
if ((u32)link->getObject()->getID() == (u32)param_1) {
link->getObject()->stop();
}
}
}
}
/* 802A1EFC-802A1F58 29C83C 005C+00 0/0 4/4 0/0 .text mixOut__9JAISeqMgrFv */
void JAISeqMgr::mixOut() {
for (JSULink<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAISeqMgr_mixOut_(mMove.mParams, mActivity);
}
}
/* 802A1F58-802A1FE8 29C898 0090+00 1/1 0/0 0/0 .text beginStartSeq___9JAISeqMgrFv */
// Matches with JASPoolAllocObject stuff
#ifdef NONMATCHING
JAISeq* JAISeqMgr::beginStartSeq_() {
JAISeq* seq = new JAISeq(this, field_0x10);
if (seq == NULL) {
JUT_WARN(273, "JASPoolAllocObject::<JAISeq>::operator new failed .\n");
}
return seq;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JAISeq* JAISeqMgr::beginStartSeq_() {
nofralloc
#include "asm/JSystem/JAudio2/JAISeqMgr/beginStartSeq___9JAISeqMgrFv.s"
}
#pragma pop
#endif
/* 802A1FE8-802A20F0 29C928 0108+00 1/1 0/0 0/0 .text
* endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle */
// Matches with JASPoolAllocObject stuff
#ifdef NONMATCHING
bool JAISeqMgr::endStartSeq_(JAISeq* param_1, JAISoundHandle* param_2) {
JAISeq* sound = param_1->getObject();
if (sound != NULL) {
if (sound->status_.isAlive()) {
mSeqList.append(param_1);
if (param_2 != NULL) {
sound->attachHandle(param_2);
}
return true;
}
delete sound;
}
return false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool JAISeqMgr::endStartSeq_(JAISeq* param_0, JAISoundHandle* param_1) {
nofralloc
#include "asm/JSystem/JAudio2/JAISeqMgr/endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle.s"
}
#pragma pop
#endif
/* 802A20F0-802A2184 29CA30 0094+00 1/0 0/0 0/0 .text __dt__9JAISeqMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void __dt__9JAISeqMgrFv() {
// asm JAISeqMgr::~JAISeqMgr() {
nofralloc
#include "asm/JSystem/JAudio2/JAISeqMgr/__dt__9JAISeqMgrFv.s"
}
#pragma pop
|