Audio_Effects OK and Documented (#549)

* Audio_Effects OK

* Remove duplicate

* PR Suggestion

* Small cleanup

* Small Touchup
This commit is contained in:
engineer124
2022-01-17 05:24:58 +11:00
committed by GitHub
parent 332c71c9b1
commit 9e6a6eee4c
9 changed files with 375 additions and 317 deletions
+7 -11
View File
@@ -3562,16 +3562,12 @@ void Audio_WritebackDCache(void* buf, size_t size);
// void func_801964F8(void);
// void func_801965F0(void);
// void func_801968C4(void);
// void func_80196A00(void);
// void func_80196BC8(void);
// void func_80196D20(void);
// void func_80196D7C(void);
// void func_80196DB4(void);
// void func_80196FEC(void);
// void func_80197048(void);
// void func_80197138(void);
// void func_80197164(void);
// void func_80197188(void);
void AudioEffects_SequencePlayerProcessSound(SequencePlayer* seqPlayer);
void AudioEffects_NoteVibratoUpdate(Note* note);
void AudioEffects_NoteVibratoInit(Note* note);
void AudioEffects_NotePortamentoInit(Note* note);
void AudioEffects_AdsrInit(AdsrState* adsr, AdsrEnvelope* envelope, s16* volOut);
f32 AudioEffects_AdsrUpdate(AdsrState* adsr);
// void func_801974D0(void);
// void func_80197538(void);
// void func_80197714(void);
@@ -3583,7 +3579,7 @@ void Audio_WritebackDCache(void* buf, size_t size);
// void func_80197C0C(void);
// void func_80197C8C(void);
// void func_80197D24(void);
// void func_80197D4C(void);
void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer);
// void func_80197E08(void);
// void func_80197E48(void);
// void func_80197E88(void);
+3 -127
View File
@@ -1642,10 +1642,10 @@ extern MtxF gIdentityMtxF;
// extern UNK_TYPE1 D_801D4790;
// extern UNK_TYPE1 D_801D4990;
// extern UNK_TYPE1 D_801D4B90;
extern UNK_PTR D_801D4D90;
extern s16* gWaveSamples[9];
extern UNK_PTR D_801D4D98;
extern UNK_PTR D_801D4DB0;
// extern UNK_TYPE1 D_801D4DB4;
extern f32 gBendPitchOneOctaveFrequencies[256];
// extern UNK_TYPE1 D_801D4FB4;
// extern UNK_TYPE4 D_801D51B4;
// extern UNK_TYPE4 D_801D53B4;
@@ -3623,131 +3623,7 @@ extern SoundRequest D_801FE7C0[1];
// extern UNK_TYPE1 D_80200BCC;
// extern UNK_TYPE1 D_80200BCE;
// extern UNK_TYPE1 D_80200BD0;
// extern UNK_TYPE1 D_80200C70;
// extern UNK_TYPE1 D_80200C71;
// extern UNK_TYPE1 D_80200C76;
// extern UNK_TYPE1 D_80200C78;
// extern UNK_TYPE1 D_80200C7C;
// extern UNK_TYPE1 D_80200C80;
// extern UNK_TYPE1 D_80200C92;
// extern UNK_TYPE1 D_80200C94;
// extern UNK_TYPE1 D_80200C98;
// extern UNK_TYPE1 D_80200C9A;
// extern UNK_TYPE1 D_80200C9E;
// extern UNK_TYPE1 D_80200CA0;
// extern UNK_TYPE1 D_80200CF0;
// extern UNK_TYPE1 D_80200D38;
// extern UNK_TYPE1 D_80200D70;
// extern UNK_TYPE1 D_802011F0;
// extern UNK_TYPE1 D_8020178C;
// extern UNK_TYPE1 D_802017B0;
// extern UNK_TYPE1 D_80201D68;
// extern UNK_TYPE1 D_80201D6C;
// extern UNK_TYPE1 D_802023FC;
// extern UNK_TYPE1 D_80202878;
// extern UNK_TYPE1 D_80202880;
// extern UNK_TYPE1 D_802028BC;
extern OSMesgQueue D_80202980;
// extern UNK_TYPE1 D_802029D8;
extern OSMesgQueue D_80202AB0;
extern OSMesg D_80202AC8[0x10];
extern OSMesgQueue D_80202B08;
extern OSMesg D_80202B20[0x10];
extern OSMesgQueue D_80202B60;
extern OSMesg D_80202B78[0x40];
extern OSMesgQueue D_80203278;
extern OSMesg D_80203290[1];
// extern UNK_TYPE1 D_80203294;
// extern UNK_TYPE1 D_802034C0;
// extern UNK_TYPE1 D_802034C4;
// extern UNK_TYPE1 D_802034C8;
// extern UNK_TYPE4 D_802034D0;
// extern UNK_TYPE1 D_802034D4;
// extern UNK_TYPE1 D_802034D8;
// extern UNK_TYPE1 D_802034DC;
// extern UNK_TYPE1 D_802034E8;
// extern UNK_TYPE2 D_802034F0;
// extern UNK_TYPE1 D_802034F8;
// extern UNK_TYPE1 D_802034FC;
// extern UNK_TYPE1 D_80203500;
// extern UNK_TYPE4 D_80203528;
// extern UNK_TYPE1 D_8020352C;
// extern UNK_TYPE1 D_8020352E;
// extern UNK_TYPE1 D_80203530;
// extern UNK_TYPE4 D_8020360C;
// extern UNK_TYPE1 D_80203618;
// extern UNK_TYPE1 D_8020361C;
// extern UNK_TYPE1 D_80203620;
// extern UNK_TYPE1 D_80203624;
// extern UNK_TYPE1 D_80203628;
// extern UNK_TYPE1 D_80203630;
// extern UNK_TYPE1 D_80203640;
// extern UNK_TYPE1 D_80203650;
// extern UNK_TYPE1 D_80203660;
// extern UNK_TYPE1 D_80203690;
// extern UNK_TYPE1 D_802036A0;
// extern UNK_TYPE1 D_802036B0;
// extern UNK_TYPE1 D_802036C0;
// extern UNK_TYPE1 D_802036C4;
// extern UNK_TYPE1 D_80203794;
// extern UNK_TYPE1 D_80203798;
// extern UNK_TYPE1 D_802037D0;
// extern UNK_TYPE1 D_802037D4;
// extern UNK_TYPE1 D_802038A4;
// extern UNK_TYPE1 D_802038A8;
// extern UNK_TYPE1 D_802038C2;
// extern UNK_TYPE1 D_802038CE;
// extern UNK_TYPE1 D_802038E0;
// extern UNK_TYPE1 D_802038E4;
// extern UNK_TYPE1 D_80203970;
// extern UNK_TYPE1 D_802039B4;
// extern UNK_TYPE1 D_802039B8;
// extern UNK_TYPE1 D_802039D2;
// extern UNK_TYPE1 D_802039DE;
// extern UNK_TYPE1 D_802039F0;
// extern UNK_TYPE1 D_802039FC;
// extern UNK_TYPE1 D_80203B80;
// extern UNK_TYPE1 D_80203B88;
// extern UNK_TYPE1 D_80203B90;
// extern UNK_TYPE1 D_80204590;
// extern UNK_TYPE1 D_80204594;
// extern UNK_TYPE1 D_80204598;
// extern UNK_TYPE1 D_802045A4;
// extern UNK_TYPE1 D_80204FA4;
// extern UNK_TYPE1 D_80204FA8;
// extern UNK_TYPE1 D_80204FB4;
// extern UNK_TYPE1 D_80204FB8;
// extern UNK_TYPE1 D_80204FC0;
// extern UNK_TYPE1 D_80204FCC;
// extern UNK_TYPE1 D_80204FD8;
// extern UNK_TYPE1 D_80205008;
// extern UNK_TYPE1 D_80205038;
// extern UNK_TYPE1 D_802050B9;
// extern UNK_TYPE1 D_802050C0;
// extern UNK_TYPE1 D_802050C4;
// extern UNK_TYPE4 D_802050CC;
// extern UNK_TYPE4 D_802050D0;
// extern UNK_TYPE1 D_80205228;
// extern UNK_TYPE1 D_8020522B;
// extern UNK_TYPE1 D_80205390;
// extern UNK_TYPE1 D_802053C8;
// extern UNK_TYPE1 D_802057B0;
// extern UNK_TYPE1 D_80205830;
// extern UNK_TYPE1 D_802084B0;
// extern UNK_TYPE1 D_80208530;
// extern UNK_TYPE1 D_80208598;
// extern UNK_TYPE1 D_802085A8;
// extern UNK_TYPE1 D_802085B8;
// extern UNK_TYPE1 D_802085C8;
// extern UNK_TYPE1 D_802085D8;
// extern UNK_TYPE1 D_802085F8;
// extern UNK_TYPE1 D_802085FC;
// extern UNK_TYPE1 D_80208604;
// extern UNK_TYPE1 D_8020861C;
// extern UNK_TYPE1 D_80208634;
// extern UNK_TYPE1 D_8020864C;
// extern UNK_TYPE1 D_80208650;
// extern UNK_TYPE1 D_80208654;
extern AudioContext gAudioContext; // at 0x80200C70
// extern UNK_TYPE4 D_80208E68;
// extern UNK_TYPE4 D_80208E6C;
// extern UNK_TYPE4 D_80208E70;
+9 -18
View File
@@ -11,6 +11,8 @@
#define MAX_CHANNELS_PER_BANK 3
#define AUDIO_LERPIMP(v0, v1, t) (v0 + ((v1 - v0) * t))
#define ADSR_DISABLE 0
#define ADSR_HANG -1
#define ADSR_GOTO -2
@@ -154,10 +156,10 @@ typedef struct NotePool {
// extrapolates exponentially in the wrong direction in that case, but that
// doesn't prevent seqplayer from doing it, AFAICT.
typedef struct {
/* 0x00 */ u8 mode; // bit 0x80 denotes something; the rest are an index 0-5
/* 0x02 */ u16 cur;
/* 0x04 */ u16 speed;
/* 0x08 */ f32 extent;
/* 0x0 */ u8 mode; // bit 0x80 denotes something; the rest are an index 0-5
/* 0x2 */ u16 cur;
/* 0x4 */ u16 speed;
/* 0x8 */ f32 extent;
} Portamento; // size = 0xC
typedef struct {
@@ -298,7 +300,7 @@ typedef struct {
/* 0x000 */ u8 fontDmaInProgress : 1;
/* 0x000 */ u8 recalculateVolume : 1;
/* 0x000 */ u8 stopScript : 1;
/* 0x000 */ u8 unk_0b1 : 1;
/* 0x000 */ u8 applyBend : 1;
/* 0x001 */ u8 state;
/* 0x002 */ u8 noteAllocPolicy;
/* 0x003 */ u8 muteBehavior;
@@ -324,7 +326,7 @@ typedef struct {
/* 0x028 */ f32 muteVolumeScale;
/* 0x02C */ f32 fadeVolumeScale;
/* 0x030 */ f32 appliedFadeVolume;
/* 0x034 */ f32 unk_34;
/* 0x034 */ f32 bend;
/* 0x038 */ struct SequenceChannel* channels[16];
/* 0x078 */ SeqScriptState scriptState;
/* 0x094 */ u8* shortNoteVelocityTable;
@@ -402,17 +404,6 @@ typedef struct VibratoSubStruct {
/* 0xC */ u16 vibratoDelay;
} VibratoSubStruct; // size = 0xE
typedef struct SequenceChannelSubStruct {
/* 0x0 */ u8 enabled : 1;
/* 0x0 */ u8 finished : 1;
/* 0x0 */ u8 stopScript : 1;
/* 0x0 */ u8 stopSomething2 : 1; // sets SequenceLayer.stopSomething
/* 0x0 */ u8 hasInstrument : 1;
/* 0x0 */ u8 stereoHeadsetEffects : 1;
/* 0x0 */ u8 largeNotes : 1; // notes specify duration and velocity
/* 0x0 */ u8 unused : 1;
} SequenceChannelSubStruct; // size = 0x1
// Also known as a SubTrack, according to sm64 debug strings.
typedef struct SequenceChannel {
/* 0x00 */ u8 enabled : 1;
@@ -530,7 +521,7 @@ typedef struct SequenceLayer {
/* 0x30 */ Portamento portamento;
/* 0x3C */ struct Note* note;
/* 0x40 */ f32 freqScale;
/* 0x44 */ f32 unk_34;
/* 0x44 */ f32 bend;
/* 0x48 */ f32 velocitySquare2;
/* 0x4C */ f32 velocitySquare; // not sure which one of those corresponds to the sm64 original
/* 0x50 */ f32 noteVelocity;