Merge branch 'zapd_audio_support' into zelda64

This commit is contained in:
Kevin Alexis Contreras 2022-06-16 23:09:50 -05:00
commit bb90be6748
16 changed files with 127 additions and 59 deletions

View file

@ -113,7 +113,6 @@
<Sequence Name="108_Timed_Minigame"/>
<Sequence Name="109_Cutscene_Effects"/>
</Sequences>
<Samples Bank="0">
<Sample Name="Bird Chirp 1">
<Offset Version="MQDebug" At="0"/>
@ -1432,7 +1431,6 @@
<Offset Version="MQDebug" At="0"/>
</Sample>
</Samples>
<Samples Bank="3">
<Sample Name="Low Rumbling">
<Offset Version="MQDebug" At="0"/>
@ -1552,4 +1550,4 @@
<Soundfont Name="21_Zoras_Domain" Index="21"/>
</Audio>
</File>
</Root>
</Root>

View file

@ -125,7 +125,8 @@ typedef struct {
/* 0x08 */ s16 book[1]; // size 8 * order * npredictors. 8-byte aligned
} AdpcmBook; // size >= 0x8
typedef struct {
typedef struct
{
union {
struct {
/* 0x00 */ u32 codec : 4;

View file

@ -568,21 +568,20 @@ extern "C" Vtx* ResourceMgr_LoadVtxByName(const char* path)
extern "C" SequenceData ResourceMgr_LoadSeqByName(const char* path)
{
auto file = OTRGlobals::Instance->context->GetResourceManager()->LoadFile(path).get();
char* data = file->buffer.get();
auto file = std::static_pointer_cast<Ship::AudioSequence>(OTRGlobals::Instance->context->GetResourceManager()
->LoadResource(path));
SequenceData seqData;
seqData.seqNumber = data[1];
seqData.medium = data[2];
seqData.cachePolicy = data[3];
seqData.numFonts = data[4];
seqData.seqNumber = file->seqNumber;
seqData.medium = file->medium;
seqData.cachePolicy = file->cachePolicy;
seqData.numFonts = file->fonts.size();
for (int i = 0; i < seqData.numFonts; i++)
seqData.fonts[i] = data[5 + i];
seqData.fonts[i] = file->fonts[i];
seqData.seqData = &data[5 + seqData.numFonts];
seqData.seqDataSize = file->dwBufferSize - 5 - seqData.numFonts;
seqData.seqData = file->seqData.data();
seqData.seqDataSize = file->seqData.size();
return seqData;
}
@ -785,7 +784,9 @@ extern "C" SoundFont* ResourceMgr_LoadAudioSoundFont(const char* path) {
}
soundFontC->instruments[i] = inst;
} else {
}
else
{
soundFontC->instruments[i] = nullptr;
}
}

View file

@ -76,7 +76,8 @@ void* sUnusedHandler = NULL;
s32 gAudioContextInitalized = false;
char* sequenceMap[512];
char* sequenceMap[256];
char* fontMap[256];
uintptr_t fontStart;
uint32_t fontOffsets[8192];
@ -389,6 +390,7 @@ SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
while (numFonts > 0) {
fontId = gAudioContext.sequenceFontTable[index++];
font = AudioLoad_SyncLoadFont(fontId);
numFonts--;
}
@ -609,6 +611,7 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
}
seqData = AudioLoad_SyncLoadSeq(seqId);
if (seqData == NULL) {
return 0;
}
@ -897,7 +900,6 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* mem, RelocInfo* relocInfo
SoundFontSound* sfx;
s32 i;
SoundFont* sf = NULL;
s32 numDrums = 0;
s32 numInstruments = 0;
s32 numSfx = 0;

View file

@ -356,6 +356,7 @@ Instrument* Audio_GetInstrumentInner(s32 fontId, s32 instId) {
}
return inst;
}

View file

@ -5,7 +5,6 @@
extern bool gUseLegacySD;
extern char* sequenceMap[256];
char* fontMap[256];
#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)