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

Method createSimpleWaveBank

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

Source from the content-addressed store, hash-verified

79}
80
81JASSimpleWaveBank *JASWSParser::createSimpleWaveBank(const void *ptr, JKRHeap *pHeap)
82{
83 if (pHeap == NULL)
84 pHeap = JASDram;
85
86 u32 oldSize = pHeap->getFreeSize();
87 const THeader *headerPtr = (const THeader *)ptr;
88 TCtrlGroup *group = headerPtr->ctrlGroupOffset.ptr(headerPtr);
89
90 if (group->ctrlGroupCount != 1)
91 return NULL;
92
93 JASSimpleWaveBank *simpleBank = new (pHeap, 0) JASSimpleWaveBank();
94 if (simpleBank == NULL)
95 return NULL;
96
97 u32 waveTableSize = 0;
98 TCtrlScene *scene = group->ctrlSceneOffsets[0].ptr(headerPtr);
99 TCtrl *ctrl = scene->ctrlOffset.ptr(headerPtr);
100 TWaveArchiveBank *archiveBank = headerPtr->archiveBankOffset.ptr(headerPtr);
101 TWaveArchive *waveArchive = archiveBank->archiveOffsets[0].ptr(headerPtr);
102
103 for (u32 i = 0; i < ctrl->waveCount; i++)
104 {
105 TCtrlWave *ctrlWave = ctrl->ctrlWaveOffsets[i].ptr(headerPtr);
106 u16 tableSize = JSULoHalf(ctrlWave->tableSize);
107 if (waveTableSize < tableSize)
108 {
109 waveTableSize = tableSize;
110 }
111 }
112
113 simpleBank->setWaveTableSize(waveTableSize + 1, pHeap);
114 for (u32 i = 0; i < ctrl->waveCount; i++)
115 {
116 TWave *wave = waveArchive->waveOffsets[i].ptr(headerPtr);
117
118 JASWaveInfo waveInfo;
119 waveInfo._00 = wave->_01;
120 waveInfo._01 = wave->_02;
121 waveInfo._04 = wave->_04;
122 waveInfo._08 = wave->offset;
123 waveInfo._0c = wave->_0C;
124 waveInfo._10 = wave->_10;
125 waveInfo._14 = wave->_14;
126 waveInfo._18 = wave->_18;
127 waveInfo._1c = wave->_1C;
128 waveInfo._20 = wave->_20;
129 waveInfo._22 = wave->_22;
130
131 TCtrlWave *ctrlWave = ctrl->ctrlWaveOffsets[i].ptr(headerPtr);
132 u16 size = JSULoHalf(ctrlWave->tableSize);
133 simpleBank->setWaveInfo(size, waveInfo);
134 }
135 simpleBank->setFileName(waveArchive->fileName);
136
137 sUsedHeapSize += oldSize - pHeap->getFreeSize();
138

Callers

nothing calls this directly

Calls 6

JSULoHalfFunction · 0.85
setFileNameMethod · 0.80
getFreeSizeMethod · 0.45
ptrMethod · 0.45
setWaveTableSizeMethod · 0.45
setWaveInfoMethod · 0.45

Tested by

no test coverage detected