mirror of
https://github.com/blawar/ooot.git
synced 2024-07-02 09:03:36 +00:00
save
This commit is contained in:
parent
fa59744771
commit
450c832bdc
2
AziAudio
2
AziAudio
|
@ -1 +1 @@
|
|||
Subproject commit be5f78ee4c221a5112b2e9f9c3ffb4bea2f287c3
|
||||
Subproject commit 8c093268854512c2a09372114ae6d71228eb4749
|
|
@ -42,3 +42,75 @@
|
|||
#define POINTER_ADD(a, b) ((uintptr_t)a + (uintptr_t)b)
|
||||
#define POINTER_SUB(a, b) (MAX((uintptr_t)a, (uintptr_t)b) - MIN((uintptr_t)a, (uintptr_t)b))
|
||||
#define POINTER_SUB2(a, b) (MAX((uintptr_t)a.get(), (uintptr_t)b.get()) - MIN((uintptr_t)a.get(), (uintptr_t)b.get()))
|
||||
|
||||
struct s16be
|
||||
{
|
||||
s16be() : value(0)
|
||||
{
|
||||
}
|
||||
|
||||
s16be(s16 v) : value((s16)BE16((u16)v))
|
||||
{
|
||||
}
|
||||
|
||||
operator s16() const
|
||||
{
|
||||
return (s16)BE16((u16)value);
|
||||
}
|
||||
|
||||
s16 value;
|
||||
};
|
||||
|
||||
struct u16be
|
||||
{
|
||||
u16be() : value(0)
|
||||
{
|
||||
}
|
||||
|
||||
u16be(u16 v) : value((u16)BE16((u16)v))
|
||||
{
|
||||
}
|
||||
|
||||
operator u16() const
|
||||
{
|
||||
return (u16)BE16((u16)value);
|
||||
}
|
||||
|
||||
u16 value;
|
||||
};
|
||||
|
||||
struct s32be
|
||||
{
|
||||
s32be() : value(0)
|
||||
{
|
||||
}
|
||||
|
||||
s32be(s32 v) : value((s32)BE32((u32)v))
|
||||
{
|
||||
}
|
||||
|
||||
operator s32() const
|
||||
{
|
||||
return (s32)BE32((u32)value);
|
||||
}
|
||||
|
||||
s32 value;
|
||||
};
|
||||
|
||||
struct u32be
|
||||
{
|
||||
u32be() : value(0)
|
||||
{
|
||||
}
|
||||
|
||||
u32be(u32 v) : value((u32)BE32((u32)v))
|
||||
{
|
||||
}
|
||||
|
||||
operator u32() const
|
||||
{
|
||||
return (u32)BE32((u32)value);
|
||||
}
|
||||
|
||||
u32 value;
|
||||
};
|
||||
|
|
|
@ -115,8 +115,8 @@ struct AdsrEnvelope {
|
|||
{
|
||||
}
|
||||
|
||||
/* 0x0 */ s16 delay;
|
||||
/* 0x2 */ s16 arg;
|
||||
/* 0x0 */ s16be delay;
|
||||
/* 0x2 */ s16be arg;
|
||||
}; // size = 0x4
|
||||
|
||||
struct AdpcmLoop {
|
||||
|
@ -597,9 +597,9 @@ struct NoteSubEu {
|
|||
u8 unused : 1;
|
||||
u8 finished : 1; // ?
|
||||
u8 needsInit : 1;
|
||||
volatile u8 enabled : 1;
|
||||
u8 enabled : 1;
|
||||
#else
|
||||
volatile u8 enabled : 1;
|
||||
u8 enabled : 1;
|
||||
u8 needsInit : 1;
|
||||
u8 finished : 1; // ?
|
||||
u8 unused : 1;
|
||||
|
|
|
@ -12,39 +12,6 @@
|
|||
#include "def/audio_rsp.h"
|
||||
#include "def/audio_bank.h"
|
||||
|
||||
static std::unordered_map<AdsrEnvelope*, AdsrEnvelope*> g_envelopeMape;
|
||||
|
||||
static u32 AdsrEnvelopeBE_Length(const AdsrEnvelope* env)
|
||||
{
|
||||
u32 len = 1;
|
||||
|
||||
while(BE16(env->delay) != (u16)-1)
|
||||
{
|
||||
env++;
|
||||
len++;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static AdsrEnvelope* AdsrEnvelopeBE(AdsrEnvelope* pointer)
|
||||
{
|
||||
auto& ptr = g_envelopeMape[pointer];
|
||||
|
||||
if(!ptr)
|
||||
{
|
||||
u32 len = AdsrEnvelopeBE_Length(pointer);
|
||||
ptr = new AdsrEnvelope[len];
|
||||
|
||||
for(u32 i=0; i < len; i++)
|
||||
{
|
||||
ptr[i].delay = BE16(pointer[i].delay);
|
||||
ptr[i].arg = BE16(pointer[i].arg);
|
||||
}
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
||||
#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
|
||||
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
|
||||
#define PORTAMENTO_MODE_1 1
|
||||
|
@ -636,7 +603,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) {
|
|||
|
||||
case 0xCB:
|
||||
sp3A = AudioSeq_ScriptReadS16(state);
|
||||
layer->adsr.envelope = AdsrEnvelopeBE((AdsrEnvelope*)(seqPlayer->seqData + sp3A));
|
||||
layer->adsr.envelope = ((AdsrEnvelope*)(seqPlayer->seqData + sp3A));
|
||||
// fallthrough
|
||||
|
||||
case 0xCF:
|
||||
|
@ -784,12 +751,12 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
|
|||
freqScale2 = temp_f14;
|
||||
break;
|
||||
default:
|
||||
freqScale = temp_f2;
|
||||
freqScale2 = temp_f2;
|
||||
break;
|
||||
}
|
||||
|
||||
portamento->extent = (freqScale2 / freqScale) - 1.0f;
|
||||
|
||||
freqScale = temp_f2; portamento->extent = (freqScale2 / freqScale) - 1.0f;
|
||||
|
||||
if (PORTAMENTO_IS_SPECIAL(*portamento)) {
|
||||
speed = seqPlayer->tempo * 0x8000 / gAudioContext.tempoInternalToExternal;
|
||||
|
@ -1171,7 +1138,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
|||
break;
|
||||
case 0xDA:
|
||||
offset = (u16)parameters[0];
|
||||
channel->adsr.envelope = AdsrEnvelopeBE((AdsrEnvelope*)&seqPlayer->seqData[offset]);
|
||||
channel->adsr.envelope = ((AdsrEnvelope*)&seqPlayer->seqData[offset]);
|
||||
break;
|
||||
case 0xD9:
|
||||
command = (u8)parameters[0];
|
||||
|
@ -1382,13 +1349,13 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
|
|||
break;
|
||||
case 0xB2:
|
||||
offset = (u16)parameters[0];
|
||||
channel->unk_22 = *(u16*)(seqPlayer->seqData + (u32)(offset + scriptState->value * 2));
|
||||
channel->unk_22 = BE16(*(u16*)(seqPlayer->seqData + (u32)(offset + scriptState->value * 2)));
|
||||
break;
|
||||
case 0xB4:
|
||||
channel->dynTable = (u8 (*)[][2])&seqPlayer->seqData[channel->unk_22];
|
||||
break;
|
||||
case 0xB5:
|
||||
channel->unk_22 = ((u16*)(channel->dynTable))[scriptState->value];
|
||||
channel->unk_22 = BE16(((u16*)(channel->dynTable))[scriptState->value]);
|
||||
break;
|
||||
case 0xB6:
|
||||
scriptState->value = (*channel->dynTable)[0][scriptState->value];
|
||||
|
|
|
@ -686,7 +686,7 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSubEu, NoteSynthesisS
|
|||
s32 nTrailingSamplesToIgnore;
|
||||
s32 phi_a1_2;
|
||||
s32 frameIndex;
|
||||
s32 skipBytes;// = 0; // TODO HACK not sure why this isnt being set
|
||||
s32 skipBytes;
|
||||
s32 temp_v1_6;
|
||||
void* buf;
|
||||
s32 nSamplesToDecode;
|
||||
|
@ -699,9 +699,9 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSubEu, NoteSynthesisS
|
|||
s32 phi_s4;
|
||||
s32 nFirstFrameSamplesToIgnore;
|
||||
s32 pad2[7];
|
||||
s32 frameSize; // TODO HACK not sure why this isnt being set
|
||||
s32 frameSize;
|
||||
s32 nFramesToDecode;
|
||||
s32 skipInitialSamples; // TODO HACK not sure why this isnt being set
|
||||
s32 skipInitialSamples;
|
||||
Pointer sampleDataStart;
|
||||
u8* sampleData;
|
||||
s32 nParts;
|
||||
|
|
Loading…
Reference in New Issue
Block a user