summaryrefslogtreecommitdiff
path: root/soh/src/code/audio_seqplayer.c
diff options
context:
space:
mode:
authorNicholas Estelami <NEstelami@users.noreply.github.com>2022-06-10 13:37:50 -0400
committerNicholas Estelami <NEstelami@users.noreply.github.com>2022-06-10 13:37:50 -0400
commitf1b81b7f82fcc12f925df3563c8b53f50cf40b91 (patch)
treedb2e6dfe860d9932dd889420f00dbfe5b8bbdf86 /soh/src/code/audio_seqplayer.c
parentfc7da35054a8e7a12fb6dd5dfa01082c2b049c63 (diff)
Audio support nearly complete.
Diffstat (limited to 'soh/src/code/audio_seqplayer.c')
-rw-r--r--soh/src/code/audio_seqplayer.c32
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: