diff options
| author | Nicholas Estelami <NEstelami@users.noreply.github.com> | 2022-06-10 13:37:50 -0400 |
|---|---|---|
| committer | Nicholas Estelami <NEstelami@users.noreply.github.com> | 2022-06-15 15:57:52 -0400 |
| commit | 114c6e01d963ab833c878cd08e0ba19178016325 (patch) | |
| tree | d1a39b7f0c7cbcb3910f33e7963db45a44e9d31a /soh/src/code/audio_seqplayer.c | |
| parent | 746c7a5303cb61555c845393377aca9fd68ce377 (diff) | |
Audio support nearly complete.
Diffstat (limited to 'soh/src/code/audio_seqplayer.c')
| -rw-r--r-- | soh/src/code/audio_seqplayer.c | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/soh/src/code/audio_seqplayer.c b/soh/src/code/audio_seqplayer.c index 52d14a9a1..beac78269 100644 --- a/soh/src/code/audio_seqplayer.c +++ b/soh/src/code/audio_seqplayer.c @@ -3,6 +3,9 @@ #include "ultra64.h" #include "global.h" +extern bool gUseLegacySD; +extern char* sequenceMap[256]; + #define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80) #define PORTAMENTO_MODE(x) ((x).mode & ~0x80) #define PORTAMENTO_MODE_1 1 @@ -1060,9 +1063,15 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { command = (u8)parameters[0]; if (seqPlayer->defaultFont != 0xFF) { - offset = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId]; - lowBits = gAudioContext.sequenceFontTable[offset]; - command = gAudioContext.sequenceFontTable[offset + lowBits - result]; + if (gUseLegacySD) { + offset = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId]; + lowBits = gAudioContext.sequenceFontTable[offset]; + command = gAudioContext.sequenceFontTable[offset + lowBits - result]; + } + else { + SequenceData sDat = ResourceMgr_LoadSeqByName(sequenceMap[seqPlayer->seqId]); + command = sDat.fonts[sDat.numFonts - result - 1]; + } } if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, command)) { @@ -1170,10 +1179,17 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { result = (u8)parameters[0]; command = (u8)parameters[0]; - if (seqPlayer->defaultFont != 0xFF) { - offset = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId]; - lowBits = gAudioContext.sequenceFontTable[offset]; - command = gAudioContext.sequenceFontTable[offset + lowBits - result]; + if (seqPlayer->defaultFont != 0xFF) + { + if (gUseLegacySD) { + offset = ((u16*)gAudioContext.sequenceFontTable)[seqPlayer->seqId]; + lowBits = gAudioContext.sequenceFontTable[offset]; + command = gAudioContext.sequenceFontTable[offset + lowBits - result]; + } + else { + SequenceData sDat = ResourceMgr_LoadSeqByName(sequenceMap[seqPlayer->seqId]); + command = sDat.fonts[sDat.numFonts - result - 1]; + } } if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, command)) { @@ -1330,14 +1346,12 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { break; case 0xB2: offset = (u16)parameters[0]; - // OTRTODO: Byteswap added for quick audio channel->unk_22 = BOMSWAP16(*(u16*)(seqPlayer->seqData + (uintptr_t)(offset + scriptState->value * 2))); break; case 0xB4: channel->dynTable = (void*)&seqPlayer->seqData[channel->unk_22]; break; case 0xB5: - // OTRTODO: Byteswap added for quick audio channel->unk_22 = BOMSWAP16(((u16*)(channel->dynTable))[scriptState->value]); break; case 0xB6: |
