| 21 | } |
| 22 | |
| 23 | JASBasicWaveBank *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 |
nothing calls this directly
no test coverage detected