1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-10-20 13:40:02 +00:00

Match some audio functions (#896)

* cleanups

* Improve Audio_SequencePlayerProcessSequence

* cleanup

* labeling

* progress on func_800E5000

* func_800F6268

* func_800ECDF8

* Improve func_800F2464

* reorder variables

* labelling

* non-equivalent func_800EEA50

* minor doc

* func_800E6590

* minor doc

* Reformat abi.h

* Very slight improvements

* func_800DC384

* func_800E1618

* formatting

Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
zelda2774 2021-08-12 21:37:37 +02:00 committed by GitHub
commit a0d2cceeca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 1321 additions and 1813 deletions

View file

@ -1893,7 +1893,7 @@ void UCodeDisas_RegisterUCode(UCodeDisas*, s32, UCodeInfo*);
void UCodeDisas_SetCurUCode(UCodeDisas*, void*);
// ? func_800DACC0(?);
// ? func_800DB03C(?);
// ? AudioSynth_Update(?);
Acmd* AudioSynth_Update(Acmd* cmdStart, s32* cmdCnt, s16* aiStart, s32 aiBufLen);
// ? func_800DB2C0(?);
// ? func_800DB330(?);
// ? func_800DB3D8(?);
@ -2113,7 +2113,7 @@ void func_800EEA50(GfxPrint* printer);
// ? func_800F28B4(?);
// ? func_800F29FC(?);
// ? func_800F2A04(?);
void func_800F2D6C(s8*, u16 sfxId);
void func_800F2D6C(const s8* str, u16 num);
// ? func_800F2E28(?);
void func_800F3054(void);
// ? func_800F3188(?);
@ -2211,7 +2211,7 @@ void func_800F87A0(u8);
void func_800F8884(u8, Vec3f*);
void func_800F89A0(u8, Vec3f*);
void func_800F89E8(Vec3f*);
// ? func_800F9280(?);
void func_800F9280(u8 seqIdx, u8 seqId, u8 arg2, u16 fadeTimer);
void Audio_QueueSeqCmd(u32 bgmID);
u16 func_800FA0B4(u8 a0);
s32 func_800FA11C(u32, u32);

View file

@ -46,10 +46,10 @@
#define A_UNK17 23
#define A_UNK19 25
#define ACMD_SIZE 32
/*
* Audio flags
*/
#define A_INIT 0x01
#define A_CONTINUE 0x00
#define A_LOOP 0x02
@ -280,116 +280,124 @@ typedef short ENVMIX_STATE[40];
* Macros to assemble the audio command list
*/
#define aADPCMdec(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aADPCMdec(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPoleFilter(pkt, f, g, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPoleFilter(pkt, f, g, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aHiLoGain(pkt, gain, count, dmem, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_HILOGAIN, 24, 8) | _SHIFTL(gain, 16, 8) | _SHIFTL(count, 0, 16); \
_a->words.w1 = _SHIFTL(dmem, 16, 16) | _SHIFTL(a4, 0, 16); \
}
#define aHiLoGain(pkt, gain, count, dmem, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_HILOGAIN, 24, 8) | \
_SHIFTL(gain, 16, 8) | _SHIFTL(count, 0, 16)); \
_a->words.w1 = _SHIFTL(dmem, 16, 16) | _SHIFTL(a4, 0, 16); \
}
#define aUnkCmd3(pkt, a1, a2, a3) \
{ \
Acmd *_a = (Acmd *)pkt;\
\
_a->words.w0 = _SHIFTL(A_UNK3, 24, 8) | _SHIFTL(a3, 0, 16); \
_a->words.w1 = _SHIFTL(a1, 16, 16) | _SHIFTL(a2, 0, 16); \
}
#define aUnkCmd3(pkt, a1, a2, a3) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_UNK3, 24, 8) | _SHIFTL(a3, 0, 16); \
_a->words.w1 = _SHIFTL(a1, 16, 16) | _SHIFTL(a2, 0, 16); \
}
#define aUnkCmd19(pkt, a1, a2, a3, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_UNK19, 24, 8) | _SHIFTL(a1, 16, 8) | _SHIFTL(a2, 0, 16); \
_a->words.w1 = _SHIFTL(a3, 16, 16) | _SHIFTL(a4, 0, 16); \
}
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_UNK19, 24, 8) | _SHIFTL(a1, 16, 8) | \
_SHIFTL(a2, 0, 16)); \
_a->words.w1 = _SHIFTL(a3, 16, 16) | _SHIFTL(a4, 0, 16); \
}
#define aUnkCmd17(pkt, a1, a2) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_UNK17, 24, 8) | _SHIFTL(a1, 16, 8); \
_a->words.w1 = (unsigned int)(a2); \
}
#define aUnkCmd17(pkt, a1, a2) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_UNK17, 24, 8) | _SHIFTL(a1, 16, 8); \
_a->words.w1 = (unsigned int)(a2); \
}
#define aClearBuffer(pkt, d, c) \
{ \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \
_a->words.w1 = (unsigned int)(c); \
}
}
/*
#define aEnvMixer(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aEnvMixer(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
*/
extern u32 D_801304A0;
#define aEnvMixer(pkt, dmemi, count, swapLR, x0, x1, x2, x3, m) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = D_801304A0 | _SHIFTL(dmemi >> 4, 16, 8) | _SHIFTL(count, 8, 8) | \
_SHIFTL(swapLR, 4, 1) | _SHIFTL(x0, 3, 1) | _SHIFTL(x1, 2, 1) | _SHIFTL(x2, 1, 1) | _SHIFTL(x3, 0, 1); \
_a->words.w1 = (unsigned int)(m); \
}
#define aEnvMixer(pkt, dmemi, count, swapLR, x0, x1, x2, x3, m) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (D_801304A0 | _SHIFTL(dmemi >> 4, 16, 8) | \
_SHIFTL(count, 8, 8) | _SHIFTL(swapLR, 4, 1) | \
_SHIFTL(x0, 3, 1) | _SHIFTL(x1, 2, 1) | \
_SHIFTL(x2, 1, 1) | _SHIFTL(x3, 0, 1)); \
_a->words.w1 = (unsigned int)(m); \
}
/*
#define aInterleave(pkt, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aInterleave(pkt, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
*/
#define aInterleave(pkt, count, d, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8) | _SHIFTL(count >> 4, 16, 8) | _SHIFTL(d, 0, 16); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aInterleave(pkt, count, d, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_INTERLEAVE, 24, 8) | \
_SHIFTL(count >> 4, 16, 8) | _SHIFTL(d, 0, 16)); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aInterl(pkt, dmemi, dmemo, count) \
{ \
Acmd *_a = (Acmd*)pkt; \
_a->words.w0 = _SHIFTL(A_INTERL, 24, 8) | _SHIFTL(count, 0, 16); \
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
}
#define aInterl(pkt, dmemi, dmemo, count) \
{ \
Acmd *_a = (Acmd*)pkt; \
\
_a->words.w0 = (_SHIFTL(A_INTERL, 24, 8) | \
_SHIFTL(count, 0, 16)); \
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
}
/*
#define aLoadBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aLoadBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
*/
#define aLoadBuffer(pkt, s, d, c) \
@ -398,44 +406,44 @@ extern u32 D_801304A0;
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8) | \
_SHIFTL((c) >> 4, 16, 8) | _SHIFTL(d, 0, 16); \
_a->words.w1 = (unsigned int)(s); \
_a->words.w1 = (unsigned int)(s); \
}
#define aMix(pkt, f, g, i, o) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16); \
}
#define aMix(pkt, f, g, i, o) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16); \
}
#define aPan(pkt, f, d, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(d, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPan(pkt, f, d, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(d, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aResample(pkt, f, p, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(p, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aResample(pkt, f, p, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | \
_SHIFTL(f, 16, 8) | _SHIFTL(p, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
/*
#define aSaveBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSaveBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
*/
#define aSaveBuffer(pkt, s, d, c) \
@ -444,58 +452,67 @@ extern u32 D_801304A0;
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8) | \
_SHIFTL((c) >> 4, 16, 8) | _SHIFTL(s, 0, 16); \
_a->words.w1 = (unsigned int)(d); \
_a->words.w1 = (unsigned int)(d); \
}
#define aSegment(pkt, s, b) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \
_a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \
}
#define aSegment(pkt, s, b) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \
_a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \
}
#define aSetBuffer(pkt, f, i, o, c) \
{ \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(i, 0, 16)); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
}
#define aSetVolume(pkt, f, v, t, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
/* had to change this otherwise it doesn't want to match */ \
_a->words.w1 = (unsigned int)(r); /*_SHIFTL(r, 0, 16)|_SHIFTL(t, 16, 16) ;*/ \
}
#define aSetVolume(pkt, f, v, t, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
_a->words.w1 = _SHIFTL(r, 0, 16) | _SHIFTL(t, 16, 16); \
}
#define aSetLoop(pkt, a) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
_a->words.w1 = (unsigned int)(a); \
}
#define aSetVolume32(pkt, f, v, tr) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
_a->words.w1 = (unsigned int)(tr); \
}
#define aDMEMMove(pkt, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aSetLoop(pkt, a) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
_a->words.w1 = (unsigned int)(a); \
}
#define aDMEMMove(pkt, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aLoadADPCM(pkt, c, d) \
{ \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \
_a->words.w1 = (unsigned int)d; \
}
}
@ -523,28 +540,34 @@ extern u32 D_801304A0;
\
_a->words.w0 = _SHIFTL(A_FILTER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(countOrBuf, 0, 16); \
_a->words.w1 = (unsigned int)(addr); \
_a->words.w1 = (unsigned int)(addr); \
}
#define aDuplicate(pkt, count, dmemi, dmemo, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_DUPLICATE, 24, 8) | _SHIFTL(count, 16, 8) | _SHIFTL(dmemi, 0, 16); \
_a->words.w1 = _SHIFTL(dmemo, 16, 16) | _SHIFTL(a4, 0, 16); \
}
#define aDuplicate(pkt, count, dmemi, dmemo, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_DUPLICATE, 24, 8) | \
_SHIFTL(count, 16, 8) | _SHIFTL(dmemi, 0, 16)); \
_a->words.w1 = _SHIFTL(dmemo, 16, 16) | _SHIFTL(a4, 0, 16); \
}
#define aAddMixer(pkt, count, dmemi, dmemo, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_ADDMIXER, 24, 8) | _SHIFTL(count >> 4, 16, 8) | _SHIFTL(a4, 0, 16); \
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
}
#define aAddMixer(pkt, count, dmemi, dmemo, a4) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_ADDMIXER, 24, 8) | \
_SHIFTL(count >> 4, 16, 8) | _SHIFTL(a4, 0, 16)); \
_a->words.w1 = _SHIFTL(dmemi, 16, 16) | _SHIFTL(dmemo, 0, 16); \
}
#define aResampleZOH(pkt, pitch, pitchAccu) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_RESAMPLE_ZOH, 24, 8) | _SHIFTL(pitch, 0, 16); \
_a->words.w1 = _SHIFTL(pitchAccu, 0, 16); \
}
#define aResampleZOH(pkt, pitch, pitchAccu) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE_ZOH, 24, 8) | \
_SHIFTL(pitch, 0, 16)); \
_a->words.w1 = _SHIFTL(pitchAccu, 0, 16); \
}
#endif /* _ULTRA64_ABI_H_ */

View file

@ -383,7 +383,6 @@ extern u8 D_80130594[4][7];
extern u8 D_801305D0[];
//extern ? D_801305E0;
//extern ? D_801305F4;
//extern ? D_801305FF;
//extern ? D_80130600;
//extern ? D_80130604;
//extern ? D_80130608;
@ -424,7 +423,6 @@ extern u8 D_801305D0[];
//extern ? D_80130F34;
//extern ? sPlaybackState;
//extern ? D_80130F3C;
//extern ? D_80130F3E;
//extern ? sNotePlaybackTimer;
//extern ? sPlaybackNotePos;
//extern ? sStaffPlaybackPos;
@ -441,7 +439,6 @@ extern u8 D_801305D0[];
//extern ? sOcaMinigameEndPos;
//extern ? sOcarinaSongs;
//extern ? D_80131100;
//extern ? D_8013170C;
//extern ? D_80131840;
extern u8* gFrogsSongPtr; // D_80131854: pointer to a u8 array of the notes you need to play for the frogs
//extern ? D_80131858;
@ -474,27 +471,19 @@ extern OcarinaSongInfo gOcarinaSongNotes[];
//extern ? D_80131CA8;
//extern ? D_80131CAC;
//extern ? D_80131E08;
//extern ? D_80131E14;
//extern ? D_80131E20;
//extern ? D_80131E24;
//extern ? D_80131E38;
//extern ? D_80131E43;
//extern ? D_80131E59;
//extern ? D_80131E64;
//extern ? D_80131E6F;
//extern ? D_80131E7A;
//extern ? D_80131E88;
//extern ? D_80131EBC;
//extern ? D_80131EC0;
//extern ? D_80131EC4;
//extern ? D_80131EC8;
//extern ? D_80131ED0;
//extern ? D_80131ED4;
//extern ? D_80131ED8;
//extern ? sAudioScreenPrintInd;
//extern ? sAudioScreenPrintOverflow;
//extern ? D_80131EDC;
//extern ? D_80131EE0;
//extern ? D_80131EE4;
//extern ? D_80131EEE;
//extern ? D_80131EFC;
//extern ? D_80131F00;
//extern ? D_80131F04;
@ -514,11 +503,9 @@ extern OcarinaSongInfo gOcarinaSongNotes[];
//extern ? D_80131F68;
//extern ? D_80131F6C;
extern Struct_8013331C *D_8013331C[];
extern u8 D_80133340[4];
//extern ? D_80133344;
extern s32 D_8013338C;
extern UNK_TYPE D_80133390[];
extern UNK_TYPE D_80133398[];
extern char D_80133390[];
extern char D_80133398[];
extern u8 D_801333A0;
extern u8 D_801333A4;
extern SoundBankEntry* gSoundBanks[7];
@ -2988,7 +2975,6 @@ extern u8 gAudioBankTable[];
extern u8 D_80155340[];
extern u8 gSequenceTable[];
extern u8 gAudioTable[];
//extern ? D_80155C70;
extern u8 D_80155F50[];
extern u8 D_80157580[];
extern u8 D_801579A0[];
@ -3237,7 +3223,7 @@ extern u8* D_8016B738[];
//extern ? D_8016B7D8;
//extern ? D_8016B7DC;
//extern ? D_8016B7E0;
//extern ? D_8016B7E8;
//extern ? sAudioScreenPrintBuf;
//extern ? D_8016B8B0;
//extern ? D_8016B8B1;
//extern ? D_8016B8B2;
@ -3312,7 +3298,7 @@ extern AudioContext gAudioContext; // at 0x8016F180
//extern ? D_80174DB8;
//extern ? D_80174DBC;
//extern ? D_80174DC0;
extern void(*D_801755D0)(void); // not sure about arguments yet.
extern void(*D_801755D0)(void);
extern u32 __osMalloc_FreeBlockTest_Enable;
//extern ? D_80175640;
//extern ? D_80175670;

View file

@ -895,16 +895,13 @@ typedef struct {
/* 0x1D50 */ AudioSyncLoad syncLoads[2];
/* 0x1E18 */ OSPiHandle* cartHandle;
/* probably an unused PI handle for n64 disk drive */
/* 0x1E1C */ OSPiHandle* unk_1E1C;
/* 0x1E1C */ OSPiHandle* unk_1E1C;
/* 0x1E20 */ OSMesgQueue unk_1E20;
/* 0x1E38 */ OSMesg unk_1E38;
/* 0x1E38 */ char unk_1E3C[0x3C];
/* 0x1E38 */ OSMesg unk_1E38[0x10];
/* 0x1E78 */ OSMesgQueue unk_1E78;
/* 0x1E90 */ OSMesg unk_1E90;
/* 0x1E94 */ char unk_1E94[0x3C];
/* 0x1E90 */ OSMesg unk_1E90[0x10];
/* 0x1ED0 */ OSMesgQueue unk_1ED0;
/* 0x1EE8 */ OSMesg unk_1EE8;
/* 0x1EEC */ char unk_1EEC[0xFC];
/* 0x1EE8 */ OSMesg unk_1EE8[0x40];
/* 0x1FE8 */ OSIoMesg sampIoReq[1]; // unknown size
/* 0x2000 */ char unk_2000[0x5E8];
/* 0x25E8 */ OSMesgQueue unk_25E8;
@ -943,8 +940,8 @@ typedef struct {
/* 0x28A0 */ s32 sampleIoReqIdx;
/* 0x28A4 */ s32 rspTaskIdx;
/* 0x28A8 */ s32 curAIBufIdx;
/* 0x28AC */ u64* abiCmdBufs[2];
/* 0x28B4 */ u64* curAbiCmdBuf;
/* 0x28AC */ Acmd* abiCmdBufs[2];
/* 0x28B4 */ Acmd* curAbiCmdBuf;
/* 0x28B8 */ AudioTask* currTask;
/* 0x28BC */ char unk_28BC[0x4];
/* 0x28C0 */ AudioTask rspTask[2];
@ -977,7 +974,7 @@ typedef struct {
/* 0x342C */ AudioPoolSplit3 temporaryCommonPoolSplit;
/* 0x3438 */ u8 audioTableLoadStatus[0x30];
/* 0x3468 */ u8 bankLoadStatus[0x30];
/* 0x3498 */ u8 seqLoadstatus[0x80];
/* 0x3498 */ u8 seqLoadStatus[0x80];
/* 0x3518 */ volatile u8 resetStatus;
/* 0x3519 */ u8 audioResetPresetIdToLoad;
/* 0x351C */ s32 audioResetFadeOutFramesLeft;
@ -990,7 +987,7 @@ typedef struct {
/* 0x5AB0 */ SequenceChannel sequenceChannelNone;
/* 0x5B84 */ s32 noteSubEuOffset;
/* 0x5B88 */ AudioListItem layerFreeList;
/* 0x5B98 */ NotePool noteFreeLists;
/* 0x5B98 */ NotePool noteFreeLists;
/* 0x5BD8 */ u8 cmdWrPos;
/* 0x5BD9 */ u8 cmdRdPos;
/* 0x5BDA */ u8 cmdQueueFinished;
@ -1056,7 +1053,7 @@ typedef struct {
/* 0x002C */ u32 unk_2C[8];
/* 0x004C */ u8 unk_4C;
/* 0x004D */ u8 unk_4D;
/* 0x004E */ u8 unk_4E;
/* 0x004E */ u8 unk_4E;
/* 0x004F */ char unk_4F;
/* 0x0050 */ unk_50_s unk_50[0x10];
/* 0x0250 */ u16 unk_250;
@ -1090,7 +1087,7 @@ typedef struct {
/* 0x18 */ s8* unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ u32 unk_20;
/* 0x24 */ u8 unk_24;
/* 0x24 */ u8 unk_24;
/* 0x26 */ u16 unk_26;
/* 0x28 */ u16 unk_28; // "flag"
/* 0x2A */ u8 unk_2A;
@ -1103,7 +1100,7 @@ typedef struct {
/*
* SFX IDs
*
*
* index 0000000111111111 observed in audio code
* & 200 0000001000000000 single bit
* & 400 0000010000000000 single bit
@ -1113,10 +1110,9 @@ typedef struct {
* & C00 0000110000000000 2 bits, observed in audio code
* & E00 0000111000000000 all 3 bits
* bank 1111000000000000 observed in audio code
*
*/
#define SFX_BANK_SHIFT(sfxId) (((sfxId) >> 0xC) & 0xFF)
#define SFX_BANK_SHIFT(sfxId) (((sfxId) >> 12) & 0xFF)
#define SFX_BANK_MASK(sfxId) ((sfxId) & 0xF000)