mirror of
https://github.com/HarbourMasters/Starship
synced 2026-09-02 18:52:52 -04:00
General docs (#269)
* fox_display.c DOCS * PRINTF * actor->destroy boolean * corneria docs * Boss->unk_04C to Boss->animFrame * aCoGrangaWalkingAnim * more corneria docs * Spawner * Spawner code refined * Spawner description * Actor Spawn guard * Molar Rock (name by @inspectredc) * more docs * actor docs * initial disassembly config for lodgenet * correct vram addresses for lodgenet * Actor Docs * More actor docs * more actor docs * correction * correction * more actor docs * Preliminary work for Effect documentation * Change Init for Setup * fox_play cleanup and defake * fox_zo function names * fox_so function renaming * more object docs * venom 1 actors * actor docs * some fox_bo docs * some fox_fo corrections * fox_ma obj->this * fox_ma renamings * fox_ma docs * fox_ti Actors * revert permuter settings to ido * some renames on fox_andross.c * fox_sy actors * object names * corrections * some effect comments * fix AudioTable struct and data to avoid UB * uintptr_t in audio * audio load changes * event id enum usage in fox_sy * clear padding in sPlaylists * HUD_FoBase_ExplodeCs * HUD
This commit is contained in:
committed by
GitHub
parent
83c5442915
commit
0251769d16
+30
-99
@@ -203,106 +203,37 @@ PlaylistCmd sPlaylists[][100] = {
|
||||
{ 255, 0, NA_BGM_STAGE_CO, 50, 255, 50 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 },
|
||||
{ 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 },
|
||||
{ 1, 0, NA_BGM_STAGE_CO, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_A_CARRIER, 0, 255, 1620 },
|
||||
{ 1, 0, NA_BGM_BOSS_A_CARRIER, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_START_DEMO_S, 0, 255, 242 },
|
||||
{ 0, 0, NA_BGM_STAGE_SY, 0, 255, 2096 },
|
||||
{ 1, 0, NA_BGM_STAGE_SY, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_SY, 0, 2, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_SY, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_REAL_BOSS, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_REAL_BOSS, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_KA_START_DEMO, 0, 255, 241 },
|
||||
{ 0, 0, NA_BGM_STAGE_KA, 0, 255, 2184 },
|
||||
{ 1, 0, NA_BGM_STAGE_KA, 1, 255, 100 },
|
||||
{ 0, 0, NA_BGM_BOSS_KA, 0, 1, 1115 },
|
||||
{ 1, 0, NA_BGM_BOSS_KA, 50, 255, 100 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_SO_START_DEMO, 0, 255, 250 },
|
||||
{ 0, 0, NA_BGM_STAGE_SO, 0, 255, 1096 },
|
||||
{ 3, 0, NA_BGM_BILL, 0, 255, 1000 },
|
||||
{ 1, 0, NA_BGM_STAGE_SO, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_SO, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_SO, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_START_DEMO_S, 0, 255, 260 },
|
||||
{ 0, 0, NA_BGM_STAGE_MA, 0, 255, 1920 },
|
||||
{ 1, 0, NA_BGM_STAGE_MA, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_MA, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_MA, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_BO_START_DEMO, 0, 255, 241 },
|
||||
{ 0, 0, NA_BGM_STAGE_BO, 0, 255, 1177 },
|
||||
{ 1, 0, NA_BGM_STAGE_BO, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_BOSS_BO, 0, 255, 1115 },
|
||||
{ 1, 0, NA_BGM_BOSS_BO, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_STARWOLF, 0, 255, 2120 },
|
||||
{ 1, 0, NA_BGM_STARWOLF, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_STAGE_VE1, 0, 255, 1671 },
|
||||
{ 1, 0, NA_BGM_STAGE_VE1, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_VE, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_VE, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_DASH_INTO_BASE, 0, 0, 176 },
|
||||
{ 0, 0, NA_BGM_STAGE_ANDROSS, 0, 255, 588 },
|
||||
{ 0, 0, NA_BGM_BOSS_ANDROSS, 0, 0, 2420 },
|
||||
{ 1, 0, NA_BGM_BOSS_ANDROSS, 10, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_ANDROSS, 0, 255, 1200 },
|
||||
{ 1, 0, NA_BGM_BOSS_ANDROSS, 1, 255, 150 },
|
||||
{ 0, 0, NA_BGM_ALL_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_ALL_CLEAR, 80, 255, 160 },
|
||||
{ 0, 0, NA_BGM_STAFF_ROLL, 0, 255, 9500 },
|
||||
{ 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 }, { 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 },
|
||||
{ 1, 0, NA_BGM_STAGE_CO, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_A_CARRIER, 0, 255, 1620 },
|
||||
{ 1, 0, NA_BGM_BOSS_A_CARRIER, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 242 },
|
||||
{ 0, 0, NA_BGM_STAGE_SY, 0, 255, 2096 }, { 1, 0, NA_BGM_STAGE_SY, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_SY, 0, 2, 1600 }, { 1, 0, NA_BGM_BOSS_SY, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_REAL_BOSS, 0, 255, 1600 }, { 1, 0, NA_BGM_REAL_BOSS, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_KA_START_DEMO, 0, 255, 241 }, { 0, 0, NA_BGM_STAGE_KA, 0, 255, 2184 },
|
||||
{ 1, 0, NA_BGM_STAGE_KA, 1, 255, 100 }, { 0, 0, NA_BGM_BOSS_KA, 0, 1, 1115 },
|
||||
{ 1, 0, NA_BGM_BOSS_KA, 50, 255, 100 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_SO_START_DEMO, 0, 255, 250 },
|
||||
{ 0, 0, NA_BGM_STAGE_SO, 0, 255, 1096 }, { 3, 0, NA_BGM_BILL, 0, 255, 1000 },
|
||||
{ 1, 0, NA_BGM_STAGE_SO, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_SO, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_SO, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_START_DEMO_S, 0, 255, 260 },
|
||||
{ 0, 0, NA_BGM_STAGE_MA, 0, 255, 1920 }, { 1, 0, NA_BGM_STAGE_MA, 50, 255, 50 },
|
||||
{ 0, 0, NA_BGM_BOSS_MA, 0, 255, 1600 }, { 1, 0, NA_BGM_BOSS_MA, 1, 255, 50 },
|
||||
{ 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 }, { 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 },
|
||||
{ 0, 0, NA_BGM_BO_START_DEMO, 0, 255, 241 }, { 0, 0, NA_BGM_STAGE_BO, 0, 255, 1177 },
|
||||
{ 1, 0, NA_BGM_STAGE_BO, 100, 255, 100 }, { 0, 0, NA_BGM_BOSS_BO, 0, 255, 1115 },
|
||||
{ 1, 0, NA_BGM_BOSS_BO, 50, 255, 50 }, { 0, 0, NA_BGM_STARWOLF, 0, 255, 2120 },
|
||||
{ 1, 0, NA_BGM_STARWOLF, 1, 255, 50 }, { 0, 0, NA_BGM_COURSE_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_COURSE_CLEAR, 100, 255, 100 }, { 0, 0, NA_BGM_STAGE_VE1, 0, 255, 1671 },
|
||||
{ 1, 0, NA_BGM_STAGE_VE1, 50, 255, 50 }, { 0, 0, NA_BGM_BOSS_VE, 0, 255, 1600 },
|
||||
{ 1, 0, NA_BGM_BOSS_VE, 1, 255, 50 }, { 0, 0, NA_BGM_DASH_INTO_BASE, 0, 0, 176 },
|
||||
{ 0, 0, NA_BGM_STAGE_ANDROSS, 0, 255, 588 }, { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 0, 2420 },
|
||||
{ 1, 0, NA_BGM_BOSS_ANDROSS, 10, 255, 50 }, { 0, 0, NA_BGM_BOSS_ANDROSS, 0, 255, 1200 },
|
||||
{ 1, 0, NA_BGM_BOSS_ANDROSS, 1, 255, 150 }, { 0, 0, NA_BGM_ALL_CLEAR, 0, 255, 1091 },
|
||||
{ 1, 0, NA_BGM_ALL_CLEAR, 80, 255, 160 }, { 0, 0, NA_BGM_STAFF_ROLL, 0, 255, 9500 },
|
||||
{ 255, 0, NA_BGM_STAGE_CO, 50, 255, 50 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
{ 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, NA_BGM_START_DEMO, 0, 255, 1620 }, { 0, 0, NA_BGM_STAGE_CO, 0, 255, 2490 },
|
||||
|
||||
@@ -915,7 +915,7 @@ void AudioHeap_DiscardSampleCacheEntry(SampleCacheEntry* entry) {
|
||||
s32 sampleBankId2;
|
||||
s32 sampleBankId1;
|
||||
|
||||
numFonts = gSoundFontTable->numEntries;
|
||||
numFonts = gSoundFontTable->base.numEntries;
|
||||
for (fondId = 0; fondId < numFonts; fondId++) {
|
||||
sampleBankId1 = gSoundFontList[fondId].sampleBankId1;
|
||||
sampleBankId2 = gSoundFontList[fondId].sampleBankId2;
|
||||
@@ -974,7 +974,7 @@ SampleCacheEntry* AudioHeap_AllocPersistentSampleCacheEntry(u32 size) {
|
||||
void AudioHeap_DiscardSampleCaches(void) {
|
||||
s32 fontId;
|
||||
s32 i;
|
||||
s32 numFonts = gSoundFontTable->numEntries;
|
||||
s32 numFonts = gSoundFontTable->base.numEntries;
|
||||
s32 pad;
|
||||
s32 sampleBankId2;
|
||||
s32 sampleBankId1;
|
||||
|
||||
+126
-36
@@ -50,6 +50,7 @@ void AudioLoad_DecreaseSampleDmaTtls(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) {
|
||||
dma = &gSampleDmas[i];
|
||||
if (dma->ttl != 0) {
|
||||
@@ -91,6 +92,7 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, u32 arg2, u8* dmaIndexRef,
|
||||
return &dma->ramAddr[devAddr - dma->devAddr];
|
||||
}
|
||||
}
|
||||
|
||||
if ((gSampleDmaReuseQueue2RdPos != gSampleDmaReuseQueue2WrPos) && (arg2 != 0)) {
|
||||
sp38 = gSampleDmaReuseQueue2[gSampleDmaReuseQueue2RdPos];
|
||||
gSampleDmaReuseQueue2RdPos++;
|
||||
@@ -156,6 +158,7 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
|
||||
u8* dma;
|
||||
|
||||
gSampleDmaBuffSize = 0x2D0;
|
||||
|
||||
for (i = 0; i < (3 * gNumNotes * gAudioBufferParams.count); i++) {
|
||||
dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize);
|
||||
gSampleDmas[gSampleDmaCount].ramAddr = dma;
|
||||
@@ -169,17 +172,21 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
|
||||
gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize;
|
||||
gSampleDmaCount++;
|
||||
}
|
||||
|
||||
for (i = 0; i < gSampleDmaCount; i++) {
|
||||
gSampleDmaReuseQueue1[i] = i;
|
||||
gSampleDmas[i].reuseIndex = i;
|
||||
}
|
||||
|
||||
for (i = gSampleDmaCount; i < 0x100; i++) {
|
||||
gSampleDmaReuseQueue1[i] = 0;
|
||||
}
|
||||
|
||||
gSampleDmaReuseQueue1RdPos = 0;
|
||||
gSampleDmaReuseQueue1WrPos = gSampleDmaCount;
|
||||
gSampleDmaListSize1 = gSampleDmaCount;
|
||||
gSampleDmaBuffSize = 0x200;
|
||||
|
||||
for (i = 0; i < gNumNotes; i++) {
|
||||
dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize);
|
||||
gSampleDmas[gSampleDmaCount].ramAddr = dma;
|
||||
@@ -193,13 +200,16 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
|
||||
gSampleDmas[gSampleDmaCount].size = gSampleDmaBuffSize;
|
||||
gSampleDmaCount++;
|
||||
}
|
||||
|
||||
for (i = gSampleDmaListSize1; i < gSampleDmaCount; i++) {
|
||||
gSampleDmaReuseQueue2[i - gSampleDmaListSize1] = i;
|
||||
gSampleDmas[i].reuseIndex = i - gSampleDmaListSize1;
|
||||
}
|
||||
|
||||
for (i = gSampleDmaCount; i < 0x100; i++) {
|
||||
gSampleDmaReuseQueue2[i] = gSampleDmaListSize1;
|
||||
}
|
||||
|
||||
gSampleDmaReuseQueue2RdPos = 0;
|
||||
gSampleDmaReuseQueue2WrPos = gSampleDmaCount - gSampleDmaListSize1;
|
||||
}
|
||||
@@ -207,12 +217,12 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
|
||||
void AudioLoad_InitTable(AudioTable* table, u8* romAddr, u16 unkMediumParam) {
|
||||
s32 i;
|
||||
|
||||
table->unkMediumParam = unkMediumParam;
|
||||
table->romAddr = romAddr;
|
||||
table->base.unkMediumParam = unkMediumParam;
|
||||
table->base.romAddr = (uintptr_t) romAddr;
|
||||
|
||||
for (i = 0; i < table->numEntries; i++) {
|
||||
for (i = 0; i < table->base.numEntries; i++) {
|
||||
if ((table->entries[i].size != 0) && (table->entries[i].medium == MEDIUM_CART)) {
|
||||
table->entries[i].romAddr += (u32) romAddr;
|
||||
table->entries[i].romAddr += (uintptr_t) romAddr;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -227,7 +237,9 @@ void* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outFontId) {
|
||||
fontId = gSeqFontTable[index++];
|
||||
soundFontData = AudioLoad_SyncLoadFont(fontId);
|
||||
}
|
||||
|
||||
*outFontId = fontId;
|
||||
|
||||
return soundFontData;
|
||||
}
|
||||
|
||||
@@ -253,7 +265,8 @@ s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
|
||||
return -1;
|
||||
}
|
||||
if (sample->medium == MEDIUM_UNK) {
|
||||
AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size, gSampleBankTable->unkMediumParam);
|
||||
AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleAddr, sample->size,
|
||||
gSampleBankTable->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_SyncDma(sample->sampleAddr, sampleAddr, sample->size, sample->medium);
|
||||
}
|
||||
@@ -296,7 +309,7 @@ void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 nChunks, s32 retData, O
|
||||
}
|
||||
|
||||
void AudioLoad_AsyncLoadSeq(s32 seqId, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
|
||||
s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)];
|
||||
s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
|
||||
s32 fontsLeft = gSeqFontTable[index++];
|
||||
|
||||
for (fontsLeft; fontsLeft > 0; fontsLeft--) {
|
||||
@@ -306,17 +319,18 @@ void AudioLoad_AsyncLoadSeq(s32 seqId, s32 nChunks, s32 retData, OSMesgQueue* re
|
||||
}
|
||||
|
||||
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
|
||||
s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)];
|
||||
s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
|
||||
|
||||
*outNumFonts = gSeqFontTable[index++];
|
||||
if (*outNumFonts == 0) {
|
||||
return NULL;
|
||||
} else {
|
||||
return &gSeqFontTable[index];
|
||||
}
|
||||
return &gSeqFontTable[index];
|
||||
}
|
||||
|
||||
void AudioLoad_DiscardSeqFonts(s32 seqId) {
|
||||
s32 index = ((u16*) gSeqFontTable)[AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId)];
|
||||
s32 index = *((u16*) gSeqFontTable + AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId));
|
||||
s32 numFonts = gSeqFontTable[index++];
|
||||
u32 fontId;
|
||||
|
||||
@@ -326,8 +340,8 @@ void AudioLoad_DiscardSeqFonts(s32 seqId) {
|
||||
if (AudioHeap_SearchPermanentCache(1, fontId) == NULL) {
|
||||
AudioLoad_DiscardFont(fontId);
|
||||
if (gFontLoadStatus[fontId] != 5) {
|
||||
if (1) {}
|
||||
gFontLoadStatus[fontId] = 0;
|
||||
if (1) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -345,6 +359,7 @@ s32 AudioLoad_DiscardFont(s32 fontId) {
|
||||
} else if (tcache->entries[1].id == fontId) {
|
||||
tcache->entries[1].id = -1;
|
||||
}
|
||||
|
||||
pcache = &cache->persistent;
|
||||
for (i = 0; i < pcache->numEntries; i++) {
|
||||
if (pcache->entries[i].id == fontId) {
|
||||
@@ -366,16 +381,22 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
s32 i;
|
||||
|
||||
seqId = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId);
|
||||
|
||||
func_800144E4(&gSeqPlayers[playerIdx]);
|
||||
index = ((u16*) gSeqFontTable)[seqId];
|
||||
|
||||
index = *((u16*) gSeqFontTable + seqId);
|
||||
numFonts = gSeqFontTable[index++];
|
||||
fontId = 0xFF;
|
||||
|
||||
for (numFonts; numFonts > 0; numFonts--) {
|
||||
fontId = gSeqFontTable[index++];
|
||||
AudioLoad_SyncLoadFont(fontId);
|
||||
}
|
||||
|
||||
seqData = AudioLoad_SyncLoadSeq(seqId);
|
||||
|
||||
func_80016804(playerIdx);
|
||||
|
||||
gSeqPlayers[playerIdx].seqId = seqId;
|
||||
gSeqPlayers[playerIdx].defaultFont = fontId;
|
||||
gSeqPlayers[playerIdx].enabled = true;
|
||||
@@ -384,6 +405,7 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
|
||||
gSeqPlayers[playerIdx].scriptState.depth = 0;
|
||||
gSeqPlayers[playerIdx].delay = 0;
|
||||
gSeqPlayers[playerIdx].finished = false;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
;
|
||||
}
|
||||
@@ -411,17 +433,21 @@ void* AudioLoad_SyncLoadSampleBank(u32 sampleBankId, s32* outMedium) {
|
||||
*outMedium = MEDIUM_RAM;
|
||||
return ramAddr;
|
||||
}
|
||||
|
||||
cachePolicy = sampleBankTable->entries[sampleBankId].cachePolicy;
|
||||
if (cachePolicy == CACHEPOLICY_4) {
|
||||
*outMedium = sampleBankTable->entries[sampleBankId].medium;
|
||||
return sampleBankTable->entries[sampleBankId].romAddr;
|
||||
}
|
||||
|
||||
ramAddr = AudioLoad_SyncLoad(2, sampleBankId, &noLoad);
|
||||
if (ramAddr != NULL) {
|
||||
*outMedium = MEDIUM_RAM;
|
||||
return ramAddr;
|
||||
}
|
||||
|
||||
*outMedium = sampleBankTable->entries[sampleBankId].medium;
|
||||
|
||||
return sampleBankTable->entries[sampleBankId].romAddr;
|
||||
}
|
||||
|
||||
@@ -433,25 +459,30 @@ void* AudioLoad_SyncLoadFont(s32 fontId) {
|
||||
SampleBankRelocInfo relocInfo;
|
||||
|
||||
fontId = AudioLoad_GetLoadTableIndex(FONT_TABLE, fontId);
|
||||
|
||||
sampleBankId1 = gSoundFontList[fontId].sampleBankId1;
|
||||
sampleBankId2 = gSoundFontList[fontId].sampleBankId2;
|
||||
|
||||
relocInfo.sampleBankId1 = sampleBankId1;
|
||||
relocInfo.sampleBankId2 = sampleBankId2;
|
||||
|
||||
if (sampleBankId1 != SAMPLES_NONE) {
|
||||
relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1);
|
||||
} else {
|
||||
relocInfo.baseAddr1 = NULL;
|
||||
}
|
||||
|
||||
if (sampleBankId2 != SAMPLES_NONE) {
|
||||
relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2);
|
||||
} else {
|
||||
relocInfo.baseAddr2 = NULL;
|
||||
}
|
||||
|
||||
fontData = AudioLoad_SyncLoad(1, fontId, &didAllocate);
|
||||
if (fontData == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (didAllocate == 1) {
|
||||
AudioLoad_RelocateFontAndPreloadSamples(fontId, fontData, &relocInfo, AUDIOLOAD_SYNC);
|
||||
}
|
||||
@@ -479,6 +510,7 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
|
||||
medium = table->entries[id].medium;
|
||||
cachePolicy = table->entries[id].cachePolicy;
|
||||
romAddr = table->entries[id].romAddr;
|
||||
|
||||
switch (cachePolicy) {
|
||||
case CACHEPOLICY_0:
|
||||
ramAddr = AudioHeap_AllocPermanent(tableType, id, size);
|
||||
@@ -486,18 +518,21 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
|
||||
return ramAddr;
|
||||
}
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_1:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id);
|
||||
if (ramAddr == NULL) {
|
||||
return ramAddr;
|
||||
}
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_2:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id);
|
||||
if (ramAddr == NULL) {
|
||||
return ramAddr;
|
||||
}
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_3:
|
||||
case CACHEPOLICY_4:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id);
|
||||
@@ -508,24 +543,28 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
|
||||
}
|
||||
|
||||
*didAllocate = true;
|
||||
|
||||
if (medium == MEDIUM_UNK) {
|
||||
AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, table->unkMediumParam);
|
||||
AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, table->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_SyncDma(romAddr, ramAddr, size, medium);
|
||||
}
|
||||
loadStatus = (cachePolicy == CACHEPOLICY_0) ? 5 : 2;
|
||||
}
|
||||
|
||||
switch (tableType) {
|
||||
case SEQUENCE_TABLE:
|
||||
if (gSeqLoadStatus[id] != 5) {
|
||||
gSeqLoadStatus[id] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
if (gFontLoadStatus[id] != 5) {
|
||||
gFontLoadStatus[id] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
if (gSampleFontLoadStatus[id] != 5) {
|
||||
gSampleFontLoadStatus[id] = loadStatus;
|
||||
@@ -551,6 +590,7 @@ void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
|
||||
if (ramAddr != NULL) {
|
||||
return ramAddr;
|
||||
}
|
||||
|
||||
ramAddr = AudioHeap_SearchCaches(tableType, CACHE_EITHER, id);
|
||||
if (ramAddr != NULL) {
|
||||
return ramAddr;
|
||||
@@ -595,11 +635,11 @@ void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) {
|
||||
fontDataPtrs[0] += fontBaseAddr;
|
||||
|
||||
for (i = 0; i < numDrums; i++) {
|
||||
offset = (*drumDataPtrs)[i];
|
||||
offset = *(*drumDataPtrs + i);
|
||||
if (offset != 0) {
|
||||
drum = offset += fontBaseAddr;
|
||||
(*drumDataPtrs)[i] = drum;
|
||||
// temp2;
|
||||
*(*drumDataPtrs + i) = drum;
|
||||
|
||||
if (!drum->isRelocated) {
|
||||
AudioLoad_RelocateSample(&drum->tunedSample, fontBaseAddr, relocData);
|
||||
offset = (u32) drum->envelope;
|
||||
@@ -635,7 +675,9 @@ void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) {
|
||||
|
||||
void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
|
||||
size = ALIGN16(size);
|
||||
|
||||
osInvalDCache(ramAddr, size);
|
||||
|
||||
while (true) {
|
||||
if (size < 0x400) {
|
||||
break;
|
||||
@@ -646,6 +688,7 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
|
||||
devAddr += 0x400;
|
||||
ramAddr += 0x400;
|
||||
}
|
||||
|
||||
if (size != 0) {
|
||||
AudioLoad_Dma(&gSyncDmaIoMsg, 1, 0, devAddr, ramAddr, size, &gSyncDmaQueue, medium, "FastCopy");
|
||||
MQ_WAIT_FOR_MESG(&gSyncDmaQueue, NULL);
|
||||
@@ -683,11 +726,13 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void
|
||||
if (size & 0xF) {
|
||||
size = ALIGN16(size);
|
||||
}
|
||||
|
||||
mesg->hdr.pri = priority;
|
||||
mesg->hdr.retQueue = retQueue;
|
||||
mesg->dramAddr = ramAddr;
|
||||
mesg->devAddr = devAddr;
|
||||
mesg->size = size;
|
||||
|
||||
handle->transferInfo.cmdType = 2;
|
||||
osEPiStartDma(handle, mesg, direction);
|
||||
|
||||
@@ -722,17 +767,20 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
if (gFontLoadStatus[id] == 1) {
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
if (gSampleFontLoadStatus[id] == 1) {
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
ramAddr = AudioLoad_SearchCaches(tableType, id);
|
||||
if (ramAddr != NULL) {
|
||||
loadStatus = 2;
|
||||
@@ -745,6 +793,7 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
cachePolicy = table->entries[id].cachePolicy;
|
||||
romAddr = table->entries[id].romAddr;
|
||||
loadStatus = 2;
|
||||
|
||||
switch (cachePolicy) {
|
||||
case CACHEPOLICY_0:
|
||||
ramAddr = AudioHeap_AllocPermanent(tableType, id, size);
|
||||
@@ -753,18 +802,21 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
}
|
||||
loadStatus = 5;
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_1:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, id);
|
||||
if (ramAddr == NULL) {
|
||||
return ramAddr;
|
||||
}
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_2:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, id);
|
||||
if (ramAddr == NULL) {
|
||||
return ramAddr;
|
||||
}
|
||||
break;
|
||||
|
||||
case CACHEPOLICY_3:
|
||||
case CACHEPOLICY_4:
|
||||
ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, id);
|
||||
@@ -777,17 +829,20 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
|
||||
(retData << 0x18) | (tableType << 0x10) | (id << 8) | loadStatus);
|
||||
loadStatus = 1;
|
||||
}
|
||||
|
||||
switch (tableType) {
|
||||
case SEQUENCE_TABLE:
|
||||
if (gSeqLoadStatus[id] != 5) {
|
||||
gSeqLoadStatus[id] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
if (gFontLoadStatus[id] != 5) {
|
||||
gFontLoadStatus[id] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
if (gSampleFontLoadStatus[id] != 5) {
|
||||
gSampleFontLoadStatus[id] = loadStatus;
|
||||
@@ -828,7 +883,7 @@ void AudioLoad_Init(void) {
|
||||
gAudioResetTimer = 0;
|
||||
|
||||
for (i = 0; i < gAudioHeapSize / 8; i++) {
|
||||
((u64*) gAudioHeap)[i] = 0;
|
||||
*((u64*) gAudioHeap + i) = 0;
|
||||
}
|
||||
|
||||
clearContext = gAudioContextStart;
|
||||
@@ -836,25 +891,31 @@ void AudioLoad_Init(void) {
|
||||
for (; dwordsLeft >= 0; dwordsLeft--) {
|
||||
*clearContext++ = 0;
|
||||
}
|
||||
|
||||
switch (osTvType) {
|
||||
case OS_TV_PAL:
|
||||
gMaxTempoTvTypeFactors = 20.03042f;
|
||||
gRefreshRate = 50;
|
||||
break;
|
||||
|
||||
case OS_TV_MPAL:
|
||||
gMaxTempoTvTypeFactors = 16.546f;
|
||||
gRefreshRate = 60;
|
||||
break;
|
||||
|
||||
default:
|
||||
case OS_TV_NTSC:
|
||||
gMaxTempoTvTypeFactors = 16.713f;
|
||||
gRefreshRate = 60;
|
||||
break;
|
||||
}
|
||||
|
||||
AudioThread_Init();
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
gAiBuffLengths[i] = 0xA0;
|
||||
}
|
||||
|
||||
gAudioTaskCountQ = 0;
|
||||
gAudioTaskIndexQ = 0;
|
||||
gCurAiBuffIndex = 0;
|
||||
@@ -862,13 +923,17 @@ void AudioLoad_Init(void) {
|
||||
gAudioCurTask = NULL;
|
||||
gAudioRspTasks[0].task.t.data_size = 0;
|
||||
gAudioRspTasks[1].task.t.data_size = 0;
|
||||
|
||||
osCreateMesgQueue(&gSyncDmaQueue, gSyncDmaMsg, 1);
|
||||
osCreateMesgQueue(&gCurAudioFrameDmaQueue, gCurAudioFrameDmaMsg, 64);
|
||||
osCreateMesgQueue(&gExternalLoadQueue, gExternalLoadMsg, 16);
|
||||
osCreateMesgQueue(&gPreloadSampleQueue, gPreloadSampleMsg, 16);
|
||||
|
||||
gCurAudioFrameDmaCount = 0;
|
||||
gSampleDmaCount = 0;
|
||||
|
||||
AudioHeap_InitMainPools(gInitPoolSize);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
gAiBuffers[i] = AudioHeap_Alloc(&gInitPool, AIBUF_SIZE);
|
||||
for (j = 0; j < AIBUF_LEN; j++) {
|
||||
@@ -878,26 +943,33 @@ void AudioLoad_Init(void) {
|
||||
gAudioSpecId = AUDIOSPEC_0;
|
||||
gAudioResetStep = 1;
|
||||
AudioHeap_ResetStep();
|
||||
gSequenceTable = (AudioTable*) &gSeqTableInit;
|
||||
gSoundFontTable = (AudioTable*) &gSoundFontTableInit;
|
||||
gSampleBankTable = (AudioTable*) &gSampleBankTableInit;
|
||||
|
||||
gSequenceTable = &gSeqTableInit;
|
||||
gSoundFontTable = &gSoundFontTableInit;
|
||||
gSampleBankTable = &gSampleBankTableInit;
|
||||
gSeqFontTable = gSeqFontTableInit;
|
||||
gNumSequences = gSequenceTable->numEntries;
|
||||
gNumSequences = gSequenceTable->base.numEntries;
|
||||
|
||||
AudioLoad_InitTable(gSequenceTable, SEGMENT_ROM_START(audio_seq), gSequenceMedium);
|
||||
AudioLoad_InitTable(gSoundFontTable, SEGMENT_ROM_START(audio_bank), gSoundFontMedium);
|
||||
AudioLoad_InitTable(gSampleBankTable, SEGMENT_ROM_START(audio_table), gSampleBankMedium);
|
||||
numFonts = gSoundFontTable->numEntries;
|
||||
|
||||
numFonts = gSoundFontTable->base.numEntries;
|
||||
|
||||
gSoundFontList = AudioHeap_Alloc(&gInitPool, numFonts * sizeof(SoundFont));
|
||||
|
||||
for (i = 0; i < numFonts; i++) {
|
||||
gSoundFontList[i].sampleBankId1 = (gSoundFontTable->entries[i].shortData1 >> 8) & 0xFF;
|
||||
gSoundFontList[i].sampleBankId2 = gSoundFontTable->entries[i].shortData1 & 0xFF;
|
||||
gSoundFontList[i].numInstruments = (gSoundFontTable->entries[i].shortData2 >> 8) & 0xFF;
|
||||
gSoundFontList[i].numDrums = gSoundFontTable->entries[i].shortData2 & 0xFF;
|
||||
}
|
||||
|
||||
ramAddr = AudioHeap_Alloc(&gInitPool, gPermanentPoolSize);
|
||||
if (ramAddr == NULL) {
|
||||
gPermanentPoolSize = 0;
|
||||
}
|
||||
|
||||
AudioHeap_InitPool(&gPermanentPool.pool, ramAddr, gPermanentPoolSize);
|
||||
func_800168BC();
|
||||
}
|
||||
@@ -918,6 +990,7 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, u8 instId, s8* status) {
|
||||
*status = SLOW_LOAD_STATUS_2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
slowLoad = &gSlowLoads.slowLoad[gSlowLoads.unk_00];
|
||||
if (slowLoad->state == SLOW_LOAD_DONE) {
|
||||
slowLoad->state = SLOW_LOAD_WAITING;
|
||||
@@ -1003,7 +1076,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
|
||||
} else if (slowLoad->bytesRemaining < 0x1000) {
|
||||
if (slowLoad->medium == MEDIUM_UNK) {
|
||||
AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr,
|
||||
slowLoad->bytesRemaining, sampleBankTable->unkMediumParam);
|
||||
slowLoad->bytesRemaining, sampleBankTable->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], slowLoad->bytesRemaining);
|
||||
}
|
||||
@@ -1011,7 +1084,7 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
|
||||
} else {
|
||||
if (slowLoad->medium == MEDIUM_UNK) {
|
||||
AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, 0x1000,
|
||||
sampleBankTable->unkMediumParam);
|
||||
sampleBankTable->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_DmaSlowCopy(&gSlowLoads.slowLoad[i], 0x1000);
|
||||
}
|
||||
@@ -1059,6 +1132,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32
|
||||
if (i == 16) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
asyncLoad->status = 1;
|
||||
asyncLoad->curDevAddr = devAddr;
|
||||
asyncLoad->ramAddr = ramAddr;
|
||||
@@ -1073,8 +1147,8 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, u8* ramAddr, u32 size, s32
|
||||
asyncLoad->chunkSize = 0x100;
|
||||
}
|
||||
}
|
||||
asyncLoad->retQueue = retQueue;
|
||||
|
||||
asyncLoad->retQueue = retQueue;
|
||||
asyncLoad->delay = 3;
|
||||
asyncLoad->medium = medium;
|
||||
asyncLoad->retMsg = retMesg;
|
||||
@@ -1119,35 +1193,42 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (asyncLoad->bytesRemaining == 0) {
|
||||
msg = asyncLoad->retMsg;
|
||||
tableType = (msg >> 0x10) & 0xFF;
|
||||
tableIndex = (msg >> 8) & 0xFF;
|
||||
loadStatus = msg & 0xFF;
|
||||
|
||||
switch (tableType) {
|
||||
case SEQUENCE_TABLE:
|
||||
if (gSeqLoadStatus[tableIndex] != 5) {
|
||||
gSeqLoadStatus[tableIndex] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case SAMPLE_TABLE:
|
||||
if (gSampleFontLoadStatus[tableIndex] != 5) {
|
||||
gSampleFontLoadStatus[tableIndex] = loadStatus;
|
||||
}
|
||||
break;
|
||||
|
||||
case FONT_TABLE:
|
||||
if (gFontLoadStatus[tableIndex] != 5) {
|
||||
gFontLoadStatus[tableIndex] = loadStatus;
|
||||
}
|
||||
|
||||
sampleBankId1 = gSoundFontList[tableIndex].sampleBankId1;
|
||||
sampleBankId2 = gSoundFontList[tableIndex].sampleBankId2;
|
||||
relocInfo.sampleBankId1 = sampleBankId1;
|
||||
relocInfo.sampleBankId2 = sampleBankId2;
|
||||
|
||||
if (sampleBankId1 != SAMPLES_NONE) {
|
||||
relocInfo.baseAddr1 = AudioLoad_SyncLoadSampleBank(sampleBankId1, &relocInfo.medium1);
|
||||
} else {
|
||||
relocInfo.baseAddr1 = NULL;
|
||||
}
|
||||
|
||||
if (sampleBankId2 != SAMPLES_NONE) {
|
||||
relocInfo.baseAddr2 = AudioLoad_SyncLoadSampleBank(sampleBankId2, &relocInfo.medium2);
|
||||
} else {
|
||||
@@ -1161,7 +1242,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
|
||||
} else if (asyncLoad->bytesRemaining < asyncLoad->chunkSize) {
|
||||
if (asyncLoad->medium == MEDIUM_UNK) {
|
||||
AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->bytesRemaining,
|
||||
sampleTable->unkMediumParam);
|
||||
sampleTable->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_AsyncDma(asyncLoad, asyncLoad->bytesRemaining);
|
||||
}
|
||||
@@ -1169,7 +1250,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
|
||||
} else {
|
||||
if (asyncLoad->medium == MEDIUM_UNK) {
|
||||
AudioLoad_AsyncDmaUnkMedium(asyncLoad->curDevAddr, asyncLoad->curRamAddr, asyncLoad->chunkSize,
|
||||
sampleTable->unkMediumParam);
|
||||
sampleTable->base.unkMediumParam);
|
||||
} else {
|
||||
AudioLoad_AsyncDma(asyncLoad, asyncLoad->chunkSize);
|
||||
}
|
||||
@@ -1211,7 +1292,7 @@ void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBank
|
||||
if ((sample->size != 0) && (sample->isRelocated != 1)) {
|
||||
sample->loop = reloc = (u32) sample->loop + fontDataAddr;
|
||||
sample->book = reloc = (u32) sample->book + fontDataAddr;
|
||||
switch (sample->medium) { /* irregular */
|
||||
switch (sample->medium) {
|
||||
case MEDIUM_RAM:
|
||||
sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr1;
|
||||
sample->medium = relocInfo->medium1;
|
||||
@@ -1224,6 +1305,7 @@ void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBank
|
||||
case MEDIUM_DISK_DRIVE:
|
||||
break;
|
||||
}
|
||||
|
||||
sample->isRelocated = true;
|
||||
if (sample->unk_bit26 && (sample->medium != 0)) {
|
||||
gUsedSamples[gNumUsedSamples++] = sample;
|
||||
@@ -1253,9 +1335,11 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
} else {
|
||||
D_80146D80 = 0;
|
||||
}
|
||||
|
||||
gNumUsedSamples = 0;
|
||||
AudioLoad_RelocateFont(fontId, fontDataAddr, relocData);
|
||||
size = 0;
|
||||
|
||||
for (i = 0; i < gNumUsedSamples; i++) {
|
||||
size += ALIGN16(gUsedSamples[i]->size);
|
||||
}
|
||||
@@ -1268,7 +1352,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
#ifdef AVOID_UB
|
||||
sampleRamAddr = NULL;
|
||||
#endif
|
||||
//! Bug: Those are assignments, not equality checks.
|
||||
//! @bug Those are assignments, not equality checks.
|
||||
switch (isAsync) {
|
||||
case AUDIOLOAD_SYNC:
|
||||
if (sample->medium = relocData->medium1) {
|
||||
@@ -1279,6 +1363,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
sample->sampleAddr, sample->medium);
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOLOAD_ASYNC:
|
||||
if (sample->medium = relocData->medium1) {
|
||||
sampleRamAddr = AudioHeap_AllocTemporarySampleCache(sample->size, relocData->sampleBankId1,
|
||||
@@ -1289,14 +1374,16 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sampleRamAddr == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (isAsync) {
|
||||
case AUDIOLOAD_SYNC:
|
||||
if (sample->medium == MEDIUM_UNK) {
|
||||
AudioLoad_SyncDmaUnkMedium(sample->sampleAddr, sampleRamAddr, sample->size,
|
||||
gSampleBankTable->unkMediumParam);
|
||||
gSampleBankTable->base.unkMediumParam);
|
||||
sample->sampleAddr = sampleRamAddr;
|
||||
sample->medium = MEDIUM_RAM;
|
||||
} else {
|
||||
@@ -1305,6 +1392,7 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
sample->medium = MEDIUM_RAM;
|
||||
}
|
||||
break;
|
||||
|
||||
case AUDIOLOAD_ASYNC:
|
||||
size = gPreloadSampleStackTop;
|
||||
gPreloadSampleStack[size].sample = sample;
|
||||
@@ -1317,7 +1405,9 @@ s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, Sample
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gNumUsedSamples = 0;
|
||||
|
||||
if ((gPreloadSampleStackTop != 0) && !inProgress) {
|
||||
sample = gPreloadSampleStack[gPreloadSampleStackTop - 1].sample;
|
||||
nChunks = (sample->size / 0x1000) + 1;
|
||||
@@ -1367,6 +1457,7 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
|
||||
// "============Error: Magic is Broken after loading.\n"
|
||||
gPreloadSampleStack[preloadIndex].isFree = 1;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
if (gPreloadSampleStackTop <= 0) {
|
||||
break;
|
||||
@@ -1380,6 +1471,7 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
|
||||
sampleAddr = sample->sampleAddr;
|
||||
size = sample->size;
|
||||
nChunks = (size >> 0xC) + 1;
|
||||
|
||||
key = sampleAddr + size + sample->medium;
|
||||
if (key != gPreloadSampleStack[gPreloadSampleStackTop - 1].endAndMediumKey) {
|
||||
// "============Error: Magic is Broken: %x\n";
|
||||
@@ -1418,13 +1510,9 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
|
||||
s32 i;
|
||||
Drum* drum;
|
||||
Instrument* inst;
|
||||
s32 numLoaded;
|
||||
s32 numDrums;
|
||||
s32 numInstruments;
|
||||
|
||||
numLoaded = 0;
|
||||
numDrums = gSoundFontList[fontId].numDrums;
|
||||
numInstruments = gSoundFontList[fontId].numInstruments;
|
||||
s32 numLoaded = 0;
|
||||
s32 numDrums = gSoundFontList[fontId].numDrums;
|
||||
s32 numInstruments = gSoundFontList[fontId].numInstruments;
|
||||
|
||||
for (i = 0; i < numDrums; i++) {
|
||||
drum = Audio_GetDrum(fontId, i);
|
||||
@@ -1433,6 +1521,7 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
|
||||
}
|
||||
numLoaded = AudioLoad_AddToSampleSet(drum->tunedSample.sample, numLoaded, sampleSet);
|
||||
}
|
||||
|
||||
for (i = 0; i < numInstruments; i++) {
|
||||
inst = Audio_GetInstrument(fontId, i);
|
||||
if (inst == NULL) {
|
||||
@@ -1446,5 +1535,6 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
|
||||
}
|
||||
numLoaded = AudioLoad_AddToSampleSet(inst->normalPitchTunedSample.sample, numLoaded, sampleSet);
|
||||
}
|
||||
|
||||
return numLoaded;
|
||||
}
|
||||
|
||||
@@ -499,23 +499,20 @@ void func_80009124(s16** arg0);
|
||||
|
||||
void func_80009504(s16* arg0, UnkStruct_800097A8* arg1) {
|
||||
s32 i;
|
||||
f32 temp_ft0;
|
||||
f32* var_v0;
|
||||
f32* var_v0_2;
|
||||
s32 temp_v0;
|
||||
void* var_s0;
|
||||
|
||||
var_s0 = arg0;
|
||||
if (arg1->unk_0 != NULL) {
|
||||
arg1->unk_C = arg1->unk_0;
|
||||
arg1->unk_0 = 0;
|
||||
}
|
||||
|
||||
arg1->unk18 += D_8014C1B4;
|
||||
while (arg1->unk18 > 0x1000) {
|
||||
func_80009124(&arg1->unk_C);
|
||||
arg1->unk18 -= 0x1000;
|
||||
}
|
||||
|
||||
func_80008364(D_80145D48, D_80146148, 8, D_80146548);
|
||||
|
||||
for (i = 0; i < 0x100; i++) {
|
||||
if (D_80145D48[i] > 32767.0f) {
|
||||
D_80145D48[i] = 32767.0f;
|
||||
@@ -524,6 +521,7 @@ void func_80009504(s16* arg0, UnkStruct_800097A8* arg1) {
|
||||
D_80145D48[i] = -32767.0f;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 0x100; i++, arg0++) {
|
||||
*arg0 = D_80145D48[i];
|
||||
}
|
||||
|
||||
+82
-76
@@ -1,49 +1,53 @@
|
||||
#include "sys.h"
|
||||
#include "sf64audio_provisional.h"
|
||||
|
||||
AudioTableBase gSampleBankTableInit = { 4, 0, 0 };
|
||||
AudioTableEntry gSampleBankTableInitEntries[4] = {
|
||||
{ 0x000000, 0x0E1E30, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x0E1E30, 0x0FF9D0, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x1E1800, 0x497480, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x678C80, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
AudioTable gSampleBankTableInit = {
|
||||
{ 4, 0, 0 },
|
||||
{
|
||||
{ 0x000000, 0x0E1E30, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x0E1E30, 0x0FF9D0, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x1E1800, 0x497480, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
{ 0x678C80, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 },
|
||||
},
|
||||
};
|
||||
|
||||
AudioTableBase gSeqTableInit = { SEQ_ID_MAX, 0, 0 };
|
||||
AudioTableEntry gSeqTableInitEntries[SEQ_ID_MAX] = {
|
||||
{ 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 }, { 0x03AF0, 0x56B0, MEDIUM_CART, CACHEPOLICY_0 },
|
||||
{ 0x091A0, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0BF20, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x0D330, 0x1600, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0E930, 0xF20, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x0F850, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x10BF0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x11CF0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x136D0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x14AB0, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x15DA0, 0xB70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x16910, 0x2460, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x18D70, 0xD40, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x19AB0, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x1A2A0, 0x1440, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1B6E0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1D200, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x1ED30, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1FDE0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x211F0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 }, { 0x22120, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x24C50, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x25440, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x267F0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x27460, 0x180, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x275E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x27BA0, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2C9E0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x2DEC0, 0x400, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2E2C0, 0x800, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x2EAC0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x30570, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x32010, 0x1370, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x33380, 0xB80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x33F00, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x344C0, 0x550, MEDIUM_CART, CACHEPOLICY_3 }, { 0x34A10, 0x360, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x34D70, 0x620, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x35390, 0xA70, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x35E00, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x368B0, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x37C80, 0x250, MEDIUM_CART, CACHEPOLICY_3 }, { 0x37ED0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x385C0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x39570, 0x1780, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
AudioTable gSeqTableInit = {
|
||||
{ SEQ_ID_MAX, 0, 0 },
|
||||
{
|
||||
{ 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 }, { 0x03AF0, 0x56B0, MEDIUM_CART, CACHEPOLICY_0 },
|
||||
{ 0x091A0, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0BF20, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x0D330, 0x1600, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0E930, 0xF20, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x0F850, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x10BF0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x11CF0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x136D0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x14AB0, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x15DA0, 0xB70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x16910, 0x2460, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x18D70, 0xD40, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x19AB0, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x1A2A0, 0x1440, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1B6E0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1D200, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x1ED30, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1FDE0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x211F0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 }, { 0x22120, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x24C50, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x25440, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x267F0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x27460, 0x180, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x275E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x27BA0, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2C9E0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x2DEC0, 0x400, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2E2C0, 0x800, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x2EAC0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x30570, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x32010, 0x1370, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x33380, 0xB80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x33F00, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x344C0, 0x550, MEDIUM_CART, CACHEPOLICY_3 }, { 0x34A10, 0x360, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x34D70, 0x620, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x35390, 0xA70, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x35E00, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x368B0, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x37C80, 0x250, MEDIUM_CART, CACHEPOLICY_3 }, { 0x37ED0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
{ 0x385C0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x39570, 0x1780, MEDIUM_CART, CACHEPOLICY_3 },
|
||||
},
|
||||
};
|
||||
#define SOUNDFONT_ENTRY(offset, size, medium, cachePolicy, bank1, bank2, numInst, numDrums) \
|
||||
{ \
|
||||
@@ -51,41 +55,43 @@ AudioTableEntry gSeqTableInitEntries[SEQ_ID_MAX] = {
|
||||
(((numInst) &0xFF) << 8) | ((numDrums) &0xFF) \
|
||||
}
|
||||
|
||||
AudioTableBase gSoundFontTableInit = { 33, 0, 0 };
|
||||
AudioTableEntry gSoundFontTableInitEntries[33] = {
|
||||
SOUNDFONT_ENTRY(0x00000, 0x2F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x02F00, 0x0FE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_MAP, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x03EE0, 0x0640, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x04520, 0x1560, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x05A80, 0x0C00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x06680, 0x0DE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x07460, 0x1200, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x08660, 0x1040, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x096A0, 0x0E40, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0A4E0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0B100, 0x1920, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0CA20, 0x0A20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0D440, 0x0A00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0DE40, 0x0D60, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0EBA0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0F7C0, 0x0F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x106C0, 0x0F20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x115E0, 0x0E20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x12400, 0x10A0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x134A0, 0x2580, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x15A20, 0x09E0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x16400, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
|
||||
SOUNDFONT_ENTRY(0x17620, 0x0180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0),
|
||||
SOUNDFONT_ENTRY(0x177A0, 0x11C0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
|
||||
SOUNDFONT_ENTRY(0x18960, 0x0940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x192A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x19C80, 0x0920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1A5A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1AF80, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1B960, 0x0A10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1C370, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1CD50, 0x0A00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1D750, 0x08D0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
AudioTable gSoundFontTableInit = {
|
||||
{ 33, 0, 0 },
|
||||
{
|
||||
SOUNDFONT_ENTRY(0x00000, 0x2F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x02F00, 0x0FE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_MAP, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x03EE0, 0x0640, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x04520, 0x1560, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x05A80, 0x0C00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x06680, 0x0DE0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x07460, 0x1200, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x08660, 0x1040, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x096A0, 0x0E40, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0A4E0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0B100, 0x1920, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0CA20, 0x0A20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0D440, 0x0A00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0DE40, 0x0D60, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0EBA0, 0x0C20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x0F7C0, 0x0F00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x106C0, 0x0F20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x115E0, 0x0E20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x12400, 0x10A0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x134A0, 0x2580, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x15A20, 0x09E0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0),
|
||||
SOUNDFONT_ENTRY(0x16400, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
|
||||
SOUNDFONT_ENTRY(0x17620, 0x0180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0),
|
||||
SOUNDFONT_ENTRY(0x177A0, 0x11C0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64),
|
||||
SOUNDFONT_ENTRY(0x18960, 0x0940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x192A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x19C80, 0x0920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1A5A0, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1AF80, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1B960, 0x0A10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1C370, 0x09E0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1CD50, 0x0A00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
SOUNDFONT_ENTRY(0x1D750, 0x08D0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64),
|
||||
},
|
||||
};
|
||||
|
||||
#define AS_BYTES(x) (((x) >> 8) & 0xFF), ((x) &0xFF)
|
||||
|
||||
Reference in New Issue
Block a user