MCPcopy Create free account
hub / github.com/doldecomp/mkdd / createBasicWaveBank

Method createBasicWaveBank

libs/JSystem/JAudio/System/JASWSParser.cpp:23–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21}
22
23JASBasicWaveBank *JASWSParser::createBasicWaveBank(const void *ptr, JKRHeap *pHeap)
24{
25 if (pHeap == NULL)
26 pHeap = JASDram;
27
28 u32 oldSize = pHeap->getFreeSize();
29 const THeader *headerPtr = (const THeader *)ptr;
30
31 JASBasicWaveBank *basicBank = new (pHeap, 0) JASBasicWaveBank();
32 if (basicBank == NULL)
33 return NULL;
34
35 TCtrlGroup *group = headerPtr->ctrlGroupOffset.ptr(headerPtr);
36 basicBank->setGroupCount(group->ctrlGroupCount, pHeap);
37 u32 waveTableSize = 0;
38
39 for (u32 i = 0; i < group->ctrlGroupCount; i++)
40 {
41 TCtrlScene *scene = group->ctrlSceneOffsets[i].ptr(headerPtr);
42 TCtrl *ctrl = scene->ctrlOffset.ptr(headerPtr);
43 JASBasicWaveBank::TWaveGroup *waveGroup = basicBank->getWaveGroup(i);
44 TWaveArchiveBank *archiveBank = headerPtr->archiveBankOffset.ptr(headerPtr);
45 TWaveArchive *waveArchive = archiveBank->archiveOffsets[i].ptr(headerPtr);
46 waveGroup->setWaveCount(ctrl->waveCount, pHeap);
47
48 for (int j = 0; j < ctrl->waveCount; j++)
49 {
50 TWave *wave = waveArchive->waveOffsets[j].ptr(headerPtr);
51
52 JASWaveInfo waveInfo;
53 waveInfo._00 = wave->_01;
54 waveInfo._01 = wave->_02;
55 waveInfo._04 = wave->_04;
56 waveInfo._08 = wave->offset;
57 waveInfo._0c = wave->_0C;
58 waveInfo._10 = wave->_10;
59 waveInfo._14 = wave->_14;
60 waveInfo._18 = wave->_18;
61 waveInfo._1c = wave->_1C;
62 waveInfo._20 = wave->_20;
63 waveInfo._22 = wave->_22;
64
65 TCtrlWave *ctrlWave = ctrl->ctrlWaveOffsets[j].ptr(headerPtr);
66 u32 tableSize = JSULoHalf(ctrlWave->tableSize);
67 waveGroup->setWaveInfo(j, tableSize, waveInfo);
68 if (waveTableSize < tableSize)
69 {
70 waveTableSize = tableSize;
71 }
72 }
73 waveGroup->setFileName(waveArchive->fileName);
74 }
75 basicBank->setWaveTableSize(waveTableSize + 1, pHeap);
76 sUsedHeapSize += oldSize - pHeap->getFreeSize();
77
78 return basicBank;
79}
80

Callers

nothing calls this directly

Calls 9

JSULoHalfFunction · 0.85
setGroupCountMethod · 0.80
getWaveGroupMethod · 0.80
setWaveCountMethod · 0.80
setFileNameMethod · 0.80
getFreeSizeMethod · 0.45
ptrMethod · 0.45
setWaveInfoMethod · 0.45
setWaveTableSizeMethod · 0.45

Tested by

no test coverage detected