summaryrefslogtreecommitdiff
path: root/src/code/audio_load.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code/audio_load.c')
-rw-r--r--src/code/audio_load.c504
1 files changed, 267 insertions, 237 deletions
diff --git a/src/code/audio_load.c b/src/code/audio_load.c
index 27a1ae1f0..dde5abbc2 100644
--- a/src/code/audio_load.c
+++ b/src/code/audio_load.c
@@ -1,17 +1,18 @@
#include "ultra64.h"
#include "global.h"
-#define MK_ASYNC_MSG(retData, tableType, id, status) (((retData) << 24) | ((tableType) << 16) | ((id) << 8) | (status))
+#define MK_ASYNC_MSG(retData, tableType, id, loadStatus) \
+ (((retData) << 24) | ((tableType) << 16) | ((id) << 8) | (loadStatus))
#define ASYNC_TBLTYPE(v) ((u8)(v >> 16))
#define ASYNC_ID(v) ((u8)(v >> 8))
-#define ASYNC_STATUS(v) ((u8)(v >> 0))
+#define ASYNC_LOAD_STATUS(v) ((u8)(v >> 0))
typedef enum {
- /* 0 */ LOAD_STATUS_WAITING,
- /* 1 */ LOAD_STATUS_START,
- /* 2 */ LOAD_STATUS_LOADING,
- /* 3 */ LOAD_STATUS_DONE
-} SlowLoadStatus;
+ /* 0 */ SLOW_LOAD_STATE_WAITING,
+ /* 1 */ SLOW_LOAD_STATE_START,
+ /* 2 */ SLOW_LOAD_STATE_LOADING,
+ /* 3 */ SLOW_LOAD_STATE_DONE
+} SlowLoadState;
typedef struct {
/* 0x00 */ s32 sampleBankId1;
@@ -200,7 +201,7 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef,
return (devAddr - dmaDevAddr) + dma->ramAddr;
}
-void AudioLoad_InitSampleDmaBuffers(s32 arg0) {
+void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
SampleDma* dma;
s32 i;
s32 t2;
@@ -208,13 +209,12 @@ void AudioLoad_InitSampleDmaBuffers(s32 arg0) {
gAudioContext.sampleDmaBufSize = gAudioContext.sampleDmaBufSize1;
gAudioContext.sampleDmas =
- AudioHeap_Alloc(&gAudioContext.notesAndBuffersPool,
+ AudioHeap_Alloc(&gAudioContext.miscPool,
4 * gAudioContext.numNotes * sizeof(SampleDma) * gAudioContext.audioBufferParameters.specUnk4);
t2 = 3 * gAudioContext.numNotes * gAudioContext.audioBufferParameters.specUnk4;
for (i = 0; i < t2; i++) {
dma = &gAudioContext.sampleDmas[gAudioContext.sampleDmaCount];
- dma->ramAddr =
- AudioHeap_AllocAttemptExternal(&gAudioContext.notesAndBuffersPool, gAudioContext.sampleDmaBufSize);
+ dma->ramAddr = AudioHeap_AllocAttemptExternal(&gAudioContext.miscPool, gAudioContext.sampleDmaBufSize);
if (dma->ramAddr == NULL) {
break;
} else {
@@ -244,8 +244,7 @@ void AudioLoad_InitSampleDmaBuffers(s32 arg0) {
for (j = 0; j < gAudioContext.numNotes; j++) {
dma = &gAudioContext.sampleDmas[gAudioContext.sampleDmaCount];
- dma->ramAddr =
- AudioHeap_AllocAttemptExternal(&gAudioContext.notesAndBuffersPool, gAudioContext.sampleDmaBufSize);
+ dma->ramAddr = AudioHeap_AllocAttemptExternal(&gAudioContext.miscPool, gAudioContext.sampleDmaBufSize);
if (dma->ramAddr == NULL) {
break;
} else {
@@ -275,9 +274,9 @@ void AudioLoad_InitSampleDmaBuffers(s32 arg0) {
s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
if (fontId == 0xFF) {
return true;
- } else if (gAudioContext.fontLoadStatus[fontId] >= 2) {
+ } else if (gAudioContext.fontLoadStatus[fontId] >= LOAD_STATUS_COMPLETE) {
return true;
- } else if (gAudioContext.fontLoadStatus[AudioLoad_GetRealTableIndex(FONT_TABLE, fontId)] >= 2) {
+ } else if (gAudioContext.fontLoadStatus[AudioLoad_GetRealTableIndex(FONT_TABLE, fontId)] >= LOAD_STATUS_COMPLETE) {
return true;
} else {
return false;
@@ -287,9 +286,10 @@ s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
if (seqId == 0xFF) {
return true;
- } else if (gAudioContext.seqLoadStatus[seqId] >= 2) {
+ } else if (gAudioContext.seqLoadStatus[seqId] >= LOAD_STATUS_COMPLETE) {
return true;
- } else if (gAudioContext.seqLoadStatus[AudioLoad_GetRealTableIndex(SEQUENCE_TABLE, seqId)] >= 2) {
+ } else if (gAudioContext.seqLoadStatus[AudioLoad_GetRealTableIndex(SEQUENCE_TABLE, seqId)] >=
+ LOAD_STATUS_COMPLETE) {
return true;
} else {
return false;
@@ -299,43 +299,45 @@ s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) {
if (sampleBankId == 0xFF) {
return true;
- } else if (gAudioContext.sampleFontLoadStatus[sampleBankId] >= 2) {
+ } else if (gAudioContext.sampleFontLoadStatus[sampleBankId] >= LOAD_STATUS_COMPLETE) {
return true;
- } else if (gAudioContext.sampleFontLoadStatus[AudioLoad_GetRealTableIndex(SAMPLE_TABLE, sampleBankId)] >= 2) {
+ } else if (gAudioContext.sampleFontLoadStatus[AudioLoad_GetRealTableIndex(SAMPLE_TABLE, sampleBankId)] >=
+ LOAD_STATUS_COMPLETE) {
return true;
} else {
return false;
}
}
-void AudioLoad_SetFontLoadStatus(s32 fontId, s32 status) {
- if ((fontId != 0xFF) && (gAudioContext.fontLoadStatus[fontId] != 5)) {
- gAudioContext.fontLoadStatus[fontId] = status;
+void AudioLoad_SetFontLoadStatus(s32 fontId, s32 loadStatus) {
+ if ((fontId != 0xFF) && (gAudioContext.fontLoadStatus[fontId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
+ gAudioContext.fontLoadStatus[fontId] = loadStatus;
}
}
-void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 status) {
- if ((seqId != 0xFF) && (gAudioContext.seqLoadStatus[seqId] != 5)) {
- gAudioContext.seqLoadStatus[seqId] = status;
+void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 loadStatus) {
+ if ((seqId != 0xFF) && (gAudioContext.seqLoadStatus[seqId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
+ gAudioContext.seqLoadStatus[seqId] = loadStatus;
}
}
-void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 status) {
+void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadStatus) {
if (sampleBankId != 0xFF) {
- if (gAudioContext.sampleFontLoadStatus[sampleBankId] != 5) {
- gAudioContext.sampleFontLoadStatus[sampleBankId] = status;
+ if (gAudioContext.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED) {
+ gAudioContext.sampleFontLoadStatus[sampleBankId] = loadStatus;
}
- if ((gAudioContext.sampleFontLoadStatus[sampleBankId] == 5) ||
- (gAudioContext.sampleFontLoadStatus[sampleBankId] == 2)) {
+ if ((gAudioContext.sampleFontLoadStatus[sampleBankId] == LOAD_STATUS_PERMANENTLY_LOADED) ||
+ (gAudioContext.sampleFontLoadStatus[sampleBankId] == LOAD_STATUS_COMPLETE)) {
AudioHeap_ApplySampleBankCache(sampleBankId);
}
}
}
-void AudioLoad_SetSampleFontLoadStatus(s32 sampleBankId, s32 status) {
- if ((sampleBankId != 0xFF) && (gAudioContext.sampleFontLoadStatus[sampleBankId] != 5)) {
- gAudioContext.sampleFontLoadStatus[sampleBankId] = status;
+void AudioLoad_SetSampleFontLoadStatus(s32 sampleBankId, s32 loadStatus) {
+ if ((sampleBankId != 0xFF) &&
+ (gAudioContext.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
+ gAudioContext.sampleFontLoadStatus[sampleBankId] = loadStatus;
}
}
@@ -353,9 +355,9 @@ void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) {
}
SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
- char pad[0x8];
+ s32 pad[2];
s32 index;
- SoundFontData* font;
+ SoundFontData* fontData;
s32 numFonts;
s32 fontId;
s32 i;
@@ -370,12 +372,12 @@ SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
while (numFonts > 0) {
fontId = gAudioContext.sequenceFontTable[index++];
- font = AudioLoad_SyncLoadFont(fontId);
+ fontData = AudioLoad_SyncLoadFont(fontId);
numFonts--;
}
*outDefaultFontId = fontId;
- return font;
+ return fontData;
}
void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) {
@@ -459,9 +461,7 @@ void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* ret
}
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
- s32 index;
-
- index = ((u16*)gAudioContext.sequenceFontTable)[seqId];
+ s32 index = ((u16*)gAudioContext.sequenceFontTable)[seqId];
*outNumFonts = gAudioContext.sequenceFontTable[index++];
if (*outNumFonts == 0) {
@@ -472,18 +472,15 @@ u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
void AudioLoad_DiscardSeqFonts(s32 seqId) {
s32 fontId;
- s32 index;
- s32 numFonts;
-
- index = ((u16*)gAudioContext.sequenceFontTable)[seqId];
- numFonts = gAudioContext.sequenceFontTable[index++];
+ s32 index = ((u16*)gAudioContext.sequenceFontTable)[seqId];
+ s32 numFonts = gAudioContext.sequenceFontTable[index++];
while (numFonts > 0) {
numFonts--;
fontId = AudioLoad_GetRealTableIndex(FONT_TABLE, gAudioContext.sequenceFontTable[index++]);
if (AudioHeap_SearchPermanentCache(FONT_TABLE, fontId) == NULL) {
AudioLoad_DiscardFont(fontId);
- AudioLoad_SetFontLoadStatus(fontId, 0);
+ AudioLoad_SetFontLoadStatus(fontId, LOAD_STATUS_NOT_LOADED);
}
}
}
@@ -564,11 +561,11 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
seqPlayer->seqId = seqId;
seqPlayer->defaultFont = AudioLoad_GetRealTableIndex(FONT_TABLE, fontId);
seqPlayer->seqData = seqData;
- seqPlayer->enabled = 1;
+ seqPlayer->enabled = true;
seqPlayer->scriptState.pc = seqData;
seqPlayer->scriptState.depth = 0;
seqPlayer->delay = 0;
- seqPlayer->finished = 0;
+ seqPlayer->finished = false;
seqPlayer->playerIdx = playerIdx;
AudioSeq_SkipForwardSequence(seqPlayer);
//! @bug missing return (but the return value is not used so it's not UB)
@@ -578,7 +575,7 @@ u8* AudioLoad_SyncLoadSeq(s32 seqId) {
s32 pad;
s32 didAllocate;
- if (gAudioContext.seqLoadStatus[AudioLoad_GetRealTableIndex(SEQUENCE_TABLE, seqId)] == 1) {
+ if (gAudioContext.seqLoadStatus[AudioLoad_GetRealTableIndex(SEQUENCE_TABLE, seqId)] == LOAD_STATUS_IN_PROGRESS) {
return NULL;
}
@@ -590,19 +587,19 @@ u32 AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) {
}
u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) {
- void* ret;
+ void* ramAddr;
AudioTable* sampleBankTable;
u32 realTableId = AudioLoad_GetRealTableIndex(SAMPLE_TABLE, sampleBankId);
s8 cachePolicy;
sampleBankTable = AudioLoad_GetLoadTable(SAMPLE_TABLE);
- ret = AudioLoad_SearchCaches(SAMPLE_TABLE, realTableId);
- if (ret != NULL) {
- if (gAudioContext.sampleFontLoadStatus[realTableId] != 1) {
- AudioLoad_SetSampleFontLoadStatus(realTableId, 2);
+ ramAddr = AudioLoad_SearchCaches(SAMPLE_TABLE, realTableId);
+ if (ramAddr != NULL) {
+ if (gAudioContext.sampleFontLoadStatus[realTableId] != LOAD_STATUS_IN_PROGRESS) {
+ AudioLoad_SetSampleFontLoadStatus(realTableId, LOAD_STATUS_COMPLETE);
}
*outMedium = MEDIUM_RAM;
- return ret;
+ return ramAddr;
}
cachePolicy = sampleBankTable->entries[sampleBankId].cachePolicy;
@@ -611,10 +608,10 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad
return sampleBankTable->entries[realTableId].romAddr;
}
- ret = AudioLoad_SyncLoad(SAMPLE_TABLE, sampleBankId, &noLoad);
- if (ret != NULL) {
+ ramAddr = AudioLoad_SyncLoad(SAMPLE_TABLE, sampleBankId, &noLoad);
+ if (ramAddr != NULL) {
*outMedium = MEDIUM_RAM;
- return ret;
+ return ramAddr;
}
*outMedium = sampleBankTable->entries[sampleBankId].medium;
@@ -622,14 +619,14 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad
}
SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
- SoundFontData* ret;
+ SoundFontData* fontData;
s32 sampleBankId1;
s32 sampleBankId2;
s32 didAllocate;
RelocInfo relocInfo;
s32 realFontId = AudioLoad_GetRealTableIndex(FONT_TABLE, fontId);
- if (gAudioContext.fontLoadStatus[realFontId] == 1) {
+ if (gAudioContext.fontLoadStatus[realFontId] == LOAD_STATUS_IN_PROGRESS) {
return NULL;
}
sampleBankId1 = gAudioContext.soundFonts[realFontId].sampleBankId1;
@@ -649,15 +646,15 @@ SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
relocInfo.baseAddr2 = 0;
}
- ret = AudioLoad_SyncLoad(FONT_TABLE, fontId, &didAllocate);
- if (ret == NULL) {
+ fontData = AudioLoad_SyncLoad(FONT_TABLE, fontId, &didAllocate);
+ if (fontData == NULL) {
return NULL;
}
if (didAllocate == true) {
- AudioLoad_RelocateFontAndPreloadSamples(realFontId, ret, &relocInfo, false);
+ AudioLoad_RelocateFontAndPreloadSamples(realFontId, fontData, &relocInfo, false);
}
- return ret;
+ return fontData;
}
void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
@@ -665,17 +662,17 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
AudioTable* table;
s32 pad;
u32 medium;
- s32 status;
+ s32 loadStatus;
u32 romAddr;
s32 cachePolicy;
- void* ret;
+ void* ramAddr;
u32 realId;
realId = AudioLoad_GetRealTableIndex(tableType, id);
- ret = AudioLoad_SearchCaches(tableType, realId);
- if (ret != NULL) {
+ ramAddr = AudioLoad_SearchCaches(tableType, realId);
+ if (ramAddr != NULL) {
*didAllocate = false;
- status = 2;
+ loadStatus = LOAD_STATUS_COMPLETE;
} else {
table = AudioLoad_GetLoadTable(tableType);
size = table->entries[realId].size;
@@ -685,57 +682,63 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
romAddr = table->entries[realId].romAddr;
switch (cachePolicy) {
case 0:
- ret = AudioHeap_AllocPermanent(tableType, realId, size);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocPermanent(tableType, realId, size);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
+
case 1:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
+
case 2:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
+
case 3:
case 4:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
}
*didAllocate = true;
if (medium == MEDIUM_UNK) {
- AudioLoad_SyncDmaUnkMedium(romAddr, ret, size, (s16)table->unkMediumParam);
+ AudioLoad_SyncDmaUnkMedium(romAddr, ramAddr, size, (s16)table->unkMediumParam);
} else {
- AudioLoad_SyncDma(romAddr, ret, size, medium);
+ AudioLoad_SyncDma(romAddr, ramAddr, size, medium);
}
- status = cachePolicy == 0 ? 5 : 2;
+ loadStatus = (cachePolicy == 0) ? LOAD_STATUS_PERMANENTLY_LOADED : LOAD_STATUS_COMPLETE;
}
switch (tableType) {
case SEQUENCE_TABLE:
- AudioLoad_SetSeqLoadStatus(realId, status);
+ AudioLoad_SetSeqLoadStatus(realId, loadStatus);
break;
+
case FONT_TABLE:
- AudioLoad_SetFontLoadStatus(realId, status);
+ AudioLoad_SetFontLoadStatus(realId, loadStatus);
break;
+
case SAMPLE_TABLE:
- AudioLoad_SetSampleFontLoadStatusAndApplyCaches(realId, status);
+ AudioLoad_SetSampleFontLoadStatusAndApplyCaches(realId, loadStatus);
break;
+
default:
break;
}
- return ret;
+ return ramAddr;
}
u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
@@ -749,39 +752,42 @@ u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
}
void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
- void* ret;
+ void* ramAddr;
- ret = AudioHeap_SearchPermanentCache(tableType, id);
- if (ret != NULL) {
- return ret;
+ ramAddr = AudioHeap_SearchPermanentCache(tableType, id);
+ if (ramAddr != NULL) {
+ return ramAddr;
}
- ret = AudioHeap_SearchCaches(tableType, CACHE_EITHER, id);
- if (ret != NULL) {
- return ret;
+ ramAddr = AudioHeap_SearchCaches(tableType, CACHE_EITHER, id);
+ if (ramAddr != NULL) {
+ return ramAddr;
}
return NULL;
}
AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
- AudioTable* ret;
+ AudioTable* table;
switch (tableType) {
case SEQUENCE_TABLE:
- ret = gAudioContext.sequenceTable;
+ table = gAudioContext.sequenceTable;
break;
+
case FONT_TABLE:
- ret = gAudioContext.soundFontTable;
+ table = gAudioContext.soundFontTable;
break;
+
default:
- ret = NULL;
+ table = NULL;
break;
+
case SAMPLE_TABLE:
- ret = gAudioContext.sampleBankTable;
+ table = gAudioContext.sampleBankTable;
break;
}
- return ret;
+ return table;
}
void AudioLoad_RelocateFont(s32 fontId, SoundFontData* mem, RelocInfo* relocInfo) {
@@ -851,7 +857,7 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* mem, RelocInfo* relocInfo
reloc = inst->envelope;
inst->envelope = BASE_OFFSET(reloc);
- inst->loaded = 1;
+ inst->loaded = true;
}
}
}
@@ -863,26 +869,26 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* mem, RelocInfo* relocInfo
gAudioContext.soundFonts[fontId].instruments = (Instrument**)(ptrs + 2);
}
-void AudioLoad_SyncDma(u32 devAddr, u8* addr, u32 size, s32 medium) {
+void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
OSMesgQueue* msgQueue = &gAudioContext.syncDmaQueue;
OSIoMesg* ioMesg = &gAudioContext.syncDmaIoMesg;
size = ALIGN16(size);
- Audio_InvalDCache(addr, size);
+ Audio_InvalDCache(ramAddr, size);
while (true) {
if (size < 0x400) {
break;
}
- AudioLoad_Dma(ioMesg, OS_MESG_PRI_HIGH, OS_READ, devAddr, addr, 0x400, msgQueue, medium, "FastCopy");
+ AudioLoad_Dma(ioMesg, OS_MESG_PRI_HIGH, OS_READ, devAddr, ramAddr, 0x400, msgQueue, medium, "FastCopy");
osRecvMesg(msgQueue, NULL, OS_MESG_BLOCK);
size -= 0x400;
devAddr += 0x400;
- addr += 0x400;
+ ramAddr += 0x400;
}
if (size != 0) {
- AudioLoad_Dma(ioMesg, OS_MESG_PRI_HIGH, OS_READ, devAddr, addr, size, msgQueue, medium, "FastCopy");
+ AudioLoad_Dma(ioMesg, OS_MESG_PRI_HIGH, OS_READ, devAddr, ramAddr, size, msgQueue, medium, "FastCopy");
osRecvMesg(msgQueue, NULL, OS_MESG_BLOCK);
}
}
@@ -894,7 +900,7 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void
OSMesgQueue* reqQueue, s32 medium, const char* dmaFuncType) {
OSPiHandle* handle;
- if (gAudioContext.resetTimer > 0x10) {
+ if (gAudioContext.resetTimer > 16) {
return -1;
}
@@ -902,11 +908,13 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void
case MEDIUM_CART:
handle = gAudioContext.cartHandle;
break;
+
case MEDIUM_DISK_DRIVE:
// driveHandle is uninitialized and corresponds to stubbed-out disk drive support.
// SM64 Shindou called osDriveRomInit here.
handle = gAudioContext.driveHandle;
break;
+
default:
return 0;
}
@@ -936,100 +944,108 @@ void AudioLoad_SyncLoadSimple(u32 tableType, u32 fontId) {
void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
u32 size;
- AudioTable* sp50;
- void* ret;
+ AudioTable* table;
+ void* ramAddr;
s32 medium;
s8 cachePolicy;
u32 devAddr;
- s32 status;
- u32 temp_v0;
- u32 realId;
+ s32 loadStatus;
+ s32 pad;
+ u32 realId = AudioLoad_GetRealTableIndex(tableType, id);
- realId = AudioLoad_GetRealTableIndex(tableType, id);
switch (tableType) {
case SEQUENCE_TABLE:
- if (gAudioContext.seqLoadStatus[realId] == 1) {
+ if (gAudioContext.seqLoadStatus[realId] == LOAD_STATUS_IN_PROGRESS) {
return NULL;
}
break;
+
case FONT_TABLE:
- if (gAudioContext.fontLoadStatus[realId] == 1) {
+ if (gAudioContext.fontLoadStatus[realId] == LOAD_STATUS_IN_PROGRESS) {
return NULL;
}
break;
+
case SAMPLE_TABLE:
- if (gAudioContext.sampleFontLoadStatus[realId] == 1) {
+ if (gAudioContext.sampleFontLoadStatus[realId] == LOAD_STATUS_IN_PROGRESS) {
return NULL;
}
break;
}
- ret = AudioLoad_SearchCaches(tableType, realId);
- if (ret != NULL) {
- status = 2;
- osSendMesg(retQueue, (OSMesg)MK_ASYNC_MSG(retData, 0, 0, 0), OS_MESG_NOBLOCK);
+ ramAddr = AudioLoad_SearchCaches(tableType, realId);
+ if (ramAddr != NULL) {
+ loadStatus = LOAD_STATUS_COMPLETE;
+ osSendMesg(retQueue, (OSMesg)MK_ASYNC_MSG(retData, 0, 0, LOAD_STATUS_NOT_LOADED), OS_MESG_NOBLOCK);
} else {
- sp50 = AudioLoad_GetLoadTable(tableType);
- size = sp50->entries[realId].size;
+ table = AudioLoad_GetLoadTable(tableType);
+ size = table->entries[realId].size;
size = ALIGN16(size);
- medium = sp50->entries[id].medium;
- cachePolicy = sp50->entries[id].cachePolicy;
- devAddr = sp50->entries[realId].romAddr;
- status = 2;
+ medium = table->entries[id].medium;
+ cachePolicy = table->entries[id].cachePolicy;
+ devAddr = table->entries[realId].romAddr;
+ loadStatus = LOAD_STATUS_COMPLETE;
+
switch (cachePolicy) {
case 0:
- ret = AudioHeap_AllocPermanent(tableType, realId, size);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocPermanent(tableType, realId, size);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
- status = 5;
+ loadStatus = LOAD_STATUS_PERMANENTLY_LOADED;
break;
+
case 1:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_PERSISTENT, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
+
case 2:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_TEMPORARY, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
+
case 3:
case 4:
- ret = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, realId);
- if (ret == NULL) {
- return ret;
+ ramAddr = AudioHeap_AllocCached(tableType, size, CACHE_EITHER, realId);
+ if (ramAddr == NULL) {
+ return ramAddr;
}
break;
}
if (medium == MEDIUM_UNK) {
- AudioLoad_StartAsyncLoadUnkMedium((s16)sp50->unkMediumParam, devAddr, ret, size, medium, nChunks, retQueue,
- MK_ASYNC_MSG(retData, tableType, id, status));
+ AudioLoad_StartAsyncLoadUnkMedium((s16)table->unkMediumParam, devAddr, ramAddr, size, medium, nChunks,
+ retQueue, MK_ASYNC_MSG(retData, tableType, id, loadStatus));
} else {
- AudioLoad_StartAsyncLoad(devAddr, ret, size, medium, nChunks, retQueue,
- MK_ASYNC_MSG(retData, tableType, realId, status));
+ AudioLoad_StartAsyncLoad(devAddr, ramAddr, size, medium, nChunks, retQueue,
+ MK_ASYNC_MSG(retData, tableType, realId, loadStatus));
}
- status = 1;
+ loadStatus = LOAD_STATUS_IN_PROGRESS;
}
switch (tableType) {
case SEQUENCE_TABLE:
- AudioLoad_SetSeqLoadStatus(realId, status);
+ AudioLoad_SetSeqLoadStatus(realId, loadStatus);
break;
+
case FONT_TABLE:
- AudioLoad_SetFontLoadStatus(realId, status);
+ AudioLoad_SetFontLoadStatus(realId, loadStatus);
break;
+
case SAMPLE_TABLE:
- AudioLoad_SetSampleFontLoadStatusAndApplyCaches(realId, status);
+ AudioLoad_SetSampleFontLoadStatusAndApplyCaches(realId, loadStatus);
break;
+
default:
break;
}
- return ret;
+ return ramAddr;
}
void AudioLoad_ProcessLoads(s32 resetStatus) {
@@ -1058,22 +1074,20 @@ void AudioLoad_InitSoundFontMeta(s32 fontId) {
}
void AudioLoad_Init(void* heap, u32 heapSize) {
- char pad[0x48];
+ s32 pad[18];
s32 numFonts;
- void* temp_v0_3;
+ void* ramAddr;
s32 i;
- u64* heapP;
- u8* ctxP;
- s16* u2974p;
D_801755D0 = NULL;
gAudioContext.resetTimer = 0;
{
s32 i;
- u8* ctxP = (u8*)&gAudioContext;
+ u8* audioContextPtr = (u8*)&gAudioContext;
+
for (i = sizeof(gAudioContext); i >= 0; i--) {
- *ctxP++ = 0;
+ *audioContextPtr++ = 0;
}
}
@@ -1082,14 +1096,17 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
gAudioContext.unk_2960 = 20.03042f;
gAudioContext.refreshRate = 50;
break;
+
case OS_TV_MPAL:
gAudioContext.unk_2960 = 16.546f;
gAudioContext.refreshRate = 60;
break;
+
case OS_TV_NTSC:
default:
gAudioContext.unk_2960 = 16.713f;
gAudioContext.refreshRate = 60;
+ break;
}
Audio_InitMesgQueues();
@@ -1099,10 +1116,10 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
}
gAudioContext.totalTaskCount = 0;
- gAudioContext.rspTaskIdx = 0;
- gAudioContext.curAIBufIdx = 0;
+ gAudioContext.rspTaskIndex = 0;
+ gAudioContext.curAiBufIndex = 0;
gAudioContext.soundMode = 0;
- gAudioContext.currTask = NULL;
+ gAudioContext.curTask = NULL;
gAudioContext.rspTask[0].task.t.data_size = 0;
gAudioContext.rspTask[1].task.t.data_size = 0;
osCreateMesgQueue(&gAudioContext.syncDmaQueue, &gAudioContext.syncDmaMesg, 1);
@@ -1111,7 +1128,7 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
osCreateMesgQueue(&gAudioContext.externalLoadQueue, gAudioContext.externalLoadMsgBuf,
ARRAY_COUNT(gAudioContext.externalLoadMsgBuf));
osCreateMesgQueue(&gAudioContext.preloadSampleQueue, gAudioContext.preloadSampleMsgBuf,
- ARRAY_COUNT(gAudioContext.externalLoadMsgBuf));
+ ARRAY_COUNT(gAudioContext.preloadSampleMsgBuf));
gAudioContext.curAudioFrameDmaCount = 0;
gAudioContext.sampleDmaCount = 0;
gAudioContext.cartHandle = osCartRomInit();
@@ -1129,22 +1146,28 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
((u64*)gAudioContext.audioHeap)[i] = 0;
}
+ // Main Pool Split (split entirety of audio heap into initPool and sessionPool)
AudioHeap_InitMainPools(D_8014A6C4.initPoolSize);
+ // Initialize the audio interface buffers
for (i = 0; i < 3; i++) {
gAudioContext.aiBuffers[i] = AudioHeap_AllocZeroed(&gAudioContext.audioInitPool, AIBUF_LEN * sizeof(s16));
}
+ // Set audio tables pointers
gAudioContext.sequenceTable = (AudioTable*)gSequenceTable;
gAudioContext.soundFontTable = (AudioTable*)gSoundFontTable;
gAudioContext.sampleBankTable = (AudioTable*)gSampleBankTable;
gAudioContext.sequenceFontTable = gSequenceFontTable;
+
gAudioContext.numSequences = gAudioContext.sequenceTable->numEntries;
gAudioContext.audioResetSpecIdToLoad = 0;
- gAudioContext.resetStatus = 1;
+ gAudioContext.resetStatus = 1; // Set reset to immediately initialize the audio heap
AudioHeap_ResetStep();
+
+ // Initialize audio tables
AudioLoad_InitTable(gAudioContext.sequenceTable, _AudioseqSegmentRomStart, 0);
AudioLoad_InitTable(gAudioContext.soundFontTable, _AudiobankSegmentRomStart, 0);
AudioLoad_InitTable(gAudioContext.sampleBankTable, _AudiotableSegmentRomStart, 0);
@@ -1155,57 +1178,58 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
AudioLoad_InitSoundFontMeta(i);
}
- if (temp_v0_3 = AudioHeap_Alloc(&gAudioContext.audioInitPool, D_8014A6C4.permanentPoolSize), temp_v0_3 == NULL) {
+ ramAddr = AudioHeap_Alloc(&gAudioContext.audioInitPool, D_8014A6C4.permanentPoolSize);
+ if (ramAddr == NULL) {
// cast away const from D_8014A6C4
*((u32*)&D_8014A6C4.permanentPoolSize) = 0;
}
- AudioHeap_AllocPoolInit(&gAudioContext.permanentPool, temp_v0_3, D_8014A6C4.permanentPoolSize);
+ AudioHeap_AllocPoolInit(&gAudioContext.permanentPool, ramAddr, D_8014A6C4.permanentPoolSize);
gAudioContextInitalized = true;
osSendMesg(gAudioContext.taskStartQueueP, (OSMesg)gAudioContext.totalTaskCount, OS_MESG_NOBLOCK);
}
void AudioLoad_InitSlowLoads(void) {
- gAudioContext.slowLoads[0].status = 0;
- gAudioContext.slowLoads[1].status = 0;
+ gAudioContext.slowLoads[0].state = SLOW_LOAD_STATE_WAITING;
+ gAudioContext.slowLoads[1].state = SLOW_LOAD_STATE_WAITING;
}
-s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* isDone) {
+s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) {
SoundFontSample* sample;
AudioSlowLoad* slowLoad;
sample = AudioLoad_GetFontSample(fontId, instId);
if (sample == NULL) {
- *isDone = 0;
+ *status = 0;
return -1;
}
if (sample->medium == MEDIUM_RAM) {
- *isDone = 2;
+ *status = 2;
return 0;
}
slowLoad = &gAudioContext.slowLoads[gAudioContext.slowLoadPos];
- if (slowLoad->status == LOAD_STATUS_DONE) {
- slowLoad->status = LOAD_STATUS_WAITING;
+ if (slowLoad->state == SLOW_LOAD_STATE_DONE) {
+ slowLoad->state = SLOW_LOAD_STATE_WAITING;
}
slowLoad->sample = *sample;
- slowLoad->isDone = isDone;
+ slowLoad->status = status;
slowLoad->curRamAddr =
AudioHeap_AllocSampleCache(sample->size, fontId, sample->sampleAddr, sample->medium, CACHE_TEMPORARY);
if (slowLoad->curRamAddr == NULL) {
if (sample->medium == MEDIUM_UNK || sample->codec == CODEC_S16_INMEMORY) {
- *isDone = 0;
+ *status = 0;
return -1;
} else {
- *isDone = 3;
+ *status = 3;
return -1;
}
}
- slowLoad->status = LOAD_STATUS_START;
+ slowLoad->state = SLOW_LOAD_STATE_START;
slowLoad->bytesRemaining = ALIGN16(sample->size);
slowLoad->ramAddr = slowLoad->curRamAddr;
slowLoad->curDevAddr = sample->sampleAddr;
@@ -1221,28 +1245,31 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* isDone) {
}
SoundFontSample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
- SoundFontSample* ret;
+ SoundFontSample* sample;
if (instId < 0x80) {
Instrument* instrument = Audio_GetInstrumentInner(fontId, instId);
+
if (instrument == NULL) {
return NULL;
}
- ret = instrument->normalNotesSound.sample;
+ sample = instrument->normalNotesSound.sample;
} else if (instId < 0x100) {
Drum* drum = Audio_GetDrum(fontId, instId - 0x80);
+
if (drum == NULL) {
return NULL;
}
- ret = drum->sound.sample;
+ sample = drum->sound.sample;
} else {
SoundFontSound* sound = Audio_GetSfx(fontId, instId - 0x100);
+
if (sound == NULL) {
return NULL;
}
- ret = sound->sample;
+ sample = sound->sample;
}
- return ret;
+ return sample;
}
void AudioLoad_Unused2(void) {
@@ -1271,26 +1298,27 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
for (i = 0; i < ARRAY_COUNT(gAudioContext.slowLoads); i++) {
slowLoad = &gAudioContext.slowLoads[i];
- switch (gAudioContext.slowLoads[i].status) {
- case LOAD_STATUS_LOADING:
+ switch (gAudioContext.slowLoads[i].state) {
+ case SLOW_LOAD_STATE_LOADING:
if (slowLoad->medium != MEDIUM_UNK) {
osRecvMesg(&slowLoad->msgQueue, NULL, OS_MESG_BLOCK);
}
if (resetStatus != 0) {
- slowLoad->status = LOAD_STATUS_DONE;
+ slowLoad->state = SLOW_LOAD_STATE_DONE;
continue;
}
FALLTHROUGH;
- case LOAD_STATUS_START:
- slowLoad->status = LOAD_STATUS_LOADING;
+ case SLOW_LOAD_STATE_START:
+ slowLoad->state = SLOW_LOAD_STATE_LOADING;
if (slowLoad->bytesRemaining == 0) {
AudioLoad_FinishSlowLoad(slowLoad);
- slowLoad->status = LOAD_STATUS_DONE;
- *slowLoad->isDone = 1;
+ slowLoad->state = SLOW_LOAD_STATE_DONE;
+ *slowLoad->status = 1;
} else if (slowLoad->bytesRemaining < 0x400) {
if (slowLoad->medium == MEDIUM_UNK) {
u32 size = slowLoad->bytesRemaining;
+
AudioLoad_DmaSlowCopyUnkMedium(slowLoad->curDevAddr, slowLoad->curRamAddr, size,
slowLoad->unkMediumParam);
} else {
@@ -1316,36 +1344,36 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
Audio_InvalDCache(slowLoad->curRamAddr, size);
osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1);
- AudioLoad_Dma(&slowLoad->ioMesg, OS_MESG_PRI_NORMAL, 0, slowLoad->curDevAddr, slowLoad->curRamAddr, size,
+ AudioLoad_Dma(&slowLoad->ioMesg, OS_MESG_PRI_NORMAL, OS_READ, slowLoad->curDevAddr, slowLoad->curRamAddr, size,
&slowLoad->msgQueue, slowLoad->medium, "SLOWCOPY");
}
void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3) {
}
-s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* isDone) {
+s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) {
AudioSlowLoad* slowLoad;
AudioTable* seqTable;
u32 size;
if (seqId >= gAudioContext.numSequences) {
- *isDone = 0;
+ *status = 0;
return -1;
}
seqId = AudioLoad_GetRealTableIndex(SEQUENCE_TABLE, seqId);
seqTable = AudioLoad_GetLoadTable(SEQUENCE_TABLE);
slowLoad = &gAudioContext.slowLoads[gAudioContext.slowLoadPos];
- if (slowLoad->status == LOAD_STATUS_DONE) {
- slowLoad->status = LOAD_STATUS_WAITING;
+ if (slowLoad->state == SLOW_LOAD_STATE_DONE) {
+ slowLoad->state = SLOW_LOAD_STATE_WAITING;
}
slowLoad->sample.sampleAddr = NULL;
- slowLoad->isDone = isDone;
+ slowLoad->status = status;
size = seqTable->entries[seqId].size;
size = ALIGN16(size);
slowLoad->curRamAddr = ramAddr;
- slowLoad->status = LOAD_STATUS_START;
+ slowLoad->state = SLOW_LOAD_STATE_START;
slowLoad->bytesRemaining = size;
slowLoad->ramAddr = ramAddr;
slowLoad->curDevAddr = seqTable->entries[seqId].romAddr;
@@ -1400,7 +1428,7 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s
return NULL;
}
- asyncLoad->status = LOAD_STATUS_START;
+ asyncLoad->status = 1;
asyncLoad->curDevAddr = devAddr;
asyncLoad->ramAddr = ramAddr;
asyncLoad->curRamAddr = ramAddr;
@@ -1474,11 +1502,13 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
if (1) {}
switch (ASYNC_TBLTYPE(retMsg)) {
case SEQUENCE_TABLE:
- AudioLoad_SetSeqLoadStatus(ASYNC_ID(retMsg), ASYNC_STATUS(retMsg));
+ AudioLoad_SetSeqLoadStatus(ASYNC_ID(retMsg), ASYNC_LOAD_STATUS(retMsg));
break;
+
case SAMPLE_TABLE:
- AudioLoad_SetSampleFontLoadStatusAndApplyCaches(ASYNC_ID(retMsg), ASYNC_STATUS(retMsg));
+ AudioLoad_SetSampleFontLoadStatusAndApplyCaches(ASYNC_ID(retMsg), ASYNC_LOAD_STATUS(retMsg));
break;
+
case FONT_TABLE:
fontId = ASYNC_ID(retMsg);
sampleBankId1 = gAudioContext.soundFonts[fontId].sampleBankId1;
@@ -1489,14 +1519,14 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
sampleBankId1 != 0xFF ? AudioLoad_GetSampleBank(sampleBankId1, &relocInfo.medium1) : 0;
relocInfo.baseAddr2 =
sampleBankId2 != 0xFF ? AudioLoad_GetSampleBank(sampleBankId2, &relocInfo.medium2) : 0;
- AudioLoad_SetFontLoadStatus(fontId, ASYNC_STATUS(retMsg));
+ AudioLoad_SetFontLoadStatus(fontId, ASYNC_LOAD_STATUS(retMsg));
AudioLoad_RelocateFontAndPreloadSamples(fontId, asyncLoad->ramAddr, &relocInfo, true);
break;
}
doneMsg = asyncLoad->retMsg;
if (1) {}
- asyncLoad->status = LOAD_STATUS_WAITING;
+ asyncLoad->status = 0;
osSendMesg(asyncLoad->retQueue, doneMsg, OS_MESG_NOBLOCK);
}
@@ -1513,7 +1543,7 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
} else if (resetStatus != 0) {
// Await the previous DMA response synchronously, then return.
osRecvMesg(&asyncLoad->msgQueue, NULL, OS_MESG_BLOCK);
- asyncLoad->status = LOAD_STATUS_WAITING;
+ asyncLoad->status = 0;
return;
} else if (osRecvMesg(&asyncLoad->msgQueue, NULL, OS_MESG_NOBLOCK) == -1) {
// If the previous DMA step isn't done, return.
@@ -1552,8 +1582,8 @@ void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
size = ALIGN16(size);
Audio_InvalDCache(asyncLoad->curRamAddr, size);
osCreateMesgQueue(&asyncLoad->msgQueue, &asyncLoad->msg, 1);
- AudioLoad_Dma(&asyncLoad->ioMesg, 0, 0, asyncLoad->curDevAddr, asyncLoad->curRamAddr, size, &asyncLoad->msgQueue,
- asyncLoad->medium, "BGCOPY");
+ AudioLoad_Dma(&asyncLoad->ioMesg, OS_MESG_PRI_NORMAL, OS_READ, asyncLoad->curDevAddr, asyncLoad->curRamAddr, size,
+ &asyncLoad->msgQueue, asyncLoad->medium, "BGCOPY");
}
void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3) {
@@ -1604,7 +1634,7 @@ void AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, SoundFontData* mem, Rel
SoundFontSample* sample;
s32 size;
s32 nChunks;
- u8* addr;
+ u8* sampleRamAddr;
s32 preloadInProgress;
s32 i;
@@ -1630,48 +1660,48 @@ void AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, SoundFontData* mem, Rel
}
sample = gAudioContext.usedSamples[i];
- addr = NULL;
+ sampleRamAddr = NULL;
switch (async) {
case false:
if (sample->medium == relocInfo->medium1) {
- addr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId1, sample->sampleAddr,
- sample->medium, CACHE_PERSISTENT);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId1,
+ sample->sampleAddr, sample->medium, CACHE_PERSISTENT);
} else if (sample->medium == relocInfo->medium2) {
- addr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId2, sample->sampleAddr,
- sample->medium, CACHE_PERSISTENT);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId2,
+ sample->sampleAddr, sample->medium, CACHE_PERSISTENT);
} else if (sample->medium == MEDIUM_DISK_DRIVE) {
- addr = AudioHeap_AllocSampleCache(sample->size, 0xFE, sample->sampleAddr, sample->medium,
- CACHE_PERSISTENT);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, 0xFE, sample->sampleAddr, sample->medium,
+ CACHE_PERSISTENT);
}
break;
case true:
if (sample->medium == relocInfo->medium1) {
- addr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId1, sample->sampleAddr,
- sample->medium, CACHE_TEMPORARY);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId1,
+ sample->sampleAddr, sample->medium, CACHE_TEMPORARY);
} else if (sample->medium == relocInfo->medium2) {
- addr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId2, sample->sampleAddr,
- sample->medium, CACHE_TEMPORARY);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, relocInfo->sampleBankId2,
+ sample->sampleAddr, sample->medium, CACHE_TEMPORARY);
} else if (sample->medium == MEDIUM_DISK_DRIVE) {
- addr = AudioHeap_AllocSampleCache(sample->size, 0xFE, sample->sampleAddr, sample->medium,
- CACHE_TEMPORARY);
+ sampleRamAddr = AudioHeap_AllocSampleCache(sample->size, 0xFE, sample->sampleAddr, sample->medium,
+ CACHE_TEMPORARY);
}
break;
}
- if (addr == NULL) {
+ if (sampleRamAddr == NULL) {
continue;
}
switch (async) {
case false:
if (sample->medium == MEDIUM_UNK) {
- AudioLoad_SyncDmaUnkMedium((u32)sample->sampleAddr, addr, sample->size,
+ AudioLoad_SyncDmaUnkMedium((u32)sample->sampleAddr, sampleRamAddr, sample->size,
gAudioContext.sampleBankTable->unkMediumParam);
- sample->sampleAddr = addr;
+ sample->sampleAddr = sampleRamAddr;
sample->medium = MEDIUM_RAM;
} else {
- AudioLoad_SyncDma((u32)sample->sampleAddr, addr, sample->size, sample->medium);
- sample->sampleAddr = addr;
+ AudioLoad_SyncDma((u32)sample->sampleAddr, sampleRamAddr, sample->size, sample->medium);
+ sample->sampleAddr = sampleRamAddr;
sample->medium = MEDIUM_RAM;
}
if (sample->medium == MEDIUM_DISK_DRIVE) {}
@@ -1680,7 +1710,7 @@ void AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, SoundFontData* mem, Rel
case true:
preload = &gAudioContext.preloadSampleStack[gAudioContext.preloadSampleStackTop];
preload->sample = sample;
- preload->ramAddr = addr;
+ preload->ramAddr = sampleRamAddr;
preload->encodedInfo = (gAudioContext.preloadSampleStackTop << 24) | 0xFFFFFF;
preload->isFree = false;
preload->endAndMediumKey = (u32)sample->sampleAddr + sample->size + sample->medium;
@@ -1712,11 +1742,11 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
// Clear result queue and preload stack and return.
osRecvMesg(&gAudioContext.preloadSampleQueue, (OSMesg*)&preloadIndex, OS_MESG_NOBLOCK);
gAudioContext.preloadSampleStackTop = 0;
- return 0;
+ return false;
}
if (osRecvMesg(&gAudioContext.preloadSampleQueue, (OSMesg*)&preloadIndex, OS_MESG_NOBLOCK) == -1) {
// Previous preload is not done yet.
- return 0;
+ return false;
}
preloadIndex >>= 24;
@@ -1758,7 +1788,7 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
}
}
}
- return 1;
+ return true;
}
s32 AudioLoad_AddToSampleSet(SoundFontSample* sample, s32 numSamples, SoundFontSample** sampleSet) {
@@ -1780,15 +1810,13 @@ s32 AudioLoad_AddToSampleSet(SoundFontSample* sample, s32 numSamples, SoundFontS
s32 AudioLoad_GetSamplesForFont(s32 fontId, SoundFontSample** sampleSet) {
s32 i;
- s32 numDrums;
- s32 numInstruments;
s32 numSamples = 0;
-
- numDrums = gAudioContext.soundFonts[fontId].numDrums;
- numInstruments = gAudioContext.soundFonts[fontId].numInstruments;
+ s32 numDrums = gAudioContext.soundFonts[fontId].numDrums;
+ s32 numInstruments = gAudioContext.soundFonts[fontId].numInstruments;
for (i = 0; i < numDrums; i++) {
Drum* drum = Audio_GetDrum(fontId, i);
+
if (1) {}
if (drum != NULL) {
numSamples = AudioLoad_AddToSampleSet(drum->sound.sample, numSamples, sampleSet);
@@ -1797,6 +1825,7 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, SoundFontSample** sampleSet) {
for (i = 0; i < numInstruments; i++) {
Instrument* instrument = Audio_GetInstrumentInner(fontId, i);
+
if (instrument != NULL) {
if (instrument->normalRangeLo != 0) {
numSamples = AudioLoad_AddToSampleSet(instrument->lowNotesSound.sample, numSamples, sampleSet);
@@ -1808,7 +1837,7 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, SoundFontSample** sampleSet) {
}
}
- // Should really also process sfx, but this method is never called, so whatever.
+ // Should really also process sfx, but this method is never called.
return numSamples;
}
@@ -1963,7 +1992,7 @@ void AudioLoad_LoadPermanentSamples(void) {
s32 i;
sampleBankTable = AudioLoad_GetLoadTable(SAMPLE_TABLE);
- for (i = 0; i < gAudioContext.permanentPool.count; i++) {
+ for (i = 0; i < gAudioContext.permanentPool.numEntries; i++) {
RelocInfo relocInfo;
if (gAudioContext.permanentCache[i].tableType == FONT_TABLE) {
@@ -1994,9 +2023,10 @@ void AudioLoad_Unused4(void) {
void AudioLoad_Unused5(void) {
}
-void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* isDone) {
+void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) {
static u32 sLoadIndex = 0;
- sScriptLoadDonePointers[sLoadIndex] = isDone;
+
+ sScriptLoadDonePointers[sLoadIndex] = status;
AudioLoad_AsyncLoad(tableType, id, 0, sLoadIndex, &sScriptLoadQueue);
sLoadIndex++;
if (sLoadIndex == 0x10) {
@@ -2007,13 +2037,13 @@ void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* isDone) {
void AudioLoad_ProcessScriptLoads(void) {
u32 temp;
u32 sp20;
- s8* isDone;
+ s8* status;
if (osRecvMesg(&sScriptLoadQueue, (OSMesg*)&sp20, OS_MESG_NOBLOCK) != -1) {
temp = sp20 >> 24;
- isDone = sScriptLoadDonePointers[temp];
- if (isDone != NULL) {
- *isDone = 0;
+ status = sScriptLoadDonePointers[temp];
+ if (status != NULL) {
+ *status = 0;
}
}
}