mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-14 03:44:34 +00:00
Document parts of audio (#1000)
* Minor labelling * progress * play percentage -> delay * duration -> gatetime * more * more * more * seqIdx -> playerIdx * more * more * more * more * format * fix comment * filters * more * media * confusion * Sync load is actually slow load * AudioHeap prefix * more * more * reformat * more * more * AudioLoad * more * more * seq banks * more consistent * more * name last function in audio_load * More audio_synthesis * clean up audio tables * minor * slow/fast load ramAddr * format * remove unused * Remove union * remove padding * audio bank -> sound font * seqLayer -> layer * stuff * seqChannel -> channel * ChannelLayer -> Layer * remove define, add bug comment * format * more * cache enum * more * AudioSeq function prefix * naming * bankIdx -> bankId * more * format * review * more * fixes * avoid hardcoded sfxid's * SE -> Sfx Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
parent
823a3c0754
commit
5ad7cf9dbb
50 changed files with 3493 additions and 3508 deletions
|
@ -9,56 +9,55 @@ extern u8 sSeqCmdRdPos;
|
|||
extern u8 sSeqCmdWrPos;
|
||||
extern u8 D_80133408;
|
||||
extern u8 D_80133418;
|
||||
extern u8 D_801333CC;
|
||||
extern u8 D_80133410[];
|
||||
|
||||
// TODO: clean up these macros. They are similar to ones in code_800EC960.c but without casts.
|
||||
#define Audio_StartSeq(seqIdx, fadeTimer, seqId) \
|
||||
Audio_QueueSeqCmd(0x00000000 | ((seqIdx) << 24) | ((fadeTimer) << 16) | (seqId))
|
||||
#define Audio_SeqCmdA(seqIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((seqIdx) << 24) | (a))
|
||||
#define Audio_SeqCmdB30(seqIdx, a, b) Audio_QueueSeqCmd(0xB0003000 | ((seqIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmdB40(seqIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((seqIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmd3(seqIdx, a) Audio_QueueSeqCmd(0x30000000 | ((seqIdx) << 24) | (a))
|
||||
#define Audio_SeqCmd5(seqIdx, a, b) Audio_QueueSeqCmd(0x50000000 | ((seqIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmd4(seqIdx, a, b) Audio_QueueSeqCmd(0x40000000 | ((seqIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SetVolScaleNow(seqIdx, volFadeTimer, volScale) \
|
||||
Audio_ProcessSeqCmd(0x40000000 | ((u8)seqIdx << 24) | ((u8)volFadeTimer << 16) | ((u8)(volScale * 127.0f)));
|
||||
#define Audio_StartSeq(playerIdx, fadeTimer, seqId) \
|
||||
Audio_QueueSeqCmd(0x00000000 | ((playerIdx) << 24) | ((fadeTimer) << 16) | (seqId))
|
||||
#define Audio_SeqCmdA(playerIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((playerIdx) << 24) | (a))
|
||||
#define Audio_SeqCmdB30(playerIdx, a, b) Audio_QueueSeqCmd(0xB0003000 | ((playerIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmdB40(playerIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((playerIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmd3(playerIdx, a) Audio_QueueSeqCmd(0x30000000 | ((playerIdx) << 24) | (a))
|
||||
#define Audio_SeqCmd5(playerIdx, a, b) Audio_QueueSeqCmd(0x50000000 | ((playerIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SeqCmd4(playerIdx, a, b) Audio_QueueSeqCmd(0x40000000 | ((playerIdx) << 24) | ((a) << 16) | (b))
|
||||
#define Audio_SetVolScaleNow(playerIdx, volFadeTimer, volScale) \
|
||||
Audio_ProcessSeqCmd(0x40000000 | ((u8)playerIdx << 24) | ((u8)volFadeTimer << 16) | ((u8)(volScale * 127.0f)));
|
||||
|
||||
void func_800F9280(u8 seqIdx, u8 seqId, u8 arg2, u16 fadeTimer) {
|
||||
void func_800F9280(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer) {
|
||||
u8 i;
|
||||
u16 dur;
|
||||
s32 pad;
|
||||
|
||||
if (D_80133408 == 0 || seqIdx == 2) {
|
||||
if (D_80133408 == 0 || playerIdx == 2) {
|
||||
arg2 &= 0x7F;
|
||||
if (arg2 == 0x7F) {
|
||||
dur = (fadeTimer >> 3) * 60 * gAudioContext.audioBufferParameters.updatesPerFrame;
|
||||
Audio_QueueCmdS32(0x85000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(seqId, 8, 8), dur);
|
||||
Audio_QueueCmdS32(0x85000000 | _SHIFTL(playerIdx, 16, 8) | _SHIFTL(seqId, 8, 8), dur);
|
||||
} else {
|
||||
Audio_QueueCmdS32(0x82000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(seqId, 8, 8),
|
||||
Audio_QueueCmdS32(0x82000000 | _SHIFTL(playerIdx, 16, 8) | _SHIFTL(seqId, 8, 8),
|
||||
(fadeTimer * (u16)gAudioContext.audioBufferParameters.updatesPerFrame) / 4);
|
||||
}
|
||||
|
||||
D_8016E750[seqIdx].unk_254 = seqId | (arg2 << 8);
|
||||
D_8016E750[seqIdx].unk_256 = seqId | (arg2 << 8);
|
||||
D_8016E750[playerIdx].unk_254 = seqId | (arg2 << 8);
|
||||
D_8016E750[playerIdx].unk_256 = seqId | (arg2 << 8);
|
||||
|
||||
if (D_8016E750[seqIdx].volCur != 1.0f) {
|
||||
Audio_QueueCmdF32(0x41000000 | _SHIFTL(seqIdx, 16, 8), D_8016E750[seqIdx].volCur);
|
||||
if (D_8016E750[playerIdx].volCur != 1.0f) {
|
||||
Audio_QueueCmdF32(0x41000000 | _SHIFTL(playerIdx, 16, 8), D_8016E750[playerIdx].volCur);
|
||||
}
|
||||
|
||||
D_8016E750[seqIdx].unk_28 = 0;
|
||||
D_8016E750[seqIdx].unk_18 = 0;
|
||||
D_8016E750[seqIdx].unk_14 = 0;
|
||||
D_8016E750[playerIdx].unk_28 = 0;
|
||||
D_8016E750[playerIdx].unk_18 = 0;
|
||||
D_8016E750[playerIdx].unk_14 = 0;
|
||||
|
||||
for (i = 0; i < 0x10; i++) {
|
||||
D_8016E750[seqIdx].unk_50[i].unk_00 = 1.0f;
|
||||
D_8016E750[seqIdx].unk_50[i].unk_0C = 0;
|
||||
D_8016E750[seqIdx].unk_50[i].unk_10 = 1.0f;
|
||||
D_8016E750[seqIdx].unk_50[i].unk_1C = 0;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_00 = 1.0f;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_0C = 0;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_10 = 1.0f;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_1C = 0;
|
||||
}
|
||||
|
||||
D_8016E750[seqIdx].unk_250 = 0;
|
||||
D_8016E750[seqIdx].unk_252 = 0;
|
||||
D_8016E750[playerIdx].unk_250 = 0;
|
||||
D_8016E750[playerIdx].unk_252 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +101,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
u8 spec;
|
||||
u8 op;
|
||||
u8 subOp;
|
||||
u8 seqIdx;
|
||||
u8 playerIdx;
|
||||
u8 seqId;
|
||||
u8 seqArgs;
|
||||
u8 found;
|
||||
|
@ -119,7 +118,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
}
|
||||
|
||||
op = cmd >> 28;
|
||||
seqIdx = (cmd & 0xF000000) >> 24;
|
||||
playerIdx = (cmd & 0xF000000) >> 24;
|
||||
|
||||
switch (op) {
|
||||
case 0x0:
|
||||
|
@ -127,15 +126,15 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
seqId = cmd & 0xFF;
|
||||
seqArgs = (cmd & 0xFF00) >> 8;
|
||||
fadeTimer = (cmd & 0xFF0000) >> 13;
|
||||
if ((D_8016E750[seqIdx].unk_260 == 0) && (seqArgs < 0x80)) {
|
||||
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
|
||||
if ((D_8016E750[playerIdx].unk_260 == 0) && (seqArgs < 0x80)) {
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x1:
|
||||
// disable seq player
|
||||
fadeTimer = (cmd & 0xFF0000) >> 13;
|
||||
func_800F9474(seqIdx, fadeTimer);
|
||||
func_800F9474(playerIdx, fadeTimer);
|
||||
break;
|
||||
|
||||
case 0x2:
|
||||
|
@ -144,35 +143,35 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
seqArgs = (cmd & 0xFF00) >> 8;
|
||||
fadeTimer = (cmd & 0xFF0000) >> 13;
|
||||
new_var = seqArgs;
|
||||
for (i = 0; i < D_8016E348[seqIdx]; i++) {
|
||||
if (D_8016E320[seqIdx][i].unk_0 == seqId) {
|
||||
for (i = 0; i < D_8016E348[playerIdx]; i++) {
|
||||
if (D_8016E320[playerIdx][i].unk_0 == seqId) {
|
||||
if (i == 0) {
|
||||
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
found = D_8016E348[seqIdx];
|
||||
for (i = 0; i < D_8016E348[seqIdx]; i++) {
|
||||
if (D_8016E320[seqIdx][i].unk_1 <= new_var) {
|
||||
found = D_8016E348[playerIdx];
|
||||
for (i = 0; i < D_8016E348[playerIdx]; i++) {
|
||||
if (D_8016E320[playerIdx][i].unk_1 <= new_var) {
|
||||
found = i;
|
||||
i = D_8016E348[seqIdx]; // "break;"
|
||||
i = D_8016E348[playerIdx]; // "break;"
|
||||
}
|
||||
}
|
||||
|
||||
if (D_8016E348[seqIdx] < 5) {
|
||||
D_8016E348[seqIdx]++;
|
||||
if (D_8016E348[playerIdx] < 5) {
|
||||
D_8016E348[playerIdx]++;
|
||||
}
|
||||
for (i = D_8016E348[seqIdx] - 1; i != found; i--) {
|
||||
D_8016E320[seqIdx][i].unk_1 = D_8016E320[seqIdx][i - 1].unk_1;
|
||||
D_8016E320[seqIdx][i].unk_0 = D_8016E320[seqIdx][i - 1].unk_0;
|
||||
for (i = D_8016E348[playerIdx] - 1; i != found; i--) {
|
||||
D_8016E320[playerIdx][i].unk_1 = D_8016E320[playerIdx][i - 1].unk_1;
|
||||
D_8016E320[playerIdx][i].unk_0 = D_8016E320[playerIdx][i - 1].unk_0;
|
||||
}
|
||||
D_8016E320[seqIdx][found].unk_1 = seqArgs;
|
||||
D_8016E320[seqIdx][found].unk_0 = seqId;
|
||||
D_8016E320[playerIdx][found].unk_1 = seqArgs;
|
||||
D_8016E320[playerIdx][found].unk_0 = seqId;
|
||||
|
||||
if (found == 0) {
|
||||
func_800F9280(seqIdx, seqId, seqArgs, fadeTimer);
|
||||
func_800F9280(playerIdx, seqId, seqArgs, fadeTimer);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -181,26 +180,26 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
seqId = cmd & 0xFF;
|
||||
fadeTimer = (cmd & 0xFF0000) >> 13;
|
||||
|
||||
found = D_8016E348[seqIdx];
|
||||
for (i = 0; i < D_8016E348[seqIdx]; i++) {
|
||||
if (D_8016E320[seqIdx][i].unk_0 == seqId) {
|
||||
found = D_8016E348[playerIdx];
|
||||
for (i = 0; i < D_8016E348[playerIdx]; i++) {
|
||||
if (D_8016E320[playerIdx][i].unk_0 == seqId) {
|
||||
found = i;
|
||||
i = D_8016E348[seqIdx]; // "break;"
|
||||
i = D_8016E348[playerIdx]; // "break;"
|
||||
}
|
||||
}
|
||||
|
||||
if (found != D_8016E348[seqIdx]) {
|
||||
for (i = found; i < D_8016E348[seqIdx] - 1; i++) {
|
||||
D_8016E320[seqIdx][i].unk_1 = D_8016E320[seqIdx][i + 1].unk_1;
|
||||
D_8016E320[seqIdx][i].unk_0 = D_8016E320[seqIdx][i + 1].unk_0;
|
||||
if (found != D_8016E348[playerIdx]) {
|
||||
for (i = found; i < D_8016E348[playerIdx] - 1; i++) {
|
||||
D_8016E320[playerIdx][i].unk_1 = D_8016E320[playerIdx][i + 1].unk_1;
|
||||
D_8016E320[playerIdx][i].unk_0 = D_8016E320[playerIdx][i + 1].unk_0;
|
||||
}
|
||||
D_8016E348[seqIdx]--;
|
||||
D_8016E348[playerIdx]--;
|
||||
}
|
||||
|
||||
if (found == 0) {
|
||||
func_800F9474(seqIdx, fadeTimer);
|
||||
if (D_8016E348[seqIdx] != 0) {
|
||||
func_800F9280(seqIdx, D_8016E320[seqIdx][0].unk_0, D_8016E320[seqIdx][0].unk_1, fadeTimer);
|
||||
func_800F9474(playerIdx, fadeTimer);
|
||||
if (D_8016E348[playerIdx] != 0) {
|
||||
func_800F9280(playerIdx, D_8016E320[playerIdx][0].unk_0, D_8016E320[playerIdx][0].unk_1, fadeTimer);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -212,10 +211,11 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
if (duration == 0) {
|
||||
duration++;
|
||||
}
|
||||
D_8016E750[seqIdx].volTarget = (f32)val / 127.0f;
|
||||
if (D_8016E750[seqIdx].volCur != D_8016E750[seqIdx].volTarget) {
|
||||
D_8016E750[seqIdx].unk_08 = (D_8016E750[seqIdx].volCur - D_8016E750[seqIdx].volTarget) / (f32)duration;
|
||||
D_8016E750[seqIdx].unk_0C = duration;
|
||||
D_8016E750[playerIdx].volTarget = (f32)val / 127.0f;
|
||||
if (D_8016E750[playerIdx].volCur != D_8016E750[playerIdx].volTarget) {
|
||||
D_8016E750[playerIdx].unk_08 =
|
||||
(D_8016E750[playerIdx].volCur - D_8016E750[playerIdx].volTarget) / (f32)duration;
|
||||
D_8016E750[playerIdx].unk_0C = duration;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -228,11 +228,12 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
}
|
||||
freqScale = (f32)val / 1000.0f;
|
||||
for (i = 0; i < 16; i++) {
|
||||
D_8016E750[seqIdx].unk_50[i].unk_14 = freqScale;
|
||||
D_8016E750[seqIdx].unk_50[i].unk_1C = duration;
|
||||
D_8016E750[seqIdx].unk_50[i].unk_18 = (D_8016E750[seqIdx].unk_50[i].unk_10 - freqScale) / (f32)duration;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_14 = freqScale;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_1C = duration;
|
||||
D_8016E750[playerIdx].unk_50[i].unk_18 =
|
||||
(D_8016E750[playerIdx].unk_50[i].unk_10 - freqScale) / (f32)duration;
|
||||
}
|
||||
D_8016E750[seqIdx].unk_250 = 0xFFFF;
|
||||
D_8016E750[playerIdx].unk_250 = 0xFFFF;
|
||||
break;
|
||||
|
||||
case 0xD:
|
||||
|
@ -244,11 +245,11 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
duration++;
|
||||
}
|
||||
freqScale = (f32)val / 1000.0f;
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_14 = freqScale;
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_18 =
|
||||
(D_8016E750[seqIdx].unk_50[chanIdx].unk_10 - freqScale) / (f32)duration;
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_1C = duration;
|
||||
D_8016E750[seqIdx].unk_250 |= 1 << chanIdx;
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_14 = freqScale;
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_18 =
|
||||
(D_8016E750[playerIdx].unk_50[chanIdx].unk_10 - freqScale) / (f32)duration;
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_1C = duration;
|
||||
D_8016E750[playerIdx].unk_250 |= 1 << chanIdx;
|
||||
break;
|
||||
|
||||
case 0x6:
|
||||
|
@ -259,13 +260,13 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
if (duration == 0) {
|
||||
duration++;
|
||||
}
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_04 = (f32)val / 127.0f;
|
||||
if (D_8016E750[seqIdx].unk_50[chanIdx].unk_00 != D_8016E750[seqIdx].unk_50[chanIdx].unk_04) {
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_08 =
|
||||
(D_8016E750[seqIdx].unk_50[chanIdx].unk_00 - D_8016E750[seqIdx].unk_50[chanIdx].unk_04) /
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_04 = (f32)val / 127.0f;
|
||||
if (D_8016E750[playerIdx].unk_50[chanIdx].unk_00 != D_8016E750[playerIdx].unk_50[chanIdx].unk_04) {
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_08 =
|
||||
(D_8016E750[playerIdx].unk_50[chanIdx].unk_00 - D_8016E750[playerIdx].unk_50[chanIdx].unk_04) /
|
||||
(f32)duration;
|
||||
D_8016E750[seqIdx].unk_50[chanIdx].unk_0C = duration;
|
||||
D_8016E750[seqIdx].unk_252 |= 1 << chanIdx;
|
||||
D_8016E750[playerIdx].unk_50[chanIdx].unk_0C = duration;
|
||||
D_8016E750[playerIdx].unk_252 |= 1 << chanIdx;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -273,7 +274,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
// set global io port
|
||||
port = (cmd & 0xFF0000) >> 16;
|
||||
val = cmd & 0xFF;
|
||||
Audio_QueueCmdS8(0x46000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(port, 0, 8), val);
|
||||
Audio_QueueCmdS8(0x46000000 | _SHIFTL(playerIdx, 16, 8) | _SHIFTL(port, 0, 8), val);
|
||||
break;
|
||||
|
||||
case 0x8:
|
||||
|
@ -281,15 +282,15 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
chanIdx = (cmd & 0xF00) >> 8;
|
||||
port = (cmd & 0xFF0000) >> 16;
|
||||
val = cmd & 0xFF;
|
||||
if ((D_8016E750[seqIdx].unk_258 & (1 << chanIdx)) == 0) {
|
||||
Audio_QueueCmdS8(0x06000000 | _SHIFTL(seqIdx, 16, 8) | _SHIFTL(chanIdx, 8, 8) | _SHIFTL(port, 0, 8),
|
||||
if ((D_8016E750[playerIdx].unk_258 & (1 << chanIdx)) == 0) {
|
||||
Audio_QueueCmdS8(0x06000000 | _SHIFTL(playerIdx, 16, 8) | _SHIFTL(chanIdx, 8, 8) | _SHIFTL(port, 0, 8),
|
||||
val);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x9:
|
||||
// set channel mask for command 0x8
|
||||
D_8016E750[seqIdx].unk_258 = cmd & 0xFFFF;
|
||||
D_8016E750[playerIdx].unk_258 = cmd & 0xFFFF;
|
||||
break;
|
||||
|
||||
case 0xA:
|
||||
|
@ -297,36 +298,36 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
channelMask = cmd & 0xFFFF;
|
||||
if (channelMask != 0) {
|
||||
// with channel mask channelMask...
|
||||
Audio_QueueCmdU16(0x90000000 | _SHIFTL(seqIdx, 16, 8), channelMask);
|
||||
Audio_QueueCmdU16(0x90000000 | _SHIFTL(playerIdx, 16, 8), channelMask);
|
||||
// stop channels
|
||||
Audio_QueueCmdS8(0x08000000 | _SHIFTL(seqIdx, 16, 8) | 0xFF00, 1);
|
||||
Audio_QueueCmdS8(0x08000000 | _SHIFTL(playerIdx, 16, 8) | 0xFF00, 1);
|
||||
}
|
||||
if ((channelMask ^ 0xFFFF) != 0) {
|
||||
// with channel mask ~channelMask...
|
||||
Audio_QueueCmdU16(0x90000000 | _SHIFTL(seqIdx, 16, 8), (channelMask ^ 0xFFFF));
|
||||
Audio_QueueCmdU16(0x90000000 | _SHIFTL(playerIdx, 16, 8), (channelMask ^ 0xFFFF));
|
||||
// unstop channels
|
||||
Audio_QueueCmdS8(0x08000000 | _SHIFTL(seqIdx, 16, 8) | 0xFF00, 0);
|
||||
Audio_QueueCmdS8(0x08000000 | _SHIFTL(playerIdx, 16, 8) | 0xFF00, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xB:
|
||||
// update tempo
|
||||
D_8016E750[seqIdx].unk_14 = cmd;
|
||||
D_8016E750[playerIdx].unk_14 = cmd;
|
||||
break;
|
||||
|
||||
case 0xC:
|
||||
// start sequence with setup commands
|
||||
subOp = (cmd & 0xF00000) >> 20;
|
||||
if (subOp != 0xF) {
|
||||
if (D_8016E750[seqIdx].unk_4D < 7) {
|
||||
found = D_8016E750[seqIdx].unk_4D++;
|
||||
if (D_8016E750[playerIdx].unk_4D < 7) {
|
||||
found = D_8016E750[playerIdx].unk_4D++;
|
||||
if (found < 8) {
|
||||
D_8016E750[seqIdx].unk_2C[found] = cmd;
|
||||
D_8016E750[seqIdx].unk_4C = 2;
|
||||
D_8016E750[playerIdx].unk_2C[found] = cmd;
|
||||
D_8016E750[playerIdx].unk_4C = 2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
D_8016E750[seqIdx].unk_4D = 0;
|
||||
D_8016E750[playerIdx].unk_4D = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -348,7 +349,7 @@ void Audio_ProcessSeqCmd(u32 cmd) {
|
|||
case 0xF:
|
||||
// change spec
|
||||
spec = cmd & 0xFF;
|
||||
D_801333CC = (cmd & 0xFF00) >> 8;
|
||||
gSfxChannelLayout = (cmd & 0xFF00) >> 8;
|
||||
oldSpec = gAudioSpecId;
|
||||
gAudioSpecId = spec;
|
||||
func_800E5F88(spec);
|
||||
|
@ -403,21 +404,21 @@ void func_800FA18C(u8 arg0, u8 arg1) {
|
|||
}
|
||||
}
|
||||
|
||||
void Audio_SetVolScale(u8 seqIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer) {
|
||||
void Audio_SetVolScale(u8 playerIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer) {
|
||||
f32 volScale;
|
||||
u8 i;
|
||||
|
||||
D_8016E750[seqIdx].volScales[scaleIdx] = targetVol & 0x7F;
|
||||
D_8016E750[playerIdx].volScales[scaleIdx] = targetVol & 0x7F;
|
||||
|
||||
if (volFadeTimer != 0) {
|
||||
D_8016E750[seqIdx].fadeVolUpdate = 1;
|
||||
D_8016E750[seqIdx].volFadeTimer = volFadeTimer;
|
||||
D_8016E750[playerIdx].fadeVolUpdate = 1;
|
||||
D_8016E750[playerIdx].volFadeTimer = volFadeTimer;
|
||||
} else {
|
||||
for (i = 0, volScale = 1.0f; i < 4; i++) {
|
||||
volScale *= D_8016E750[seqIdx].volScales[i] / 127.0f;
|
||||
volScale *= D_8016E750[playerIdx].volScales[i] / 127.0f;
|
||||
}
|
||||
|
||||
Audio_SetVolScaleNow(seqIdx, volFadeTimer, volScale);
|
||||
Audio_SetVolScaleNow(playerIdx, volFadeTimer, volScale);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -432,7 +433,7 @@ void func_800FA3DC(void) {
|
|||
u8 temp_s0_3;
|
||||
u8 temp_a3_3;
|
||||
s32 pad[3];
|
||||
u32 sp70;
|
||||
u32 dummy;
|
||||
f32 phi_f0;
|
||||
u8 phi_t0;
|
||||
u8 i;
|
||||
|
@ -441,7 +442,7 @@ void func_800FA3DC(void) {
|
|||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (D_8016E750[i].unk_260 != 0) {
|
||||
switch (func_800E5E20(&sp70)) {
|
||||
switch (func_800E5E20(&dummy)) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
|
@ -624,13 +625,13 @@ void func_800FA3DC(void) {
|
|||
break;
|
||||
case 14:
|
||||
if (temp_a3_3 & 1) {
|
||||
Audio_QueueCmdS32(0xE3000000, 0);
|
||||
Audio_QueueCmdS32(0xE3000000, SEQUENCE_TABLE);
|
||||
}
|
||||
if (temp_a3_3 & 2) {
|
||||
Audio_QueueCmdS32(0xE3000000, 1);
|
||||
Audio_QueueCmdS32(0xE3000000, FONT_TABLE);
|
||||
}
|
||||
if (temp_a3_3 & 4) {
|
||||
Audio_QueueCmdS32(0xE3000000, 2);
|
||||
Audio_QueueCmdS32(0xE3000000, SAMPLE_TABLE);
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
|
@ -653,13 +654,13 @@ u8 func_800FAD34(void) {
|
|||
if (D_80133418 == 1) {
|
||||
if (func_800E5EDC() == 1) {
|
||||
D_80133418 = 0;
|
||||
Audio_QueueCmdS8(0x46020000, D_801333CC);
|
||||
Audio_QueueCmdS8(0x46020000, gSfxChannelLayout);
|
||||
func_800F7170();
|
||||
}
|
||||
} else if (D_80133418 == 2) {
|
||||
while (func_800E5EDC() != 1) {}
|
||||
D_80133418 = 0;
|
||||
Audio_QueueCmdS8(0x46020000, D_801333CC);
|
||||
Audio_QueueCmdS8(0x46020000, gSfxChannelLayout);
|
||||
func_800F7170();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue