summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorSynray <31429825+Synray@users.noreply.github.com>2020-05-14 12:25:54 -0700
committerGitHub <noreply@github.com>2020-05-14 15:25:54 -0400
commitefa9742984718cd5520be1b3264dedb76015a995 (patch)
tree45e67b7a2bfdfb35068a9e5ac3ae75dd7766242a /src/code
parent23ad9cec3328da5a152a4a93f9cce18c1239a17b (diff)
Match Audio_NoteSetVelPanReverb (#132)
Diffstat (limited to 'src/code')
-rw-r--r--src/code/audio_playback.c64
1 files changed, 29 insertions, 35 deletions
diff --git a/src/code/audio_playback.c b/src/code/audio_playback.c
index e009acb41..e62b0bb11 100644
--- a/src/code/audio_playback.c
+++ b/src/code/audio_playback.c
@@ -1,62 +1,59 @@
#include <ultra64.h>
#include <global.h>
-#ifdef NON_MATCHING
-// 630 score, primarily regalloc left. Issues seem based around the usage of pan.
-// Currently the array of pan and reverb solves a lot, but doesn't make a ton of logical sense.
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
f32 volRight, volLeft;
- // u16 unkMask = 0x7F;
- s32 stereoHeadsetEffects = note->playbackState.stereoHeadsetEffects;
- // u8 reverbT = reverb->reverb;
- Note* tNote = note;
+ s32 smallPanIndex;
+ u64 pad;
+ u8 strongLeft;
+ u8 strongRight;
+ f32 vel;
+ u8 pan;
+ u8 reverbVol;
ReverbBits sp24;
- u8 pan[2];
- f32 vel = reverb->unk_8;
- u32 temp;
+ s32 stereoHeadsetEffects = note->playbackState.stereoHeadsetEffects;
+ vel = reverb->unk_8;
- pan[1] = reverb->pan;
- pan[0] = reverb->reverb;
+ pan = reverb->pan;
+ reverbVol = reverb->reverb;
sp24 = reverb->reverbBits;
- sub->bitField0.asByte = tNote->noteSubEu.bitField0.asByte & 0xFF;
- sub->bitField1.asByte = tNote->noteSubEu.bitField1.asByte & 0xFF;
- sub->sound.samples = tNote->noteSubEu.sound.samples;
- sub->unk_06 = tNote->noteSubEu.unk_06;
+ sub->bitField0.asByte = note->noteSubEu.bitField0.asByte & 0xFF;
+ sub->bitField1.asByte = note->noteSubEu.bitField1.asByte & 0xFF;
+ sub->sound.samples = note->noteSubEu.sound.samples;
+ sub->unk_06 = note->noteSubEu.unk_06;
Audio_NoteSetResamplingRate(sub, reverb->velocity);
- pan[1] &= 0x7F;
+ pan &= 0x7F;
sub->bitField0.asBitfields.stereoStrongRight = 0;
sub->bitField0.asBitfields.stereoStrongLeft = 0;
sub->bitField0.asBitfields.stereoHeadsetEffects = sp24.stereoHeadsetEffects;
sub->bitField0.asBitfields.usesHeadsetPanEffects = sp24.usesHeadsetPanEffects;
if (stereoHeadsetEffects && gSoundMode == 1) {
- s32 smallPanIndex = pan[1] >> 1;
- if (smallPanIndex >= 0x40) {
+ smallPanIndex = pan >> 1;
+ if (smallPanIndex > 0x3f) {
smallPanIndex = 0x3f;
}
sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex];
- sub->headsetPanRight = gHeadsetPanQuantization[15 - smallPanIndex];
+ sub->headsetPanRight = gHeadsetPanQuantization[0x3f - smallPanIndex];
sub->bitField1.asBitfields.hasTwoAdpcmParts = 1;
- volLeft = gHeadsetPanVolume[pan[1]];
- volRight = gHeadsetPanVolume[127 - pan[1]];
+ volLeft = gHeadsetPanVolume[pan];
+ volRight = gHeadsetPanVolume[0x7f - pan];
} else if (stereoHeadsetEffects && gSoundMode == 0) {
- u8 strongLeft = 0;
- u8 strongRight = 0;
+ strongLeft = strongRight = 0;
sub->headsetPanRight = 0;
sub->headsetPanLeft = 0;
sub->bitField1.asBitfields.hasTwoAdpcmParts = 0;
- volLeft = gStereoPanVolume[pan[1]];
- volRight = gStereoPanVolume[127 - pan[1]];
- temp = pan[1];
- if ((s32)temp < 0x20) {
+ volLeft = gStereoPanVolume[pan];
+ volRight = gStereoPanVolume[0x7f - pan];
+ if (pan < 0x20) {
strongLeft = 1;
- } else if ((s32)(u8)temp > 0x60) {
+ } else if (pan > 0x60) {
strongRight = 1;
}
@@ -88,8 +85,8 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
} else {
sub->bitField0.asBitfields.stereoStrongRight = sp24.strongRight;
sub->bitField0.asBitfields.stereoStrongLeft = sp24.strongLeft;
- volLeft = gDefaultPanVolume[pan[1]];
- volRight = gDefaultPanVolume[127 - pan[1]];
+ volLeft = gDefaultPanVolume[pan];
+ volRight = gDefaultPanVolume[0x7f - pan];
}
vel = 0.0f > vel ? 0.0f : vel;
@@ -102,11 +99,8 @@ void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
sub->unk_14 = reverb->unk_10;
sub->unk_07 = reverb->unk_14;
sub->unk_10 = reverb->unk_16;
- sub->reverbVol = pan[1];
+ sub->reverbVol = reverbVol;
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/audio_playback/Audio_NoteSetVelPanReverb.s")
-#endif
void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput) {
f32 resamplingRate = 0.0f;