You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Bronke
This commit is contained in:
@@ -56,69 +56,34 @@ struct AudioSessionSettingsEU gAudioSessionPresets[] = {
|
||||
// - memory used for temporary sequences
|
||||
// - memory used for temporary banks
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
struct ReverbSettingsUS gReverbSettings[18] =
|
||||
{
|
||||
{1, 0x0C00, 0x2FFF},
|
||||
{1, 0x0A00, 0x47FF},
|
||||
{1, 0x1000, 0x2FFF},
|
||||
{1, 0x0E00, 0x3FFF},
|
||||
{1, 0x0C00, 0x4FFF},
|
||||
{1, 0x0C00, 0x2FFF},
|
||||
{1, 0x0A00, 0x47FF},
|
||||
{1, 0x0800, 0x37FF},
|
||||
{1, 0x0800, 0x2FFF},
|
||||
{1, 0x0800, 0x3FFF},
|
||||
{1, 0x1000, 0x3FFF},
|
||||
{1, 0x1000, 0x2FFF},
|
||||
{1, 0x0C00, 0x3FFF},
|
||||
{1, 0x0800, 0x4FFF},
|
||||
{1, 0x0800, 0x2FFF},
|
||||
{1, 0x0800, 0x2FFF},
|
||||
{1, 0x0800, 0x2FFF},
|
||||
{1, 0x0800, 0x2FFF},
|
||||
};
|
||||
#ifdef EXPAND_AUDIO_HEAP
|
||||
struct AudioSessionSettings gAudioSessionPresets[18] = {
|
||||
#ifdef VERSION_JP
|
||||
{ 32000, 32, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7200, 0xC000, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0A00, 0x47FF, 0x7FFF, 0x7200, 0xC000, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x1000, 0x2FFF, 0x7FFF, 0x7200, 0xC000, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x7200, 0xC000, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x7200, 0xC000, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0800, 0x2FFF, 0x7FFF, 0x7C00, 0xC400, 0x7E00, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0A00, 0x47FF, 0x7FFF, 0x7E00, 0xC400, 0x8800, 0x5500 },
|
||||
{ 32000, 40, 1, 0x0800, 0x37FF, 0x7FFF, 0x6600, 0xAA00, 0x8000, 0x3600 },
|
||||
#else
|
||||
{ 32000, 32, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x7400, 0xDA00, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0A00, 0x47FF, 0x7FFF, 0x7400, 0xDA00, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x1000, 0x2FFF, 0x7FFF, 0x7400, 0xDA00, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x7400, 0xDA00, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x7400, 0xDA00, 0x8800, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x8000, 0xDC00, 0x7E00, 0x5400 },
|
||||
{ 32000, 32, 1, 0x0A00, 0x47FF, 0x7FFF, 0x8200, 0xDC00, 0x8800, 0x5500 },
|
||||
{ 32000, 40, 1, 0x0800, 0x37FF, 0x7FFF, 0x6980, 0xC500, 0x8000, 0x3600 },
|
||||
#endif
|
||||
{ 27000, 32, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 27000, 32, 1, 0x0800, 0x3FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 27000, 32, 1, 0x1000, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 27000, 32, 1, 0x1000, 0x3FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 27000, 32, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 32000, 28, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 32000, 24, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 32000, 20, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 32000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4A00, 0xAA00, 0xE800, 0x4800 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
struct AudioSessionSettings gAudioSessionPresets[1] = {
|
||||
{ 32000, 40, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x8000, 0xDC00, 0x8800, 0x5400 },
|
||||
};
|
||||
#else
|
||||
struct AudioSessionSettings gAudioSessionPresets[18] = {
|
||||
#ifdef VERSION_JP
|
||||
{ 32000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x3E00, 0x6200, 0x3F00, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3F00, 0x6200, 0x4400, 0x2A80 },
|
||||
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x3300, 0x5500, 0x4000, 0x1B00 },
|
||||
#else
|
||||
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x4000, 0x6E00, 0x3F00, 0x2A00 },
|
||||
{ 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x4100, 0x6E00, 0x4400, 0x2A80 },
|
||||
{ 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x34C0, 0x6280, 0x4000, 0x1B00 },
|
||||
#endif
|
||||
{ 27000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 27000, 16, 1, 0x0800, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 27000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 27000, 16, 1, 0x1000, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 27000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 32000, 14, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 32000, 12, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 32000, 10, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 32000, 8, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
struct AudioSessionSettings gAudioSessionPresets[1] = {
|
||||
{ 32000, 20, 1, 0x0800, 0x2FFF, 0x7FFF, 0x4000, 0x6E00, 0x7400, 0x2A80 },
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
extern struct AudioSessionSettingsEU gAudioSessionPresets[];
|
||||
extern struct ReverbSettingsEU sReverbSettings[8];
|
||||
#else
|
||||
extern struct AudioSessionSettings gAudioSessionPresets[18];
|
||||
extern struct AudioSessionSettings gAudioSessionPresets[1];
|
||||
extern struct ReverbSettingsUS gReverbSettings[18];
|
||||
#endif
|
||||
extern u16 D_80332388[128]; // unused
|
||||
|
||||
|
||||
@@ -2682,7 +2682,7 @@ void sound_reset(u8 presetId) {
|
||||
func_802ad74c(0xF2000000, 0);
|
||||
#endif
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
audio_reset_session(&gAudioSessionPresets[presetId]);
|
||||
audio_reset_session(&gAudioSessionPresets[0], presetId);
|
||||
#else
|
||||
audio_reset_session_eu(presetId);
|
||||
#endif
|
||||
|
||||
215
src/audio/heap.c
215
src/audio/heap.c
@@ -1127,11 +1127,123 @@ void init_reverb_eu(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
void init_reverb_us(s32 presetId)
|
||||
{
|
||||
s32 reverbWindowSize;
|
||||
s16 *mem;
|
||||
s32 i;
|
||||
#ifdef BETTER_REVERB
|
||||
s8 reverbConsole;
|
||||
#endif
|
||||
|
||||
reverbWindowSize = gReverbSettings[presetId].windowSize;
|
||||
gReverbDownsampleRate = gReverbSettings[presetId].downsampleRate;
|
||||
#if defined(BETTER_REVERB) && (defined(VERSION_US) || defined(VERSION_JP))
|
||||
if (gIsConsole)
|
||||
reverbConsole = betterReverbDownsampleConsole; // Console!
|
||||
else
|
||||
reverbConsole = betterReverbDownsampleEmulator; // Setting this to 1 is REALLY slow, please use sparingly!
|
||||
|
||||
if (reverbConsole <= 0) {
|
||||
reverbConsole = 1;
|
||||
toggleBetterReverb = FALSE;
|
||||
}
|
||||
else {
|
||||
toggleBetterReverb = TRUE;
|
||||
}
|
||||
|
||||
if (toggleBetterReverb && betterReverbWindowsSize >= 0)
|
||||
reverbWindowSize = betterReverbWindowsSize;
|
||||
|
||||
if (gReverbDownsampleRate < (1 << (reverbConsole - 1)))
|
||||
gReverbDownsampleRate = (1 << (reverbConsole - 1));
|
||||
reverbWindowSize /= gReverbDownsampleRate;
|
||||
if (reverbWindowSize < DEFAULT_LEN_2CH) // Minimum window size to not overflow
|
||||
reverbWindowSize = DEFAULT_LEN_2CH;
|
||||
#endif
|
||||
|
||||
switch (gReverbDownsampleRate) {
|
||||
case 1:
|
||||
sReverbDownsampleRateLog = 0;
|
||||
break;
|
||||
case 2:
|
||||
sReverbDownsampleRateLog = 1;
|
||||
break;
|
||||
case 4:
|
||||
sReverbDownsampleRateLog = 2;
|
||||
break;
|
||||
case 8:
|
||||
sReverbDownsampleRateLog = 3;
|
||||
break;
|
||||
case 16:
|
||||
sReverbDownsampleRateLog = 4;
|
||||
break;
|
||||
default:
|
||||
sReverbDownsampleRateLog = 0;
|
||||
}
|
||||
|
||||
if (reverbWindowSize == 0) {
|
||||
gSynthesisReverb.useReverb = 0;
|
||||
} else {
|
||||
gSynthesisReverb.useReverb = 8;
|
||||
if (!sAudioFirstBoot)
|
||||
{
|
||||
gSynthesisReverb.ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);
|
||||
gSynthesisReverb.ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);
|
||||
}
|
||||
gSynthesisReverb.nextRingBufferPos = 0;
|
||||
gSynthesisReverb.unkC = 0;
|
||||
gSynthesisReverb.curFrame = 0;
|
||||
gSynthesisReverb.bufSizePerChannel = reverbWindowSize;
|
||||
gSynthesisReverb.reverbGain = gReverbSettings[presetId].gain;
|
||||
gSynthesisReverb.framesLeftToIgnore = 2;
|
||||
if (!sAudioFirstBoot)
|
||||
{
|
||||
if (gReverbDownsampleRate != 1) {
|
||||
gSynthesisReverb.resampleFlags = A_INIT;
|
||||
gSynthesisReverb.resampleRate = 0x8000 / gReverbDownsampleRate;
|
||||
gSynthesisReverb.resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.unk24 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.unk28 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
for (i = 0; i < gAudioUpdatesPerFrame; i++) {
|
||||
mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
|
||||
gSynthesisReverb.items[0][i].toDownsampleLeft = mem;
|
||||
gSynthesisReverb.items[0][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);
|
||||
mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
|
||||
gSynthesisReverb.items[1][i].toDownsampleLeft = mem;
|
||||
gSynthesisReverb.items[1][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This does not have to be reset after being initialized for the first time, which would speed up load times dramatically.
|
||||
// However, reseting this allows for proper clearing of the reverb buffers, as well as dynamic customization of the delays array.
|
||||
#if defined(BETTER_REVERB) && (defined(VERSION_US) || defined(VERSION_JP))
|
||||
if (toggleBetterReverb) {
|
||||
for (i = 0; i < NUM_ALLPASS; ++i) {
|
||||
delaysL[i] = delaysBaselineL[i] / gReverbDownsampleRate;
|
||||
delaysR[i] = delaysBaselineR[i] / gReverbDownsampleRate;
|
||||
}
|
||||
|
||||
if (sAudioFirstBoot)
|
||||
return;
|
||||
delayBufsL = (s32**) soundAlloc(&gAudioSessionPool, NUM_ALLPASS * sizeof(s32*));
|
||||
delayBufsR = (s32**) soundAlloc(&gAudioSessionPool, NUM_ALLPASS * sizeof(s32*));
|
||||
for (i = 0; i < NUM_ALLPASS; ++i) {
|
||||
delayBufsL[i] = (s32*) soundAlloc(&gAudioSessionPool, delaysL[i] * sizeof(s32));
|
||||
delayBufsR[i] = (s32*) soundAlloc(&gAudioSessionPool, delaysR[i] * sizeof(s32));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
void audio_reset_session(struct AudioSessionSettings *preset) {
|
||||
void audio_reset_session(struct AudioSessionSettings *preset, s32 presetId) {
|
||||
if (sAudioFirstBoot)
|
||||
{
|
||||
gAudioSessionPool.cur = gAudioSessionPool.start;
|
||||
@@ -1145,6 +1257,7 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
|
||||
temporary_pool_clear(&gBankLoadedPool.temporary);
|
||||
temporary_pool_clear(&gUnusedLoadedPool.temporary);
|
||||
|
||||
init_reverb_us(presetId);
|
||||
return;
|
||||
}
|
||||
#else
|
||||
@@ -1170,9 +1283,7 @@ void audio_reset_session(void) {
|
||||
#endif
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
s8 updatesPerFrame;
|
||||
s32 reverbWindowSize;
|
||||
s32 k;
|
||||
s16 *mem;
|
||||
s32 i;
|
||||
#endif
|
||||
#ifdef PUPPYPRINT
|
||||
@@ -1186,9 +1297,6 @@ void audio_reset_session(void) {
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
s32 frames;
|
||||
s32 remainingDmas;
|
||||
#ifdef BETTER_REVERB
|
||||
s8 reverbConsole;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef VERSION_EU
|
||||
eu_stubbed_printf_1("Heap Reconstruct Start %x\n", gAudioResetPresetIdToLoad);
|
||||
@@ -1294,54 +1402,9 @@ void audio_reset_session(void) {
|
||||
gMaxAudioCmds = gMaxSimultaneousNotes * 0x10 * gAudioBufferParameters.updatesPerFrame + preset->numReverbs * 0x20 + 0x300;
|
||||
#endif
|
||||
#else
|
||||
reverbWindowSize = preset->reverbWindowSize;
|
||||
gAiFrequency = osAiSetFrequency(preset->frequency);
|
||||
gMaxSimultaneousNotes = preset->maxSimultaneousNotes;
|
||||
gSamplesPerFrameTarget = ALIGN16(gAiFrequency / 60);
|
||||
gReverbDownsampleRate = preset->reverbDownsampleRate;
|
||||
#if defined(BETTER_REVERB) && (defined(VERSION_US) || defined(VERSION_JP))
|
||||
if (gIsConsole)
|
||||
reverbConsole = betterReverbDownsampleConsole; // Console!
|
||||
else
|
||||
reverbConsole = betterReverbDownsampleEmulator; // Setting this to 1 is REALLY slow, please use sparingly!
|
||||
|
||||
if (reverbConsole <= 0) {
|
||||
reverbConsole = 1;
|
||||
toggleBetterReverb = FALSE;
|
||||
}
|
||||
else {
|
||||
toggleBetterReverb = TRUE;
|
||||
}
|
||||
|
||||
if (toggleBetterReverb && betterReverbWindowsSize >= 0)
|
||||
reverbWindowSize = betterReverbWindowsSize;
|
||||
|
||||
if (gReverbDownsampleRate < (1 << (reverbConsole - 1)))
|
||||
gReverbDownsampleRate = (1 << (reverbConsole - 1));
|
||||
reverbWindowSize /= gReverbDownsampleRate;
|
||||
if (reverbWindowSize < DEFAULT_LEN_2CH) // Minimum window size to not overflow
|
||||
reverbWindowSize = DEFAULT_LEN_2CH;
|
||||
#endif
|
||||
|
||||
switch (gReverbDownsampleRate) {
|
||||
case 1:
|
||||
sReverbDownsampleRateLog = 0;
|
||||
break;
|
||||
case 2:
|
||||
sReverbDownsampleRateLog = 1;
|
||||
break;
|
||||
case 4:
|
||||
sReverbDownsampleRateLog = 2;
|
||||
break;
|
||||
case 8:
|
||||
sReverbDownsampleRateLog = 3;
|
||||
break;
|
||||
case 16:
|
||||
sReverbDownsampleRateLog = 4;
|
||||
break;
|
||||
default:
|
||||
sReverbDownsampleRateLog = 0;
|
||||
}
|
||||
|
||||
gVolume = preset->volume;
|
||||
gMinAiBufferLength = gSamplesPerFrameTarget - 0x10;
|
||||
@@ -1416,56 +1479,8 @@ void audio_reset_session(void) {
|
||||
}
|
||||
|
||||
init_reverb_eu();
|
||||
|
||||
#else
|
||||
if (reverbWindowSize == 0) {
|
||||
gSynthesisReverb.useReverb = 0;
|
||||
} else {
|
||||
gSynthesisReverb.useReverb = 8;
|
||||
gSynthesisReverb.ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);
|
||||
gSynthesisReverb.ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);
|
||||
gSynthesisReverb.nextRingBufferPos = 0;
|
||||
gSynthesisReverb.unkC = 0;
|
||||
gSynthesisReverb.curFrame = 0;
|
||||
gSynthesisReverb.bufSizePerChannel = reverbWindowSize;
|
||||
gSynthesisReverb.reverbGain = preset->reverbGain;
|
||||
gSynthesisReverb.framesLeftToIgnore = 2;
|
||||
if (gReverbDownsampleRate != 1) {
|
||||
gSynthesisReverb.resampleFlags = A_INIT;
|
||||
gSynthesisReverb.resampleRate = 0x8000 / gReverbDownsampleRate;
|
||||
gSynthesisReverb.resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.unk24 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
gSynthesisReverb.unk28 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
|
||||
for (i = 0; i < gAudioUpdatesPerFrame; i++) {
|
||||
mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
|
||||
gSynthesisReverb.items[0][i].toDownsampleLeft = mem;
|
||||
gSynthesisReverb.items[0][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);
|
||||
mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
|
||||
gSynthesisReverb.items[1][i].toDownsampleLeft = mem;
|
||||
gSynthesisReverb.items[1][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);
|
||||
}
|
||||
}
|
||||
|
||||
// This does not have to be reset after being initialized for the first time, which would speed up load times dramatically.
|
||||
// However, reseting this allows for proper clearing of the reverb buffers, as well as dynamic customization of the delays array.
|
||||
#if defined(BETTER_REVERB) && (defined(VERSION_US) || defined(VERSION_JP))
|
||||
if (toggleBetterReverb) {
|
||||
for (i = 0; i < NUM_ALLPASS; ++i) {
|
||||
delaysL[i] = delaysBaselineL[i] / gReverbDownsampleRate;
|
||||
delaysR[i] = delaysBaselineR[i] / gReverbDownsampleRate;
|
||||
}
|
||||
|
||||
delayBufsL = (s32**) soundAlloc(&gAudioSessionPool, NUM_ALLPASS * sizeof(s32*));
|
||||
delayBufsR = (s32**) soundAlloc(&gAudioSessionPool, NUM_ALLPASS * sizeof(s32*));
|
||||
for (i = 0; i < NUM_ALLPASS; ++i) {
|
||||
delayBufsL[i] = (s32*) soundAlloc(&gAudioSessionPool, delaysL[i] * sizeof(s32));
|
||||
delayBufsR[i] = (s32*) soundAlloc(&gAudioSessionPool, delaysR[i] * sizeof(s32));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
init_reverb_us(presetId);
|
||||
|
||||
init_sample_dma_buffers(gMaxSimultaneousNotes);
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ void *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 id);
|
||||
s32 audio_shut_down_and_reset_step(void);
|
||||
void audio_reset_session(void);
|
||||
#else
|
||||
void audio_reset_session(struct AudioSessionSettings *preset);
|
||||
void audio_reset_session(struct AudioSessionSettings *preset, s32 presetId);
|
||||
#endif
|
||||
void discard_bank(s32 bankId);
|
||||
|
||||
|
||||
@@ -758,6 +758,12 @@ struct ReverbSettingsEU
|
||||
u16 gain;
|
||||
};
|
||||
#else
|
||||
struct ReverbSettingsUS
|
||||
{
|
||||
u8 downsampleRate;
|
||||
u16 windowSize;
|
||||
u16 gain;
|
||||
};
|
||||
struct ReverbSettingsEU
|
||||
{
|
||||
u8 downsampleRate; // always 1
|
||||
|
||||
@@ -1051,7 +1051,7 @@ void audio_init() {
|
||||
gAudioResetStatus = 1;
|
||||
audio_shut_down_and_reset_step();
|
||||
#else
|
||||
audio_reset_session(&gAudioSessionPresets[0]);
|
||||
audio_reset_session(&gAudioSessionPresets[0], 0);
|
||||
#endif
|
||||
|
||||
// Not sure about these prints
|
||||
|
||||
@@ -795,8 +795,8 @@ void thread5_game_loop(UNUSED void *arg) {
|
||||
|
||||
if (gPlayer1Controller->buttonPressed & L_TRIG)
|
||||
{
|
||||
*(volatile int*) 0 = 0;
|
||||
//set_background_music(SEQ_LEVEL_SLIDE, SEQUENCE_ARGS(0xFF, SEQ_LEVEL_SLIDE), 30);
|
||||
//*(volatile int*) 0 = 0;
|
||||
set_background_music(SEQ_MENU_FILE_SELECT, SEQUENCE_ARGS(0xFF, SEQ_MENU_FILE_SELECT), 30);
|
||||
}
|
||||
if (gPlayer1Controller->buttonPressed & R_TRIG)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user