diff --git a/src/audio/data.h b/src/audio/data.h index 8a38590b..03d720b5 100644 --- a/src/audio/data.h +++ b/src/audio/data.h @@ -26,14 +26,14 @@ #define PERSISTENT_BANK_MEM 0xDC00 #define TEMPORARY_SEQ_MEM 0xE800 #define TEMPORARY_BANK_MEM 0x5500 -#define BANK_SETS_ALLOC 0x400 +#define MAX_NUM_SOUNDBANKS 0x100 #define EXT_AUDIO_INIT_POOL_SIZE 0x2000 #else #define PERSISTENT_SEQ_MEM 0x4100 #define PERSISTENT_BANK_MEM 0x6E00 #define TEMPORARY_SEQ_MEM 0x7400 #define TEMPORARY_BANK_MEM 0x2A80 -#define BANK_SETS_ALLOC 0x100 +#define MAX_NUM_SOUNDBANKS 0x40 #define EXT_AUDIO_INIT_POOL_SIZE 0x0 #endif @@ -185,9 +185,9 @@ extern OSMesgQueue *D_SH_80350FA8; #endif #if defined(VERSION_EU) || defined(VERSION_SH) -#define AUDIO_INIT_POOL_SIZE (0x2B00 + BANK_SETS_ALLOC + EXT_AUDIO_INIT_POOL_SIZE) +#define AUDIO_INIT_POOL_SIZE (0x2B00 + (MAX_NUM_SOUNDBANKS * sizeof(s32)) + EXT_AUDIO_INIT_POOL_SIZE) #else -#define AUDIO_INIT_POOL_SIZE (0x2400 + BANK_SETS_ALLOC + EXT_AUDIO_INIT_POOL_SIZE) +#define AUDIO_INIT_POOL_SIZE (0x2400 + (MAX_NUM_SOUNDBANKS * sizeof(s32)) + EXT_AUDIO_INIT_POOL_SIZE) #endif // TODO: needs validation once EU can compile. EU is very likely incorrect! diff --git a/src/audio/heap.c b/src/audio/heap.c index 141a583b..0270021d 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -56,9 +56,9 @@ struct PoolSplit sPersistentCommonPoolSplit; struct PoolSplit sTemporaryCommonPoolSplit; #ifdef VERSION_SH -u8 gUnkLoadStatus[0x40]; +u8 gUnkLoadStatus[MAX_NUM_SOUNDBANKS]; #endif -u8 gBankLoadStatus[0x40]; +u8 gBankLoadStatus[MAX_NUM_SOUNDBANKS]; u8 gSeqLoadStatus[0x100]; #if defined(VERSION_EU) || defined(VERSION_SH) diff --git a/src/audio/heap.h b/src/audio/heap.h index 748e4471..c7b1494e 100644 --- a/src/audio/heap.h +++ b/src/audio/heap.h @@ -4,6 +4,7 @@ #include #include "internal.h" +#include "data.h" enum SoundLoadStatus { SOUND_LOAD_STATUS_NOT_LOADED, @@ -115,8 +116,8 @@ extern struct Unk1Pool gUnkPool1; extern struct UnkPool gUnkPool2; extern struct UnkPool gUnkPool3; #endif -extern u8 gBankLoadStatus[64]; -extern u8 gSeqLoadStatus[256]; +extern u8 gBankLoadStatus[MAX_NUM_SOUNDBANKS]; +extern u8 gSeqLoadStatus[0x100]; extern volatile u8 gAudioResetStatus; extern u8 gAudioResetPresetIdToLoad; diff --git a/src/audio/load.c b/src/audio/load.c index deeaf33d..73fe923c 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -919,8 +919,8 @@ void audio_init() { alSeqFileNew(gAlTbl, gSoundDataRaw); // Load bank sets for each sequence - gAlBankSets = soundAlloc(&gAudioInitPool, BANK_SETS_ALLOC); - audio_dma_copy_immediate((uintptr_t) gBankSetsData, gAlBankSets, BANK_SETS_ALLOC); + gAlBankSets = soundAlloc(&gAudioInitPool, MAX_NUM_SOUNDBANKS * sizeof(s32)); + audio_dma_copy_immediate((uintptr_t) gBankSetsData, gAlBankSets, MAX_NUM_SOUNDBANKS * sizeof(s32)); init_sequence_players(); gAudioLoadLock = AUDIO_LOCK_NOT_LOADING; diff --git a/src/audio/load_sh.c b/src/audio/load_sh.c index d1233dce..199af7bd 100644 --- a/src/audio/load_sh.c +++ b/src/audio/load_sh.c @@ -505,7 +505,7 @@ void *func_sh_802f3564(s32 seqId) { return func_sh_802f3764(0, seqId2, &temp); } -extern u8 gUnkLoadStatus[0x40]; +extern u8 gUnkLoadStatus[MAX_NUM_SOUNDBANKS]; void *func_sh_802f3598(s32 idx, s32 *medium) { void *ret;