mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-03 06:24:30 +00:00
Audio WIP (#836)
* being code_800EC960 * wip * wip * more audio progress * migrate data in code_800E11F0 * wip * make ok * remove asm * wip * move some variables outside of gAudioContext to the AudioContext structure due to the size used in func_800E3094 * more progress * wip * wip * split code_800E11F0 * migrate rodata in code_800E11F0 * match functions that couldn't because of data issues * move code_800E4FE0 asm files * wip * more wip * fix global functions, and forward declarations * wip * wip * wip * ocarina wip * match a couple functions * some progress * separate some bss * match func_800EDA3C * some matching * more matches * migrate audio rodata * some matches * more matchess * start on synthesis * work on synthesis * fix function declaration * Merge branch 'master' into audio * match a few more functions * wip * wip * more matching, rename Audio_SetBGM to Audio_QueueSeqCmd * name several audio functions, and audiocontext members * more naming, rename code_800E11F0 to audio_load, code_800DAAC0 to audio_synthesis * audio wip * match a few more functions. * wip * add missing NON_MATCHING directive * wip * some matching, data reogranization * match cursed function * wip * wip * formatting * remove prefix from struct memebers * missed function rename * review Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
parent
cc9a04feb4
commit
d1a5ea5110
429 changed files with 9047 additions and 17038 deletions
|
@ -1893,7 +1893,7 @@ void UCodeDisas_RegisterUCode(UCodeDisas*, s32, UCodeInfo*);
|
|||
void UCodeDisas_SetCurUCode(UCodeDisas*, void*);
|
||||
// ? func_800DACC0(?);
|
||||
// ? func_800DB03C(?);
|
||||
// ? func_800DB0C4(?);
|
||||
// ? AudioSynth_Update(?);
|
||||
// ? func_800DB2C0(?);
|
||||
// ? func_800DB330(?);
|
||||
// ? func_800DB3D8(?);
|
||||
|
@ -1905,24 +1905,24 @@ void UCodeDisas_SetCurUCode(UCodeDisas*, void*);
|
|||
// ? func_800DBAE8(?);
|
||||
// ? func_800DBB9C(?);
|
||||
// ? func_800DBBD4(?);
|
||||
// ? func_800DBC20(?);
|
||||
// ? func_800DBC64(?);
|
||||
// ? func_800DBCB0(?);
|
||||
// ? AudioSynth_SetBuffer(?);
|
||||
// ? AudioSynth_DMemMove(?);
|
||||
// ? AudioSynth_InterL(?);
|
||||
// ? func_800DBCD4(?);
|
||||
// ? func_800DBD10(?);
|
||||
// ? func_800DBD38(?);
|
||||
// ? func_800DBD60(?);
|
||||
// ? func_800DBD94(?);
|
||||
// ? func_800DBDB0(?);
|
||||
// ? func_800DBDE4(?);
|
||||
// ? func_800DBE38(?);
|
||||
// ? func_800DBE74(?);
|
||||
// ? func_800DBE98(?);
|
||||
// ? AudioSynth_SaveBuffer(?);
|
||||
// ? AudioSynth_EnvSetup2(?);
|
||||
// ? AudioSynth_UnkCmd17(?);
|
||||
// ? AudioSynth_HiLoGain(?);
|
||||
// ? AudioSynth_UnkCmd19(?);
|
||||
// ? AudioSynth_UnkCmd3(?);
|
||||
// ? AudioSynth_SetFilter(?);
|
||||
// ? AudioSynth_SetFilterCount(?);
|
||||
// ? func_800DBEB0(?);
|
||||
// ? func_800DBF5C(?);
|
||||
// ? func_800DC008(?);
|
||||
// ? func_800DC074(?);
|
||||
// ? func_800DC0E0(?);
|
||||
// ? AudioSynth_LoadRingBuffer(?);
|
||||
// ? AudioSynth_SaveRingBuffer(?);
|
||||
// ? AudioSynth_SaveBuffer(?);
|
||||
// ? func_800DC124(?);
|
||||
// ? func_800DC164(?);
|
||||
// ? func_800DC1D8(?);
|
||||
|
@ -1963,9 +1963,9 @@ void func_800DF688(s16* arg0, s32 arg1, s32 arg2);
|
|||
void func_800DF7C4(void);
|
||||
void func_800DF888(void);
|
||||
s32 Audio_ResetStep(void);
|
||||
void func_800DFBF8(void);
|
||||
void Audio_InitHeap(void);
|
||||
void* func_800E04E8(s32 poolIdx, s32 id);
|
||||
// ? func_800E0540(?);
|
||||
void* func_800E0540(s32 poolIdx, s32 id, u32 size);
|
||||
void* func_800E05C4(u32 size, s32 arg1, void* arg2, s8 arg3, s32 arg4);
|
||||
void func_800E0634(u32 arg0, u32 arg1);
|
||||
UnkHeapEntry* func_800E06CC(u32 size);
|
||||
|
@ -1979,103 +1979,49 @@ void func_800E0E6C(s32 id);
|
|||
void func_800E0E90(s32 id);
|
||||
void func_800E0EB4(s32 arg0, s32 id);
|
||||
void func_800E1148(void);
|
||||
// ? func_800E11F0(?);
|
||||
// ? func_800E12DC(?);
|
||||
void func_800E11F0(void);
|
||||
s32 func_800E12DC(s32 arg0, s32 arg1, s32 arg2, u8* arg3, s32 arg4);
|
||||
void func_800E1618(s32 arg0);
|
||||
s32 Audio_IsBankLoadComplete(s32 bankId);
|
||||
s32 Audio_IsSeqLoadComplete(s32 seqId);
|
||||
void Audio_SetBankLoadStatus(s32 bankId, u8 status);
|
||||
void Audio_SetSeqLoadStatus(s32 seqId, u8 status);
|
||||
// ? func_800E1A78(?);
|
||||
// ? func_800E1AD8(?);
|
||||
// ? func_800E1B08(?);
|
||||
// ? func_800E1B68(?);
|
||||
// ? func_800E1C18(?);
|
||||
// ? func_800E1C78(?);
|
||||
// ? func_800E1D64(?);
|
||||
// ? func_800E1E34(?);
|
||||
// ? func_800E1E6C(?);
|
||||
// ? func_800E1EB0(?);
|
||||
// ? func_800E1EF4(?);
|
||||
// ? func_800E1F38(?);
|
||||
// ? func_800E1F7C(?);
|
||||
// ? func_800E202C(?);
|
||||
void func_800E20D4(s32, s32, s32);
|
||||
// ? func_800E2124(?);
|
||||
// ? func_800E217C(?);
|
||||
// ? func_800E22C4(?);
|
||||
// ? func_800E2318(?);
|
||||
// ? func_800E2338(?);
|
||||
// ? func_800E2454(?);
|
||||
// ? func_800E2558(?);
|
||||
// ? func_800E2768(?);
|
||||
// ? func_800E27A4(?);
|
||||
// ? func_800E27F8(?);
|
||||
// ? func_800E283C(?);
|
||||
// ? func_800E2AA8(?);
|
||||
// ? func_800E2BCC(?);
|
||||
// ? func_800E2BE0(?);
|
||||
// ? func_800E2CE0(?);
|
||||
// ? func_800E2FEC(?);
|
||||
void Audio_SetBankLoadStatus(s32 bankId, s32 status);
|
||||
void Audio_SetSeqLoadStatus(s32 seqId, s32 status);
|
||||
void func_800E1C18(s32 channelIdx, s32 arg1);
|
||||
s32 func_800E1D64(s32 arg0, s32 arg1, s32 arg2);
|
||||
void Audio_AudioSeqAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
void Audio_AudioTableAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
void Audio_AudioBankAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
u8* func_800E1F38(s32 arg0, u32* arg1);
|
||||
void func_800E1F7C(s32 arg0);
|
||||
s32 func_800E20D4(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
s32 func_800E2124(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
void Audio_ProcessLoads(s32 resetStatus);
|
||||
void func_800E301C(void* callback);
|
||||
// ? func_800E3034(?);
|
||||
// ? func_800E3094(?);
|
||||
void func_800E3400(void);
|
||||
// ? func_800E3414(?);
|
||||
// ? func_800E35E0(?);
|
||||
// ? func_800E3678(?);
|
||||
// ? func_800E36EC(?);
|
||||
// ? func_800E3874(?);
|
||||
// ? func_800E38F8(?);
|
||||
void func_800E390C(s32, void*, void*);
|
||||
void func_800E3A14(void);
|
||||
// ? func_800E3A44(?);
|
||||
// ? func_800E3AC8(?);
|
||||
// ? func_800E3BEC(?);
|
||||
// ? func_800E3D10(?);
|
||||
// ? func_800E3D1C(?);
|
||||
// ? func_800E3E58(?);
|
||||
// ? func_800E3FB4(?);
|
||||
// ? func_800E4044(?);
|
||||
// ? func_800E4058(?);
|
||||
// ? func_800E4198(?);
|
||||
// ? func_800E4590(?);
|
||||
// ? func_800E4744(?);
|
||||
// ? func_800E48C0(?);
|
||||
// ? func_800E4918(?);
|
||||
void Audio_ContextInit(void* heap, u32 heapSize);
|
||||
void Audio_SyncLoadsInit(void);
|
||||
s32 Audio_SyncLoadSample(s32 arg0, s32 arg1, u8* arg2);
|
||||
s32 Audio_SyncLoadSeq(s32 seqIdx, u8* ramAddr, u8* arg2);
|
||||
void Audio_AsyncLoadReqInit(void);
|
||||
void func_800E4D94(void);
|
||||
void func_800E4EEC(u32, u32, s8*);
|
||||
// ? func_800E4F58(?);
|
||||
// ? func_800E4EEC(?);
|
||||
void func_800E4F58(void);
|
||||
void func_800E4FB0(void);
|
||||
Sub_AudioMgr_18* func_800E4FE0(void);
|
||||
// ? func_800E5000(?);
|
||||
// ? func_800E5584(?);
|
||||
// ? func_800E5958(?);
|
||||
// ? func_800E59AC(?);
|
||||
// ? func_800E59F4(?);
|
||||
// ? func_800E5A8C(?);
|
||||
// ? func_800E5AD8(?);
|
||||
// ? func_800E5AFC(?);
|
||||
void func_800E5B20(u32, s8);
|
||||
// ? func_800E5B50(?);
|
||||
// ? func_800E5B80(?);
|
||||
// ? func_800E5C10(?);
|
||||
// ? func_800E5C28(?);
|
||||
// ? func_800E5D6C(?);
|
||||
// ? func_800E5E20(?);
|
||||
// ? func_800E5E84(?);
|
||||
// ? func_800E5EDC(?);
|
||||
// ? func_800E5F34(?);
|
||||
// ? func_800E5F88(?);
|
||||
// ? func_800E6024(?);
|
||||
// ? func_800E6128(?);
|
||||
// ? func_800E6300(?);
|
||||
// ? func_800E6680(?);
|
||||
// ? func_800E66C0(?);
|
||||
s32 Audio_NextRandom(void);
|
||||
// ? func_800E6818(?);
|
||||
// ? func_800E6840(?);
|
||||
void func_800E6880(void* mem, s32 size);
|
||||
AudioTask* func_800E4FE0(void);
|
||||
void Audio_QueueCmdF32(u32 arg0, f32 arg1);
|
||||
void Audio_QueueCmdS32(u32 arg0, s32 arg1);
|
||||
void Audio_QueueCmdS8(u32 arg0, s8 arg1);
|
||||
void Audio_QueueCmdU16(u32 arg0, u16 arg1);
|
||||
s32 Audio_ScheduleProcessCmds(void);
|
||||
u32 func_800E5E20(u32* arg0);
|
||||
u8* func_800E5E84(s32 arg0, u32* arg1);
|
||||
s32 func_800E5EDC(void);
|
||||
s32 func_800E5F88(u32 arg0);
|
||||
void Audio_PreNMIInternal(void);
|
||||
s32 func_800E6680(void);
|
||||
u32 Audio_NextRandom(void);
|
||||
void Audio_InitMesgQueues(void);
|
||||
void Audio_osInvalDCache(void* buf, s32 size);
|
||||
void Audio_osWritebackDCache(void* mem, s32 size);
|
||||
s32 osAiSetNextBuffer(void*, u32);
|
||||
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb);
|
||||
void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput);
|
||||
|
@ -2128,10 +2074,10 @@ void Audio_ProcessSequence(SequencePlayer* seqPlayer);
|
|||
void Audio_ResetSequencePlayer(SequencePlayer* seqPlayer);
|
||||
void func_800EC734(s32 seqPlayerIdx);
|
||||
void Audio_InitSequencePlayers(void);
|
||||
// ? func_800ECA00(?);
|
||||
// ? func_800ECA60(?);
|
||||
// ? Audio_GetOcaInput(?);
|
||||
// ? Audio_OcaAdjStick(?);
|
||||
// ? func_800ECAF0(?);
|
||||
// ? func_800ECB34(?);
|
||||
// ? Audio_OcaMapNoteValue(?);
|
||||
// ? func_800ECB7C(?);
|
||||
void func_800ECC04(u16);
|
||||
// ? func_800ECDBC(?);
|
||||
|
@ -2147,8 +2093,8 @@ void func_800ED93C(s8 songIdx, s8 arg1);
|
|||
// ? func_800EE2D4(?);
|
||||
// ? func_800EE318(?);
|
||||
// ? func_800EE3C8(?);
|
||||
UnkAudioStruct* func_800EE3D4(void);
|
||||
UnkAudioStruct* func_800EE3F8(void);
|
||||
OcarinaStaff* func_800EE3D4(void);
|
||||
OcarinaStaff* Audio_OcaGetDisplayStaff(void);
|
||||
// ? func_800EE404(?);
|
||||
// ? func_800EE57C(?);
|
||||
// ? func_800EE5EC(?);
|
||||
|
@ -2167,7 +2113,7 @@ void func_800EEA50(GfxPrint* printer);
|
|||
// ? func_800F28B4(?);
|
||||
// ? func_800F29FC(?);
|
||||
// ? func_800F2A04(?);
|
||||
void func_800F2D6C(u8*, u16 sfxId);
|
||||
void func_800F2D6C(s8*, u16 sfxId);
|
||||
// ? func_800F2E28(?);
|
||||
void func_800F3054(void);
|
||||
// ? func_800F3188(?);
|
||||
|
@ -2184,17 +2130,19 @@ void func_800F4010(Vec3f*, u16 sfxId, f32);
|
|||
void func_800F41E0(Vec3f*, u16 sfxId, u8);
|
||||
void func_800F4138(Vec3f*, u16 sfxId, f32);
|
||||
void func_800F4190(Vec3f*, u16 sfxId);
|
||||
void func_800F436C(Vec3f* pos, u16 sfxId, f32 arg2);
|
||||
void func_800F4414(Vec3f* pos, u16 sfxId, f32);
|
||||
void func_800F44EC(s8 arg0, s8 arg1);
|
||||
void func_800F4524(Vec3f* arg0, u16 arg1, s8 arg2);
|
||||
void func_800F4254(Vec3f* pos, u8 arg1);
|
||||
void func_800F436C(Vec3f*, u16 sfxId, f32 arg2);
|
||||
void func_800F4414(Vec3f*, u16 sfxId, f32 arg2);
|
||||
void func_800F44EC(UNK_TYPE arg0, UNK_TYPE arg1);
|
||||
void func_800F4524(Vec3f*, u16 sfxId, u8);
|
||||
void func_800F4634(Vec3f*, f32);
|
||||
void func_800F46E0(Vec3f* pos, f32 arg0);
|
||||
// ? func_800F4784(?);
|
||||
void func_800F47BC(void);
|
||||
void func_800F47FC(void);
|
||||
void func_800F483C(UNK_TYPE arg0, UNK_TYPE arg1);
|
||||
void func_800F483C(u8 arg0, u8 arg1);
|
||||
void func_800F4870(u8);
|
||||
// ? func_800F491C(?);
|
||||
void func_800F4A54(u8);
|
||||
|
@ -2203,20 +2151,20 @@ void func_800F4BF4(Vec3f*, u16 sfxId, s8);
|
|||
void func_800F4C58(Vec3f*, u16 sfxId, u8);
|
||||
void func_800F4E30(Vec3f*, f32);
|
||||
// ? func_800F50CC(?);
|
||||
void func_800F50EC(Vec3f*);
|
||||
void* func_800F50EC(Vec3f*);
|
||||
// ? func_800F510C(?);
|
||||
void func_800F52A0(Vec3f*, u16, u16);
|
||||
void func_800F5504();
|
||||
// ? func_800F5510(?);
|
||||
// ? func_800F5550(?);
|
||||
// ? func_800F56A8(?);
|
||||
void func_800F574C(f32 arg0, u8 arg2);
|
||||
void func_800F5718(void);
|
||||
void func_800F574C(f32 arg0, UNK_TYPE arg2);
|
||||
void func_800F5918(void);
|
||||
void func_800F595C(u16);
|
||||
void func_800F59E8(u16);
|
||||
s32 func_800F5A58(s32, GlobalContext*);
|
||||
void func_800F5ACC(u32 bgmID);
|
||||
s32 func_800F5A58(u8);
|
||||
void func_800F5ACC(u16 bgmID);
|
||||
void func_800F5B58(void);
|
||||
void func_800F5BF0(u8 arg0);
|
||||
void func_800F5C64(u16);
|
||||
|
@ -2225,10 +2173,8 @@ void func_800F5C2C(void);
|
|||
// ? func_800F5E18(?);
|
||||
void func_800F5E90(u8);
|
||||
void func_800F6114(f32);
|
||||
void func_800F6268(f32, UNK_TYPE);
|
||||
void func_800F6584(UNK_TYPE);
|
||||
void func_800F64E0(u8);
|
||||
void func_800F6584(UNK_TYPE);
|
||||
void func_800F6268(f32, u16);
|
||||
void func_800F64E0(u8 arg0);
|
||||
void func_800F66C0(s8 echo);
|
||||
void func_800F66DC(s8);
|
||||
void func_800F6700(s8 outputMode);
|
||||
|
@ -2238,22 +2184,22 @@ void func_800F68BC(s8);
|
|||
// ? func_800F68D4(?);
|
||||
// ? func_800F691C(?);
|
||||
void func_800F6964(u16);
|
||||
void func_800F6AB0(u8);
|
||||
// ? func_800F6B68(?);
|
||||
void func_800F6AB0(u16);
|
||||
// ? Audio_DisableAllSeq(?);
|
||||
// ? func_800F6BB8(?);
|
||||
void func_800F6C14();
|
||||
void Audio_PreNMI();
|
||||
// ? func_800F6C34(?);
|
||||
void func_800F6D58(u8, u8, u8);
|
||||
// ? func_800F6E7C(?);
|
||||
void func_800F6FB4(u8);
|
||||
void func_800F70F8();
|
||||
void func_800F711C();
|
||||
// ? func_800F7170(?);
|
||||
void func_800F7170(void);
|
||||
// ? func_800F71BC(?);
|
||||
void func_800F7260(u16);
|
||||
void func_800F72B8(u8);
|
||||
void func_800F731C(u8);
|
||||
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* a1, u8 a2, f32* a3, f32* a4, f32* a5);
|
||||
void Audio_QueueSeqCmdMute(u8);
|
||||
void Audio_ClearBGMMute(u8);
|
||||
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* a1, u8 a2, f32* a3, f32* a4, s8* a5);
|
||||
// ? func_800F74E0(?);
|
||||
void func_800F7680(void);
|
||||
void func_800F7B54(u8, u8);
|
||||
|
@ -2263,25 +2209,25 @@ void func_800F87A0(u8);
|
|||
void func_800F8884(u8, Vec3f*);
|
||||
void func_800F89A0(u8, Vec3f*);
|
||||
void func_800F89E8(Vec3f*);
|
||||
// ? func_800F9280(?);
|
||||
void Audio_QueueSeqCmd(u32 bgmID);
|
||||
u16 func_800FA0B4(u8 a0);
|
||||
s32 func_800FA11C(u32, u32);
|
||||
void func_800F8A44(Vec3f* pos, u16 sfxId);
|
||||
void func_800F8BA0(u8, u16);
|
||||
void func_800F8D04(u32 sfxId);
|
||||
void Audio_StopSfx(u32 sfxId);
|
||||
void func_800F8E3C(void);
|
||||
void func_800F8EA0(u8, u8, u16);
|
||||
void func_800F8F34(u8);
|
||||
void func_800F8F88(void);
|
||||
u8 func_800F8FF4(u32 sfxId);
|
||||
void func_800F905C(void);
|
||||
// ? func_800F9280(?);
|
||||
void func_800F9474(u8, u16);
|
||||
void func_800F94FC(u32);
|
||||
void Audio_SetBGM(u32 bgmId);
|
||||
void func_800FA034(void);
|
||||
u16 func_800FA0B4(u8 a0);
|
||||
s32 func_800FA11C(u32, s32);
|
||||
void Audio_ProcessSeqCmd(u32);
|
||||
void Audio_ProcessSeqCmds(void);
|
||||
void func_800FA174(u8);
|
||||
void func_800FA18C(u8, u8);
|
||||
void func_800FA240(u8, u8, u8, u8);
|
||||
void Audio_SetVolScale(u8, u8, u8, u8);
|
||||
void func_800FA3DC(void);
|
||||
u8 func_800FAD34(void);
|
||||
void func_800FADF8(void);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define _ULTRA64_ABI_H_
|
||||
|
||||
/* Audio commands: */
|
||||
/*
|
||||
#define A_SPNOOP 0
|
||||
#define A_ADPCM 1
|
||||
#define A_CLEARBUFF 2
|
||||
|
@ -18,7 +19,32 @@
|
|||
#define A_INTERLEAVE 13
|
||||
#define A_POLEF 14
|
||||
#define A_SETLOOP 15
|
||||
*/
|
||||
|
||||
#define A_SPNOOP 0
|
||||
#define A_ADPCM 1
|
||||
#define A_CLEARBUFF 2
|
||||
#define A_UNK3 3
|
||||
#define A_ADDMIXER 4
|
||||
#define A_RESAMPLE 5
|
||||
#define A_RESAMPLE_ZOH 6
|
||||
#define A_FILTER 7
|
||||
#define A_SETBUFF 8
|
||||
#define A_DUPLICATE 9
|
||||
#define A_DMEMMOVE 10
|
||||
#define A_LOADADPCM 11
|
||||
#define A_MIXER 12
|
||||
#define A_INTERLEAVE 13
|
||||
#define A_HILOGAIN 14
|
||||
#define A_SETLOOP 15
|
||||
#define A_INTERL 17
|
||||
#define A_ENVSETUP1 18
|
||||
#define A_ENVMIXER 19
|
||||
#define A_LOADBUFF 20
|
||||
#define A_SAVEBUFF 21
|
||||
#define A_ENVSETUP2 22
|
||||
#define A_UNK17 23
|
||||
#define A_UNK19 25
|
||||
#define ACMD_SIZE 32
|
||||
/*
|
||||
* Audio flags
|
||||
|
@ -271,6 +297,38 @@ typedef short ENVMIX_STATE[40];
|
|||
_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 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); \
|
||||
}
|
||||
|
||||
#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; \
|
||||
|
@ -279,6 +337,7 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = (unsigned int)(c); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aEnvMixer(pkt, f, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
|
@ -286,7 +345,19 @@ typedef short ENVMIX_STATE[40];
|
|||
_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 aInterleave(pkt, l, r) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
|
@ -294,7 +365,24 @@ typedef short ENVMIX_STATE[40];
|
|||
_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 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; \
|
||||
|
@ -302,6 +390,16 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
*/
|
||||
|
||||
#define aLoadBuffer(pkt, s, d, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8) | \
|
||||
_SHIFTL((c) >> 4, 16, 8) | _SHIFTL(d, 0, 16); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
|
||||
#define aMix(pkt, f, g, i, o) \
|
||||
{ \
|
||||
|
@ -330,6 +428,7 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
#define aSaveBuffer(pkt, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
|
@ -337,6 +436,16 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
|
||||
_a->words.w1 = (unsigned int)(s); \
|
||||
}
|
||||
*/
|
||||
|
||||
#define aSaveBuffer(pkt, s, d, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8) | \
|
||||
_SHIFTL((c) >> 4, 16, 8) | _SHIFTL(s, 0, 16); \
|
||||
_a->words.w1 = (unsigned int)(d); \
|
||||
}
|
||||
|
||||
#define aSegment(pkt, s, b) \
|
||||
{ \
|
||||
|
@ -352,7 +461,7 @@ typedef short ENVMIX_STATE[40];
|
|||
\
|
||||
_a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \
|
||||
_SHIFTL(i, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(c, 0, 16) | _SHIFTL(o, 16, 16); \
|
||||
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
|
||||
}
|
||||
|
||||
#define aSetVolume(pkt, f, v, t, r) \
|
||||
|
@ -388,4 +497,54 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = (unsigned int)d; \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define aEnvSetup1(pkt, a, b, c, d) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_ENVSETUP1, 24, 8) | \
|
||||
_SHIFTL(a, 16, 8) | _SHIFTL(b, 0, 16)); \
|
||||
_a->words.w1 = _SHIFTL(c, 16, 16) | _SHIFTL(d, 0, 16); \
|
||||
}
|
||||
|
||||
#define aEnvSetup2(pkt, volLeft, volRight) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_ENVSETUP2, 24, 8); \
|
||||
_a->words.w1 = _SHIFTL(volLeft, 16, 16) | \
|
||||
_SHIFTL(volRight, 0, 16); \
|
||||
}
|
||||
|
||||
#define aFilter(pkt, f, countOrBuf, addr) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_FILTER, 24, 8) | _SHIFTL(f, 16, 8) | \
|
||||
_SHIFTL(countOrBuf, 0, 16); \
|
||||
_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 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); \
|
||||
}
|
||||
|
||||
#endif /* _ULTRA64_ABI_H_ */
|
||||
|
|
|
@ -97,6 +97,9 @@ typedef struct {
|
|||
#define OS_VI_PAL_HPN2 26
|
||||
#define OS_VI_PAL_HPF2 27
|
||||
|
||||
#define OS_TV_PAL 0
|
||||
#define OS_TV_NTSC 1
|
||||
#define OS_TV_MPAL 2
|
||||
#define OS_VI_UNK28 28
|
||||
|
||||
#endif
|
||||
|
|
|
@ -340,7 +340,7 @@ extern s32 gDebugArenaLogSeverity;
|
|||
//extern ? D_8012DDDC;
|
||||
//extern ? sUCodeDisasModeHMacros;
|
||||
//extern ? sUCodeDisasModeLMacros;
|
||||
extern s16* gWaveSamples[6];
|
||||
extern s16* gWaveSamples[9];
|
||||
extern f32 gPitchBendFrequencyScale[256];
|
||||
//extern ? D_8012F098;
|
||||
//extern ? D_8012F0B0;
|
||||
|
@ -366,14 +366,8 @@ extern s16 D_80130328[];
|
|||
//extern ? D_801304A0;
|
||||
//extern ? D_801304AC;
|
||||
//extern ? D_801304C0;
|
||||
//extern ? D_801304D0;
|
||||
//extern ? D_801304D8;
|
||||
//extern ? D_801304DC;
|
||||
//extern ? D_801304E0;
|
||||
//extern ? D_801304E4;
|
||||
extern s32 gAudioContextInitalized;
|
||||
//extern ? D_801304E8;
|
||||
//extern ? D_801304EC;
|
||||
//extern ? D_801304F0;
|
||||
//extern ? D_80130500;
|
||||
extern f32 D_80130510;
|
||||
extern s32 D_80130514;
|
||||
|
@ -386,7 +380,7 @@ extern u8 D_80130594[4][7];
|
|||
//extern ? D_801305BC;
|
||||
//extern ? D_801305C0;
|
||||
//extern ? D_801305CC;
|
||||
//extern ? D_801305E0;
|
||||
//extern ? sPrevChargeLevel;
|
||||
//extern ? D_801305F4;
|
||||
//extern ? D_801305FF;
|
||||
//extern ? D_80130600;
|
||||
|
@ -412,45 +406,45 @@ extern u8 D_80130594[4][7];
|
|||
//extern ? D_80130654;
|
||||
//extern ? D_80130658;
|
||||
//extern ? D_801306DC;
|
||||
//extern ? D_80130EFC;
|
||||
//extern ? D_80130F00;
|
||||
//extern ? D_80130F04;
|
||||
//extern ? D_80130F08;
|
||||
//extern ? D_80130F0C;
|
||||
//extern ? sOcarinaAllowedBtnMask;
|
||||
//extern ? sOcarinaABtnMap;
|
||||
//extern ? sOcarinaCUPBtnMap;
|
||||
//extern ? sOcarinaCDownBtnMap;
|
||||
//extern ? sOcarinaInpEnabled;
|
||||
//extern ? D_80130F10;
|
||||
//extern ? D_80130F14;
|
||||
//extern ? D_80130F18;
|
||||
//extern ? D_80130F1C;
|
||||
//extern ? D_80130F20;
|
||||
//extern ? sCurOcarinaBtnVal;
|
||||
//extern ? sPrevOcarinaNoteVal;
|
||||
//extern ? sCurOcarinaBtnIdx;
|
||||
//extern ? sLearnSongLastBtn;
|
||||
//extern ? D_80130F24;
|
||||
//extern ? D_80130F28;
|
||||
//extern ? D_80130F2C;
|
||||
//extern ? D_80130F30;
|
||||
//extern ? D_80130F34;
|
||||
//extern ? D_80130F38;
|
||||
//extern ? sPlaybackState;
|
||||
//extern ? D_80130F3C;
|
||||
//extern ? D_80130F3E;
|
||||
//extern ? D_80130F40;
|
||||
//extern ? D_80130F44;
|
||||
//extern ? D_80130F48;
|
||||
//extern ? sNotePlaybackTimer;
|
||||
//extern ? sPlaybackNotePos;
|
||||
//extern ? sStaffPlaybackPos;
|
||||
//extern ? D_80130F4C;
|
||||
//extern ? D_80130F50;
|
||||
//extern ? D_80130F54;
|
||||
//extern ? D_80130F58;
|
||||
//extern ? D_80130F5C;
|
||||
//extern ? D_80130F60;
|
||||
//extern ? D_80130F64;
|
||||
//extern ? sDisplayedNoteValue;
|
||||
//extern ? sNotePlaybackVolume;
|
||||
//extern ? sNotePlaybackVibrato;
|
||||
//extern ? sNotePlaybackTone;
|
||||
//extern ? sNormalizedNotePlaybackTone;
|
||||
//extern ? sNormalizedNotePlaybackVolume;
|
||||
//extern ? D_80130F68;
|
||||
//extern ? D_80130F6C;
|
||||
//extern ? D_80130F74;
|
||||
//extern ? D_80130F78;
|
||||
//extern ? D_80130F80;
|
||||
//extern ? sOcarinaNoteValues;
|
||||
//extern ? sOcaMinigameApndPos;
|
||||
//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;
|
||||
//extern ? D_8013185C;
|
||||
//extern ? sRecordSongPos;
|
||||
//extern ? D_80131860;
|
||||
//extern ? D_80131864;
|
||||
//extern ? D_80131868;
|
||||
|
@ -460,13 +454,13 @@ extern u8* gFrogsSongPtr; // D_80131854: pointer to a u8 array of the notes you
|
|||
//extern ? D_80131878;
|
||||
//extern ? D_8013187C;
|
||||
//extern ? D_80131880;
|
||||
//extern ? D_80131884;
|
||||
//extern ? sPierresSong;
|
||||
//extern ? D_8013188C;
|
||||
extern u8* gScarecrowCustomSongPtr;
|
||||
extern OcarinaSong* gScarecrowCustomSongPtr;
|
||||
extern u8* gScarecrowSpawnSongPtr;
|
||||
//extern ? D_80131BEC;
|
||||
//extern ? D_80131BF0;
|
||||
extern u8 D_80131C00[][9];
|
||||
extern OcarinaSongInfo gOcarinaSongNotes[];
|
||||
//extern ? D_80131C80;
|
||||
//extern ? D_80131C84;
|
||||
//extern ? D_80131C88;
|
||||
|
@ -518,7 +512,7 @@ extern u8 D_80131C00[][9];
|
|||
//extern ? D_80131F64;
|
||||
//extern ? D_80131F68;
|
||||
//extern ? D_80131F6C;
|
||||
//extern ? D_8013331C;
|
||||
extern Struct_8013331C *D_8013331C[];
|
||||
extern u8 D_80133340[4];
|
||||
//extern ? D_80133344;
|
||||
extern s32 D_8013338C;
|
||||
|
@ -532,17 +526,17 @@ extern u8 D_801333CC;
|
|||
extern u16 D_801333D0;
|
||||
extern Vec3f D_801333D4;
|
||||
extern f32 D_801333E0;
|
||||
extern f32 D_801333E8;
|
||||
extern s8 D_801333E8;
|
||||
extern u8 D_801333F0;
|
||||
extern u8 D_801333F4;
|
||||
extern u8 D_801333F8;
|
||||
//extern ? D_80133400;
|
||||
//extern ? D_80133404;
|
||||
//extern ? sSeqCmdWrPos;
|
||||
//extern ? sSeqCmdRdPos;
|
||||
//extern ? D_80133408;
|
||||
//extern ? D_8013340C;
|
||||
//extern ? D_80133414;
|
||||
//extern ? D_80133418;
|
||||
extern AudioSessionSettings gAudioSessionPresets[];
|
||||
extern AudioSessionSettings gAudioSessionPresets[18];
|
||||
extern s32 gOverlayLogSeverity;
|
||||
//extern ? D_80134480;
|
||||
//extern ? D_80134484;
|
||||
|
@ -2732,10 +2726,9 @@ extern char D_80146238[];
|
|||
//extern ? D_8014A450;
|
||||
//extern ? D_8014A45C;
|
||||
//extern ? D_8014A460;
|
||||
extern s16 gTatumsPerBeat;
|
||||
//extern ? D_8014A6C4;
|
||||
//extern ? D_8014A6C8;
|
||||
//extern ? D_8014A6CC;
|
||||
extern const s16 D_8014A6C0[];
|
||||
#define gTatumsPerBeat (D_8014A6C0[1])
|
||||
extern const AudioContextInitSizes D_8014A6C4;
|
||||
//extern ? D_8014A710;
|
||||
//extern ? D_8014A728;
|
||||
//extern ? D_8014A730;
|
||||
|
@ -2990,10 +2983,10 @@ extern s16 D_80153960[];
|
|||
//extern ? D_80154AE8;
|
||||
//extern ? D_80154AFC;
|
||||
//extern ? D_80154B00;
|
||||
//extern ? D_801550D0;
|
||||
//extern ? D_80155340;
|
||||
//extern ? D_80155500;
|
||||
//extern ? D_80155BF0;
|
||||
extern u8 gAudioBankTable[];
|
||||
extern u8 D_80155340[];
|
||||
extern u8 gSequenceTable[];
|
||||
extern u8 gAudioTable[];
|
||||
//extern ? D_80155C70;
|
||||
extern u8 D_80155F50[];
|
||||
extern u8 D_80157580[];
|
||||
|
@ -3229,11 +3222,12 @@ extern FaultThreadStruct gFaultStruct;
|
|||
//extern ? D_8016B6A0;
|
||||
//extern ? D_8016B6B5;
|
||||
//extern ? D_8016B6B8;
|
||||
//extern ? D_8016B6E0;
|
||||
//extern ? D_8016B6F8;
|
||||
//extern ? D_8016B780;
|
||||
//extern ? D_8016B7A0;
|
||||
//extern ? D_8016B7A4;
|
||||
extern OSMesgQueue D_8016B6E0;
|
||||
//extern OSMesg D_8016B6F8;
|
||||
extern u8* D_8016B738[];
|
||||
//extern u32 D_8016B780;
|
||||
//extern ? sAudioUpdateStartTime;
|
||||
//extern ? sAudioUpdateEndTime;
|
||||
//extern ? D_8016B7A8;
|
||||
//extern ? D_8016B7AC;
|
||||
//extern ? D_8016B7B0;
|
||||
|
@ -3258,33 +3252,31 @@ extern FaultThreadStruct gFaultStruct;
|
|||
//extern ? D_8016B9F6;
|
||||
//extern ? D_8016B9F8;
|
||||
//extern ? D_8016B9F9;
|
||||
//extern ? D_8016B9FC;
|
||||
//extern ? D_8016BA00;
|
||||
//extern ? D_8016BA04;
|
||||
//extern ? D_8016BA08;
|
||||
//extern ? D_8016BA09;
|
||||
//extern ? D_8016BA0C;
|
||||
//extern ? sCurOcarinaBtnPress;
|
||||
//extern ? D_8016BA10;
|
||||
//extern ? D_8016BA14;
|
||||
//extern ? sPrevOcarinaBtnPress;
|
||||
//extern ? D_8016BA18;
|
||||
//extern ? D_8016BA20;
|
||||
//extern ? D_8016BA28;
|
||||
//extern ? D_8016BA29;
|
||||
//extern ? D_8016BA2A;
|
||||
//extern ? D_8016BA2B;
|
||||
//extern ? D_8016BA2C;
|
||||
//extern ? sCurOcarinaSong;
|
||||
//extern ? sOcarinaSongAppendPos;
|
||||
//extern ? sOcarinaHasStartedSong;
|
||||
//extern ? gOcarinaSongNotestartIdx;
|
||||
//extern ? sOcarinaSongCnt;
|
||||
//extern ? sOcarinaAvailSongs;
|
||||
//extern ? D_8016BA2E;
|
||||
//extern ? D_8016BA30;
|
||||
//extern ? D_8016BA50;
|
||||
//extern ? D_8016BA70;
|
||||
//extern ? D_8016BA90;
|
||||
//extern ? sLearnSongExpectedNote;
|
||||
//extern ? D_8016BAA0;
|
||||
//extern ? D_8016BAA8;
|
||||
//extern ? D_8016BAB0;
|
||||
//extern ? D_8016BAB4;
|
||||
//extern ? D_8016BAB8;
|
||||
//extern ? D_8016BABC;
|
||||
//extern ? D_8016BAC0;
|
||||
//extern ? sDebugPadPressRaw;
|
||||
//extern ? sDebugPadPress;
|
||||
//extern ? sAudioUpdateTaskStart;
|
||||
//extern ? sAudioUpdateTaskEnd;
|
||||
extern SoundBankEntry D_8016BAD0[9];
|
||||
extern SoundBankEntry D_8016BC80[12];
|
||||
extern SoundBankEntry D_8016BEC0[22];
|
||||
|
@ -3296,7 +3288,7 @@ extern SoundBankEntry D_8016C8B0[5];
|
|||
extern u8 D_8016E1A0[7];
|
||||
extern u8 D_8016E1A8[7];
|
||||
extern u8 D_8016E1B0[7];
|
||||
//extern ? D_8016E1B8;
|
||||
extern Struct_800F7CEC D_8016E1B8[7][3]; // total size = 0xA8
|
||||
extern u8 D_8016E260;
|
||||
extern u8 D_8016E264[];
|
||||
//extern ? D_8016E270;
|
||||
|
@ -3305,12 +3297,10 @@ extern u16 D_8016E2F8[];
|
|||
extern u8 D_8016E310[];
|
||||
//extern ? D_8016E320;
|
||||
//extern ? D_8016E348;
|
||||
//extern ? D_8016E350;
|
||||
//extern ? D_8016E750;
|
||||
//extern ? D_8016E9A4;
|
||||
//extern ? sAudioSeqCmds;
|
||||
extern unk_D_8016E750 D_8016E750[4];
|
||||
//extern ? D_8016EE8B;
|
||||
extern AudioContext gAudioContext; // at 0x8016f180
|
||||
extern NotePool gNoteFreeLists; // probably includes this and further members, too
|
||||
extern AudioContext gAudioContext; // at 0x8016F180
|
||||
//extern ? D_80174D28;
|
||||
//extern ? D_80174D38;
|
||||
//extern ? D_80174D48;
|
||||
|
@ -3321,7 +3311,7 @@ extern NotePool gNoteFreeLists; // probably includes this and further members, t
|
|||
//extern ? D_80174DB8;
|
||||
//extern ? D_80174DBC;
|
||||
//extern ? D_80174DC0;
|
||||
//extern ? D_801755D0;
|
||||
extern void(*D_801755D0)(void); // not sure about arguments yet.
|
||||
extern u32 __osMalloc_FreeBlockTest_Enable;
|
||||
//extern ? D_80175640;
|
||||
//extern ? D_80175670;
|
||||
|
|
|
@ -510,7 +510,7 @@ typedef struct {
|
|||
/* 0x0168 */ Vtx* cursorVtx;
|
||||
/* 0x016C */ Vtx* saveVtx;
|
||||
/* 0x0170 */ char unk_170[0x24];
|
||||
/* 0x0194 */ UnkAudioStruct* unk_194;
|
||||
/* 0x0194 */ OcarinaStaff* unk_194;
|
||||
/* 0x0198 */ char unk_198[0x20];
|
||||
/* 0x01B8 */ OSMesgQueue loadQueue;
|
||||
/* 0x01D0 */ OSMesg loadMsg;
|
||||
|
@ -1505,24 +1505,12 @@ typedef struct {
|
|||
#define OS_SC_YIELD 0x0010
|
||||
#define OS_SC_YIELDED 0x0020
|
||||
|
||||
typedef struct {
|
||||
struct {
|
||||
/* 0x0000 */ s32 unk_0[0x10]; // not char to avoid generating lwl/lwr swl/swr in a struct copy
|
||||
} unk_0;
|
||||
/* 0x0040 */ OSMesgQueue* unk_40;
|
||||
} Sub_AudioMgr_18; // size = 0x44
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ IrqMgr* irqMgr;
|
||||
/* 0x0004 */ SchedContext* sched;
|
||||
/* 0x0008 */ OSMesg unk_8;
|
||||
/* 0x000C */ char unk_C[0x04];
|
||||
/* 0x0010 */ s32 unk_10;
|
||||
/* 0x0014 */ s32 unk_14;
|
||||
/* 0x0018 */ Sub_AudioMgr_18 unk_18;
|
||||
/* 0x005C */ UNK_PTR unk_5C;
|
||||
/* 0x0008 */ OSScTask audioTask;
|
||||
/* 0x0060 */ char unk_60[0x10];
|
||||
/* 0x0070 */ Sub_AudioMgr_18* unk_70;
|
||||
/* 0x0070 */ AudioTask* rspTask;
|
||||
/* 0x0074 */ OSMesgQueue unk_74;
|
||||
/* 0x008C */ OSMesg unk_8C;
|
||||
/* 0x0090 */ OSMesgQueue unk_90;
|
||||
|
@ -1535,7 +1523,6 @@ typedef struct {
|
|||
/* 0x00E8 */ OSThread unk_E8;
|
||||
} AudioMgr; // size = 0x298
|
||||
|
||||
|
||||
struct ArenaNode;
|
||||
|
||||
typedef struct Arena {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _Z64_AUDIO_H_
|
||||
#define _Z64_AUDIO_H_
|
||||
|
||||
#define MK_CMD(b0,b1,b2,b3) ((((b0) & 0xFF) << 0x18) | (((b1) & 0xFF) << 0x10) | (((b2) & 0xFF) << 0x8) | (((b3) & 0xFF) << 0))
|
||||
|
||||
/**
|
||||
* Structs in this repository have primarily been imported from the SM64 Decompilation.
|
||||
* Many struct members are wrong; the symbol '?' next to an offset means the member is a guess.
|
||||
|
@ -11,7 +13,7 @@
|
|||
|
||||
#define TATUMS_PER_BEAT 48
|
||||
|
||||
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((u32)(ptr) != (u32)&gAudioContext.gSequenceChannelNone)
|
||||
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((u32)(ptr) != (u32)&gAudioContext.sequenceChannelNone)
|
||||
|
||||
#define ADSR_STATE_DISABLED 0
|
||||
#define ADSR_STATE_INITIAL 1
|
||||
|
@ -28,6 +30,8 @@
|
|||
#define ADSR_GOTO -2
|
||||
#define ADSR_RESTART -3
|
||||
|
||||
#define AIBUF_LEN 0xB00
|
||||
|
||||
struct Note;
|
||||
struct NotePool;
|
||||
struct SequenceChannel;
|
||||
|
@ -88,10 +92,16 @@ typedef struct {
|
|||
} AdpcmBook;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 bits4 : 4;
|
||||
/* 0x00 */ u8 bits2 : 2;
|
||||
/* 0x00 */ u8 unk_bits2 : 2;
|
||||
/* 0x01 */ u32 bits24 : 24;
|
||||
union{
|
||||
struct {
|
||||
/* 0x00 */ u32 bits4 : 4;
|
||||
/* 0x00 */ u32 bits2 : 2;
|
||||
/* 0x00 */ u32 unk_bits26 : 1;
|
||||
/* 0x00 */ u32 unk_bits25 : 1;
|
||||
/* 0x01 */ u32 size : 24;
|
||||
};
|
||||
u32 bits;
|
||||
};
|
||||
/* 0x04 */ u8* sampleAddr;
|
||||
/* 0x08 */ AdpcmLoop* loop;
|
||||
/*?0x0C */ AdpcmBook* book;
|
||||
|
@ -110,35 +120,43 @@ typedef struct {
|
|||
/*?0x0C */ s32 startPos; // start pos in ring buffer
|
||||
/*?0x10 */ s16 lengthA; // first length in ring buffer (from startPos, at most until end)
|
||||
/*?0x12 */ s16 lengthB; // second length in ring buffer (from pos 0)
|
||||
/* 0x14 */ u8 pad[8];
|
||||
/* 0x14 */ u16 unk_14;
|
||||
/* 0x16 */ u16 unk_16;
|
||||
/* 0x18 */ u16 unk_18;
|
||||
/* 0x1A */ char unk_1A[2];
|
||||
} ReverbRingBufferItem; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 unk_00;
|
||||
/* 0x000 */ u8 resampleFlags;
|
||||
/* 0x001 */ u8 useReverb;
|
||||
/* 0x002 */ u8 unk_02;
|
||||
/* 0x003 */ u8 unk_03;
|
||||
/* 0x002 */ u8 framesToIgnore;
|
||||
/* 0x003 */ u8 curFrame;
|
||||
/* 0x004 */ u8 downsampleRate;
|
||||
/* 0x005 */ u8 unk_05;
|
||||
/* 0x005 */ s8 unk_05;
|
||||
/* 0x006 */ u16 windowSize;
|
||||
/* 0x008 */ u16 unk_08;
|
||||
/* 0x00A */ u16 unk_0A;
|
||||
/* 0x008 */ s16 unk_08;
|
||||
/* 0x00A */ s16 unk_0A;
|
||||
/* 0x00C */ u16 unk_0C;
|
||||
/* 0x00E */ u16 unk_0E;
|
||||
/* 0x010 */ u16 unk_10;
|
||||
/* 0x012 */ u16 unk_12;
|
||||
/* 0x010 */ s16 unk_10;
|
||||
/* 0x012 */ s16 unk_12;
|
||||
/* 0x014 */ u16 unk_14;
|
||||
/* 0x016 */ u16 unk_16;
|
||||
/* 0x016 */ s16 unk_16;
|
||||
|
||||
/* 0x018 */ u8 unk_18;
|
||||
/* 0x01C */ s32 unk_1C;
|
||||
/* 0x019 */ u8 unk_19;
|
||||
/* 0x01A */ u8 unk_1A;
|
||||
/* 0x01B */ u8 unk_1B;
|
||||
/* 0x01C */ s32 nextRingBufPos;
|
||||
/* 0x020 */ s32 unk_20;
|
||||
/* 0x024 */ s32 unk_24;
|
||||
/* 0x028 */ s16* unk_28;
|
||||
/* 0x02C */ s16* unk_2C;
|
||||
/* 0x024 */ s32 bufSizePerChan;
|
||||
/* 0x028 */ s16* leftRingBuf;
|
||||
/* 0x02C */ s16* rightRingBuf;
|
||||
/* 0x030 */ void* unk_30;
|
||||
/* 0x034 */ void* unk_34;
|
||||
/* 0x038 */ void* unk_38;
|
||||
/* 0x03C */ void* unk_3C;
|
||||
|
||||
/* 0x040 */ ReverbRingBufferItem items[2][5];
|
||||
/*?0x158 */ ReverbRingBufferItem items2[2][5];
|
||||
/* 0x270 */ s16* unk_270;
|
||||
|
@ -166,7 +184,7 @@ typedef struct {
|
|||
/* 0x01 */ u8 pan;
|
||||
/*?0x02 */ u8 loaded;
|
||||
/* 0x04 */ AudioBankSound sound;
|
||||
/* 0x14 */ AdsrEnvelope *envelope;
|
||||
/* 0x14 */ AdsrEnvelope* envelope;
|
||||
} Drum; // size >= 0x14
|
||||
|
||||
typedef struct {
|
||||
|
@ -229,7 +247,7 @@ typedef struct {
|
|||
/* 0x010 */ u16 delay;
|
||||
/* 0x012 */ u16 fadeTimer;
|
||||
/* 0x014 */ u16 fadeTimerUnkEu;
|
||||
/* 0x016 */ char pad_16[0x2];
|
||||
/* 0x016 */ char unk_16[0x2];
|
||||
/* 0x018 */ u8* seqData;
|
||||
/* 0x01C */ f32 fadeVolume;
|
||||
/* 0x020 */ f32 fadeVelocity;
|
||||
|
@ -282,8 +300,8 @@ typedef struct {
|
|||
/* 0x0C */ f32 fadeOutVel;
|
||||
/* 0x10 */ f32 current;
|
||||
/* 0x14 */ f32 target;
|
||||
/* */ char pad_18[4];
|
||||
/* 0x1C */ AdsrEnvelope *envelope;
|
||||
/* 0x18 */ char unk_18[4];
|
||||
/* 0x1C */ AdsrEnvelope* envelope;
|
||||
} AdsrState;
|
||||
|
||||
typedef struct {
|
||||
|
@ -407,7 +425,7 @@ typedef struct SequenceChannelLayer {
|
|||
/* 0x0E */ u16 portamentoTime;
|
||||
/* 0x10 */ s16 transposition; // #semitones added to play commands
|
||||
// (m64 instruction encoding only allows referring to the limited range
|
||||
// 0..0x3f; this makes 0x40..0x7f accessible as well)
|
||||
// 0..0x3F; this makes 0x40..0x7F accessible as well)
|
||||
/* 0x12 */ s16 shortNoteDefaultPlayPercentage;
|
||||
/* 0x14 */ s16 playPercentage;
|
||||
/* 0x18 */ AdsrSettings adsr;
|
||||
|
@ -427,25 +445,33 @@ typedef struct SequenceChannelLayer {
|
|||
} SequenceChannelLayer; // size = 0x80
|
||||
|
||||
typedef struct {
|
||||
/*?00 */ s16 adpcmdecState[0x10];
|
||||
/*?00 */ s16 finalResampleState[0x10];
|
||||
/*?00 */ s16 mixEnvelopeState[0x28];
|
||||
/*?00 */ s16 panResampleState[0x10];
|
||||
/*?00 */ s16 panSamplesBuffer[0x20];
|
||||
/*?00 */ s16 dummyResampleState[0x10];
|
||||
} NoteSynthesisBuffers;
|
||||
/* 0x0000 */ s16 adpcmdecState[0x10];
|
||||
/* 0x0020 */ s16 finalResampleState[0x10];
|
||||
/* 0x0040 */ s16 mixEnvelopeState[0x28];
|
||||
/* 0x0090 */ s16 panResampleState[0x10];
|
||||
/* 0x00B0 */ s16 panSamplesBuffer[0x20];
|
||||
/* 0x00F0 */ s16 dummyResampleState[0x10];
|
||||
} NoteSynthesisBuffers; // size = 0x110
|
||||
|
||||
typedef struct {
|
||||
/*?0x00 */ u8 restart;
|
||||
/*?0x01 */ u8 sampleDmaIndex;
|
||||
/*?0x02 */ u8 prevHeadsetPanRight;
|
||||
/*?0x03 */ u8 prevHeadsetPanLeft;
|
||||
/*?0x04 */ u16 samplePosFrac;
|
||||
/*?0x04 */ u8 samplePosFrac;
|
||||
/* 0x05 */ u8 unk_05;
|
||||
/* 0x06 */ u16 unk_06;
|
||||
/*?0x08 */ s32 samplePosInt;
|
||||
/* 0x0C */ NoteSynthesisBuffers* synthesisBuffers;
|
||||
/*?0x10 */ s16 curVolLeft;
|
||||
/*?0x12 */ s16 curVolRight;
|
||||
} NoteSynthesisState;
|
||||
/* 0x14 */ u16 unk_14;
|
||||
/* 0x16 */ u16 unk_16;
|
||||
/* 0x18 */ u16 unk_18;
|
||||
/* 0x1A */ u8 unk_1A;
|
||||
/* 0x1C */ u16 unk_1C;
|
||||
/* 0x1E */ u16 unk_1E;
|
||||
} NoteSynthesisState; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct SequenceChannel* seqChannel;
|
||||
|
@ -523,11 +549,10 @@ typedef struct {
|
|||
typedef struct Note {
|
||||
/* 0x00 */ AudioListItem listItem;
|
||||
/*?0x10 */ NoteSynthesisState synthesisState;
|
||||
/* 0x24 */ char pad_24[0xC];
|
||||
/* 0x30 */ NotePlaybackState playbackState;
|
||||
/* 0x90 */ Portamento portamento;
|
||||
/* 0x9C */ VibratoState vibratoState;
|
||||
/* 0xB8 */ char pad_B8[0x4];
|
||||
/* 0xB8 */ char unk_B8[0x4];
|
||||
/* 0xBC */ u32 unk_BC;
|
||||
/* 0xC0 */ NoteSubEu noteSubEu;
|
||||
} Note; // size = 0xE0
|
||||
|
@ -552,9 +577,9 @@ typedef struct {
|
|||
/*?0x04 */ u8 unk_04;
|
||||
/* 0x05 */ u8 maxSimultaneousNotes;
|
||||
/* 0x06 */ u8 numSequencePlayers;
|
||||
/* 0x07 */ u8 pad_07[2];
|
||||
/* 0x07 */ u8 unk_07[0x2];
|
||||
/* 0x09 */ u8 numReverbs;
|
||||
/* 0x0A */ u8 pad_0A[2];
|
||||
/* 0x0A */ u8 unk_0A[0x2];
|
||||
/* 0x0C */ ReverbSettings* reverbSettings;
|
||||
/* 0x10 */ u16 unk_10;
|
||||
/* 0x12 */ u16 unk_12;
|
||||
|
@ -605,7 +630,7 @@ typedef struct {
|
|||
/* 0x00 */ s8 unk_00;
|
||||
/* 0x01 */ s8 unk_01;
|
||||
/* 0x02 */ s8 unk_02;
|
||||
/* 0x03 */ char pad[0x5];
|
||||
/* 0x03 */ char unk_03[0x5];
|
||||
/* 0x08 */ u8* unk_08;
|
||||
/* 0x0C */ void* unk_0C;
|
||||
/* 0x10 */ u32 size;
|
||||
|
@ -635,7 +660,7 @@ typedef struct
|
|||
{
|
||||
/* 0x000*/ PersistentPool persistent;
|
||||
/* 0x0D4*/ TemporaryPool temporary;
|
||||
/* 0x100*/ u8 pad[0x10];
|
||||
/* 0x100*/ u8 unk_100[0x10];
|
||||
} SoundMultiPool; // size = 0x110
|
||||
|
||||
typedef struct {
|
||||
|
@ -661,96 +686,327 @@ typedef struct {
|
|||
u8* unk_4;
|
||||
u32 unk_8;
|
||||
s8 unk_C;
|
||||
s8 unk_D;
|
||||
s16 unk_E;
|
||||
} Struct_800E0E0C_2;
|
||||
|
||||
typedef struct {
|
||||
char pad[0xC];
|
||||
char unk_00[0x2];
|
||||
s16 unk_02;
|
||||
char unk_04[0x8];
|
||||
Struct_800E0E0C_2 unk_C[1]; // unknown size
|
||||
} ManyStruct_800E0E0C_2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk_00;
|
||||
/* 0x00 */ u8* unk_00;
|
||||
/* 0x04 */ AudioBankSample* sample;
|
||||
/* 0x08 */ u8* unk_08;
|
||||
/* 0x0C */ s32 pad;
|
||||
/* 0x10 */ s32 unk_10;
|
||||
} AudioStruct0D68; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
union{
|
||||
u32 opArgs;
|
||||
struct {
|
||||
u8 op;
|
||||
u8 arg0;
|
||||
u8 arg1;
|
||||
u8 arg2;
|
||||
};
|
||||
};
|
||||
union {
|
||||
void* data;
|
||||
f32 asFloat;
|
||||
s32 asInt;
|
||||
u16 asUShort;
|
||||
s8 asSbyte;
|
||||
u8 asUbyte;
|
||||
u32 asUInt;
|
||||
};
|
||||
} AudioCmd;
|
||||
|
||||
typedef struct {
|
||||
union{
|
||||
struct {
|
||||
s16 unk_00;
|
||||
u16 unk_02;
|
||||
};
|
||||
u32 unk_00w;
|
||||
};
|
||||
u32 unk_04;
|
||||
s8 unk_08;
|
||||
char unk_09[0x7];
|
||||
} unk_dma_s;
|
||||
|
||||
#define MK_ASYNC_MSG(b0,b1,b2,b3)(((b0) << 0x18) | ((b1) << 0x10) | ((b2) << 0x08) | ((b3) << 0x00))
|
||||
#define ASYNC_TBLTYPE(v)((u8)(v >> 0x10))
|
||||
#define ASYNC_B2(v)((u8)(v >> 0x08))
|
||||
#define ASYNC_B3(v)((u8)(v >> 0x00))
|
||||
#define AYSNC_B0(v)(((u8)(v >> 0x18))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 status;
|
||||
/* 0x01 */ s8 unk_01;
|
||||
/* 0x02 */ s8 unk_02; // type?
|
||||
/* 0x03 */ char unk_03[0x1];
|
||||
/* 0x04 */ u32 unk_04;
|
||||
/* 0x08 */ u32 devAddr;
|
||||
/* 0x0C */ u8* ramAddr;
|
||||
/* 0x10 */ u32 bytesRemaining;
|
||||
/* 0x14 */ u32 chunkSize;
|
||||
/* 0x18 */ s32 unk_18;
|
||||
/* 0x1C */ u32 retMsg;
|
||||
/* 0x20 */ OSMesgQueue* retQueue;
|
||||
/* 0x24 */ OSMesgQueue msgQueue;
|
||||
/* 0x3C */ OSMesg msg[1];
|
||||
/* 0x40 */ OSIoMesg ioMesg;
|
||||
} AsyncLoadReq; // size = 0x58
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 unk_00;
|
||||
/* 0x0001 */ u8 unk_01;
|
||||
/* 0x0002 */ u16 unk_02;
|
||||
/* 0x0004 */ s32 unk_04;
|
||||
/* 0x0008 */ s32 devAddr;
|
||||
/* 0x000C */ u8* ramAddr;
|
||||
/* 0x0010 */ u8* unk_10;
|
||||
/* 0x0014 */ s32 status;
|
||||
/* 0x0018 */ s32 size;
|
||||
/* 0x001C */ s8* isDone;
|
||||
/* 0x0020 */ AudioBankSample sample;
|
||||
/* 0x0030 */ OSMesgQueue msgqueue;
|
||||
/* 0x0048 */ OSMesg msg[1];
|
||||
/* 0x004C */ OSIoMesg ioMesg;
|
||||
} AudioSyncLoad; // size = 0x64
|
||||
|
||||
typedef struct {
|
||||
u16 offsets[18];
|
||||
char data[1];
|
||||
} unk_283C;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s16 entryCnt;
|
||||
/* 0x0002 */ s16 unk_02;
|
||||
/* 0x0004 */ u32 romAddr;
|
||||
/* 0x0008 */ char pad[0x8];
|
||||
} AudioTableHeader; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 romAddr;
|
||||
/* 0x0004 */ u32 size;
|
||||
/* 0x0008 */ s8 unk_08;
|
||||
/* 0x0009 */ s8 type;
|
||||
/* 0x000A */ char pad[6];
|
||||
} SequenceTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 romAddr;
|
||||
/* 0x0004 */ u32 size;
|
||||
/* 0x0008 */ u8 unk_08;
|
||||
/* 0x0009 */ u8 unk_09;
|
||||
/* 0x000A */ s16 unk_0A;
|
||||
/* 0x000C */ s16 unk_0C;
|
||||
/* 0x000E */ s16 unk_0E;
|
||||
} AudioBankTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 romAddr;
|
||||
/* 0x0004 */ u32 size;
|
||||
/* 0x0008 */ s8 unk_08;
|
||||
/* 0x0009 */ s8 unk_09;
|
||||
/* 0x000A */ char pad[6];
|
||||
} AudioTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ AudioTableHeader header;
|
||||
/* 0x0010 */ SequenceTableEntry entries[1];
|
||||
} SequenceTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ AudioTableHeader header;
|
||||
/* 0x0010 */ AudioBankTableEntry entries[1];
|
||||
} AudioBankTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ AudioTableHeader header;
|
||||
/* 0x0010 */ AudioTableEntry entries[1];
|
||||
} AudioTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ OSTask task;
|
||||
/* 0x0040 */ OSMesgQueue* taskQueue;
|
||||
/* 0x0044 */ void* unk_44; // probbly a message that gets unused.
|
||||
/* 0x0048 */ char unk_48[0x8];
|
||||
} AudioTask; // size = 0x50
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8* ramAddr;
|
||||
/* 0x0004 */ u32 devAddr;
|
||||
/* 0x0008 */ u16 unk_08;
|
||||
/* 0x000A */ u16 size;
|
||||
/* 0x000C */ u8 unk_0C;
|
||||
/* 0x000D */ u8 unk_0D;
|
||||
/* 0x000E */ u8 unk_0E;
|
||||
/* 0x000F */ u8 unk_0F;
|
||||
} SampleDmaReq; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
s32 unk_00;
|
||||
s32 unk_04;
|
||||
s32 unk_08;
|
||||
s32 unk_0C;
|
||||
s32 unk_10;
|
||||
s32 unk_14;
|
||||
} RelocInfo;
|
||||
|
||||
typedef enum {
|
||||
SEQUENCE_TABLE,
|
||||
BANK_TABLE,
|
||||
AUDIO_TABLE
|
||||
} AudioTableType;
|
||||
|
||||
typedef struct {
|
||||
Drum** drums;
|
||||
AudioBankSound* sfx;
|
||||
Instrument* instruments[1];
|
||||
} unk_ldr;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ char unk_0000;
|
||||
/* 0x0001 */ s8 gNumSynthesisReverbs;
|
||||
/* 0x0001 */ s8 numSynthesisReverbs;
|
||||
/* 0x0002 */ u16 unk_2;
|
||||
/* 0x0004 */ u16 unk_4;
|
||||
/* 0x0006 */ char unk_0006[0x0e];
|
||||
/* 0x0014 */ NoteSubEu* gNoteSubsEu;
|
||||
/* 0x0018 */ SynthesisReverb gSynthesisReverbs[4];
|
||||
/* 0x0B38 */ char unk_0B38[0x230];
|
||||
/* 0x0D68 */ AudioStruct0D68 unk_0D68[128]; // guessing at size
|
||||
/* 0x1768 */ char unk_1768[4];
|
||||
/* 0x0006 */ char unk_0006[0x0A];
|
||||
/* 0x0000 */ s32 unk_0x10;
|
||||
/* 0x0014 */ NoteSubEu* noteSubsEu;
|
||||
/* 0x0018 */ SynthesisReverb synthesisReverbs[4];
|
||||
/* 0x0B38 */ char unk_0B38[0x30];
|
||||
/* 0x0B68 */ AudioBankSample* unk_B68[1]; // unknown size.
|
||||
/* 0x0B6C */ char unk_B6C[0x1E8];
|
||||
/* 0x0D54 */ AudioStruct0D68 unk_0D54[129]; // guessing at size
|
||||
/* 0x1768 */ s32 unk_1768;
|
||||
/* 0x176C */ s32 unk_176C;
|
||||
/* 0x1770 */ char unk_1770[0xEB0];
|
||||
/* 0x2620 */ s32 gSampleDmaNumListItems;
|
||||
/* 0x2624 */ char unk_2624[0x210];
|
||||
/* 0x2834 */ s16* unk_2834;
|
||||
/* 0x2838 */ ManyStruct_800E0E0C_2* unk_2838;
|
||||
/* 0x283C */ u8* unk_283C;
|
||||
/* 0x2840 */ char unk_2840[0x4];
|
||||
/* 0x2844 */ CtlEntry* gCtlEntries;
|
||||
/* 0x2848 */ AudioBufferParameters gAudioBufferParameters;
|
||||
/* 0x1770 */ AsyncLoadReq asyncReqs[0x10];
|
||||
/* 0x1CF0 */ OSMesgQueue asyncLoadQueue;
|
||||
/* 0x1D08 */ char unk_1D08[0x40];
|
||||
/* 0x1D48 */ AsyncLoadReq* curAsyncReq;
|
||||
/* 0x1D4C */ u32 syncLoadPos;
|
||||
/* 0x1D50 */ AudioSyncLoad syncLoads[2];
|
||||
/* 0x1E18 */ OSPiHandle* cartHandle;
|
||||
/* probably an unused PI handle for n64 disk drive */
|
||||
/* 0x1E1C */ OSPiHandle* unk_1E1C;
|
||||
/* 0x1E20 */ OSMesgQueue unk_1E20;
|
||||
/* 0x1E38 */ OSMesg unk_1E38;
|
||||
/* 0x1E38 */ char unk_1E3C[0x3C];
|
||||
/* 0x1E78 */ OSMesgQueue unk_1E78;
|
||||
/* 0x1E90 */ OSMesg unk_1E90;
|
||||
/* 0x1E94 */ char unk_1E94[0x3C];
|
||||
/* 0x1ED0 */ OSMesgQueue unk_1ED0;
|
||||
/* 0x1EE8 */ OSMesg unk_1EE8;
|
||||
/* 0x1EEC */ char unk_1EEC[0xFC];
|
||||
/* 0x1FE8 */ OSIoMesg sampIoReq[1]; // unknown size
|
||||
/* 0x2000 */ char unk_2000[0x5E8];
|
||||
/* 0x25E8 */ OSMesgQueue unk_25E8;
|
||||
/* 0x2600 */ OSMesg unk_2600;
|
||||
/* 0x2604 */ OSIoMesg unk_2604;
|
||||
/* 0x261C */ SampleDmaReq* sampleDmaReqs;
|
||||
/* 0x2620 */ u32 sampleDmaReqCnt;
|
||||
/* 0x2624 */ u32 unk_2624; // sample start idx?
|
||||
/* 0x2628 */ s32 unk_2628;
|
||||
/* 0x262C */ u8 unk_262C[0x100];
|
||||
/* 0x272C */ u8 unk_272C[0x100];
|
||||
/* 0x282C */ u8 unk_282C;
|
||||
/* 0x282D */ u8 unk_282D;
|
||||
/* 0x282E */ u8 unk_282E;
|
||||
/* 0x282F */ u8 unk_282F;
|
||||
/* 0x2830 */ SequenceTable* sequenceTable;
|
||||
/* 0x2834 */ AudioBankTable* audioBankTable;
|
||||
/* 0x2838 */ AudioTable* audioTable;
|
||||
union {
|
||||
/* 0x283C */ u16* unk_283C;
|
||||
/* 0x283C */ char* unk_283Cb;
|
||||
};
|
||||
/* 0x2840 */ u16 seqTabEntCnt; // channels used?
|
||||
/* 0x2844 */ CtlEntry* ctlEntries;
|
||||
/* 0x2848 */ AudioBufferParameters audioBufferParameters;
|
||||
/* 0x2870 */ f32 unk_2870;
|
||||
/* 0x2874 */ s32 unk_2874;
|
||||
/* 0x2874 */ s32 unk_2878;
|
||||
/* 0x287C */ char unk_287C[0x14];
|
||||
/* 0x2890 */ s32 gMaxAudioCmds;
|
||||
/* 0x2894 */ s32 gMaxSimultaneousNotes; // (bad name)
|
||||
/* 0x2898 */ s16 gTempoInternalToExternal;
|
||||
/* 0x289A */ s8 gSoundMode;
|
||||
/* 0x289B */ char unk_289B[0xD];
|
||||
/* 0x28A8 */ s32 unk_28A8;
|
||||
/* 0x28AC */ u64* gAudioCmdBuffers[2];
|
||||
/* 0x28B4 */ char unk_28B4[0xAC];
|
||||
/* 0x287C */ char unk_287C[0x10];
|
||||
/* 0x288C */ s32 unk_288C;
|
||||
/* 0x2890 */ s32 maxAudioCmds;
|
||||
/* 0x2894 */ s32 maxSimultaneousNotes; // (bad name)
|
||||
/* 0x2898 */ s16 tempoInternalToExternal;
|
||||
/* 0x289A */ s8 soundMode;
|
||||
/* 0x289C */ s32 totalTaskCnt;
|
||||
/* 0x28A0 */ s32 sampleIoReqIdx;
|
||||
/* 0x28A4 */ s32 rspTaskIdx;
|
||||
/* 0x28A8 */ s32 curAIBufIdx;
|
||||
/* 0x28AC */ u64* abiCmdBufs[2];
|
||||
/* 0x28B4 */ u64* curAbiCmdBuf;
|
||||
/* 0x28B8 */ AudioTask* currTask;
|
||||
/* 0x28BC */ char unk_28BC[0x4];
|
||||
/* 0x28C0 */ AudioTask rspTask[2];
|
||||
/* 0x2960 */ f32 unk_2960;
|
||||
/* 0x2964 */ s32 gRefreshRate;
|
||||
/* 0x2968 */ s16* unk_2968[3];
|
||||
/* 0x2974 */ s16 unk_2974[3];
|
||||
/* 0x297C */ u32 gAudioRandom;
|
||||
/* 0x2980 */ s32 gAudioErrorFlags;
|
||||
/* 0x2984 */ char unk_2984[0xC];
|
||||
/* 0x2990 */ SoundAllocPool gAudioSessionPool;
|
||||
/* 0x29A0 */ SoundAllocPool gUnkPool;
|
||||
/* 0x29B0 */ SoundAllocPool gAudioInitPool;
|
||||
/* 0x29C0 */ SoundAllocPool gNotesAndBuffersPool;
|
||||
/* 0x2964 */ s32 refreshRate;
|
||||
/* 0x2968 */ s16* aiBuffers[3];
|
||||
/* 0x2974 */ s16 aiBufLengths[3];
|
||||
/* 0x297C */ u32 audioRandom;
|
||||
/* 0x2980 */ s32 audioErrorFlags;
|
||||
/* 0x2984 */ volatile u32 resetTimer;
|
||||
/* 0x2988 */ char unk_2988[0x8];
|
||||
/* 0x2990 */ SoundAllocPool audioSessionPool;
|
||||
/* 0x29A0 */ SoundAllocPool unkPool;
|
||||
/* 0x29B0 */ SoundAllocPool audioInitPool;
|
||||
/* 0x29C0 */ SoundAllocPool notesAndBuffersPool;
|
||||
/* 0x29D0 */ char unk_29D0[0x20]; // probably two unused pools
|
||||
/* 0x29F0 */ SoundAllocPool gSeqAndBankPool;
|
||||
/* 0x2A00 */ SoundAllocPool gPersistentCommonPool;
|
||||
/* 0x2A10 */ SoundAllocPool gTemporaryCommonPool;
|
||||
/* 0x2A20 */ SoundMultiPool gSeqLoadedPool;
|
||||
/* 0x2B30 */ SoundMultiPool gBankLoadedPool;
|
||||
/* 0x2C40 */ SoundMultiPool gUnusedLoadedPool; // rename after we figure out what this is
|
||||
/* 0x29F0 */ SoundAllocPool seqAndBankPool;
|
||||
/* 0x2A00 */ SoundAllocPool persistentCommonPool;
|
||||
/* 0x2A10 */ SoundAllocPool temporaryCommonPool;
|
||||
/* 0x2A20 */ SoundMultiPool seqLoadedPool;
|
||||
/* 0x2B30 */ SoundMultiPool bankLoadedPool;
|
||||
/* 0x2C40 */ SoundMultiPool unusedLoadedPool; // rename after we figure out what this is
|
||||
/* 0x2D50 */ SoundAllocPool unk_2D50;
|
||||
/* 0x2D60 */ SeqOrBankEntry unk_2D60[32];
|
||||
/* 0x2EE0 */ UnkPool unk_2EE0;
|
||||
/* 0x3174 */ UnkPool unk_3174;
|
||||
/* 0x3408 */ AudioPoolSplit4 sSessionPoolSplit;
|
||||
/* 0x3418 */ AudioPoolSplit2 sSeqAndBankPoolSplit;
|
||||
/* 0x3420 */ AudioPoolSplit3 sPersistentCommonPoolSplit;
|
||||
/* 0x342C */ AudioPoolSplit3 sTemporaryCommonPoolSplit;
|
||||
/* 0x3438 */ u8 gUnusedLoadStatus[0x30];
|
||||
/* 0x3468 */ u8 gBankLoadStatus[0x30];
|
||||
/* 0x3498 */ u8 gSeqLoadStatus[0x80];
|
||||
/* 0x3518 */ volatile u8 gAudioResetStatus;
|
||||
/* 0x3519 */ u8 gAudioResetPresetIdToLoad;
|
||||
/* 0x351C */ s32 gAudioResetFadeOutFramesLeft;
|
||||
/* 0x3408 */ AudioPoolSplit4 sessionPoolSplit;
|
||||
/* 0x3418 */ AudioPoolSplit2 seqAndBankPoolSplit;
|
||||
/* 0x3420 */ AudioPoolSplit3 persistentCommonPoolSplit;
|
||||
/* 0x342C */ AudioPoolSplit3 temporaryCommonPoolSplit;
|
||||
/* 0x3438 */ u8 audioTableLoadStatus[0x30];
|
||||
/* 0x3468 */ u8 bankLoadStatus[0x30];
|
||||
/* 0x3498 */ u8 seqLoadstatus[0x80];
|
||||
/* 0x3518 */ volatile u8 resetStatus;
|
||||
/* 0x3519 */ u8 audioResetPresetIdToLoad;
|
||||
/* 0x351C */ s32 audioResetFadeOutFramesLeft;
|
||||
/* 0x3520 */ f32* unk_3520;
|
||||
/* 0x3524 */ u8* gAudioHeap;
|
||||
/* 0x3528 */ u32 gAudioHeapSize;
|
||||
/* 0x352C */ Note* gNotes;
|
||||
/* 0x3530 */ SequencePlayer gSequencePlayers[4];
|
||||
/* 0x3AB0 */ SequenceChannelLayer gSequenceLayers[64];
|
||||
/* 0x5AB0 */ SequenceChannel gSequenceChannelNone;
|
||||
/* 0x5B84 */ s32 gNoteSubEuOffset;
|
||||
/* 0x5B88 */ AudioListItem gLayerFreeList;
|
||||
} AudioContext; // size >= 0x5c50
|
||||
/* 0x3524 */ u8* audioHeap;
|
||||
/* 0x3528 */ u32 audioHeapSize;
|
||||
/* 0x352C */ Note* notes;
|
||||
/* 0x3530 */ SequencePlayer seqPlayers[4];
|
||||
/* 0x3AB0 */ SequenceChannelLayer sequenceLayers[64];
|
||||
/* 0x5AB0 */ SequenceChannel sequenceChannelNone;
|
||||
/* 0x5B84 */ s32 noteSubEuOffset;
|
||||
/* 0x5B88 */ AudioListItem layerFreeList;
|
||||
/* 0x5B98 */ NotePool noteFreeLists;
|
||||
/* 0x5BD8 */ u8 cmdWrPos;
|
||||
/* 0x5BD9 */ u8 cmdRdPos;
|
||||
/* 0x5BDA */ u8 cmdQueueFinished;
|
||||
/* 0x5BDB */ char unk_5BDB[0x1];
|
||||
/* 0x5BDC */ u16 unk_5BDC[4];
|
||||
/* 0x5BE4 */ OSMesgQueue* audioResetQueueP;
|
||||
/* 0x5BE8 */ OSMesgQueue* taskStartQueueP;
|
||||
/* 0x5BEC */ OSMesgQueue* cmdProcQueueP;
|
||||
/* 0x5BF0 */ OSMesgQueue taskStartQueue;
|
||||
/* 0x5C08 */ OSMesgQueue cmdProcQueue;
|
||||
/* 0x5C20 */ OSMesgQueue audioResetQueue;
|
||||
/* 0x5C38 */ OSMesg taskStartMsgs[1];
|
||||
/* 0x5C3C */ OSMesg audioResetMesgs[1];
|
||||
/* 0x5C40 */ OSMesg cmdProcMsgs[4];
|
||||
/* 0x5C50 */ AudioCmd cmdBuf[0x100];
|
||||
} AudioContext; // size = 0x6450
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 reverb; // i.e. volume
|
||||
|
@ -765,6 +1021,65 @@ typedef struct {
|
|||
/* 0x16 */ u16 unk_16;
|
||||
} Reverb; // size >= 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u32 heap;
|
||||
/* 0x0004 */ u32 mainPool;
|
||||
/* 0x0008 */ u32 initPool;
|
||||
} AudioContextInitSizes; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ f32 unk_00;
|
||||
/* 0x0004 */ f32 unk_04;
|
||||
/* 0x0008 */ f32 unk_08;
|
||||
/* 0x000C */ u16 unk_0C;
|
||||
/* 0x0010 */ f32 unk_10;
|
||||
/* 0x0014 */ f32 unk_14;
|
||||
/* 0x0018 */ f32 unk_18;
|
||||
/* 0x001C */ u16 unk_1C;
|
||||
} unk_50_s; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ f32 volCur;
|
||||
/* 0x0004 */ f32 volTarget;
|
||||
/* 0x0008 */ f32 unk_08;
|
||||
/* 0x000C */ u16 unk_0C;
|
||||
/* 0x000E */ u8 volScales[0x4];
|
||||
/* 0x0012 */ u8 volFadeTimer;
|
||||
/* 0x0013 */ u8 fadeVolUpdate;
|
||||
/* 0x0014 */ u32 unk_14;
|
||||
/* 0x0018 */ u16 unk_18;
|
||||
/* 0x001C */ f32 unk_1C;
|
||||
/* 0x0020 */ f32 unk_20;
|
||||
/* 0x0024 */ f32 unk_24;
|
||||
/* 0x0028 */ u16 unk_28;
|
||||
/* 0x002A */ char unk_2A[0x2];
|
||||
/* 0x002C */ u32 unk_2C[8];
|
||||
/* 0x004C */ u8 unk_4C;
|
||||
/* 0x004D */ u8 unk_4D;
|
||||
/* 0x004E */ u8 unk_4E;
|
||||
/* 0x004F */ char unk_4F;
|
||||
/* 0x0050 */ unk_50_s unk_50[0x10];
|
||||
/* 0x0250 */ u16 unk_250;
|
||||
/* 0x0252 */ u16 unk_252;
|
||||
/* 0x0254 */ u16 unk_254;
|
||||
/* 0x0256 */ u16 unk_256;
|
||||
/* 0x0258 */ u16 unk_258;
|
||||
/* 0x025A */ char unk_25A[0x2];
|
||||
/* 0x025C */ u32 unk_25C;
|
||||
/* 0x0260 */ u8 unk_260;
|
||||
/* 0x0261 */ char unk_261[0x3];
|
||||
} unk_D_8016E750; // size = 0x264
|
||||
|
||||
typedef enum {
|
||||
BANK_PLAYER,
|
||||
BANK_ITEM,
|
||||
BANK_ENV,
|
||||
BANK_ENEMY,
|
||||
BANK_SYSTEM,
|
||||
BANK_OCARINA,
|
||||
BANK_VOICE
|
||||
} SoundBankTypes;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32* posX;
|
||||
/* 0x04 */ f32* posY;
|
||||
|
@ -772,7 +1087,7 @@ typedef struct {
|
|||
/* 0x0C */ u8 unk_C;
|
||||
/* 0x10 */ f32* unk_10;
|
||||
/* 0x14 */ f32* unk_14;
|
||||
/* 0x18 */ f32* unk_18;
|
||||
/* 0x18 */ s8* unk_18;
|
||||
/* 0x1C */ f32 unk_1C;
|
||||
/* 0x20 */ u32 unk_20;
|
||||
/* 0x24 */ u8 unk_24;
|
||||
|
@ -808,4 +1123,62 @@ typedef struct {
|
|||
#define SFX_INDEX(sfxId) ((sfxId) & 0x01FF)
|
||||
#define SFX_BANK(sfxId) SFX_BANK_SHIFT(SFX_BANK_MASK(sfxId))
|
||||
|
||||
typedef struct {
|
||||
u32 unk_0;
|
||||
u8 unk_4;
|
||||
} Struct_800F7CEC;
|
||||
|
||||
typedef struct {
|
||||
u8 unk_0;
|
||||
u16 unk_2;
|
||||
} Struct_8013331C;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 noteIdx;
|
||||
/* 0x0001 */ u8 unk_01;
|
||||
/* 0x0002 */ u16 unk_02;
|
||||
/* 0x0004 */ u8 volume;
|
||||
/* 0x0005 */ u8 vibrato;
|
||||
/* 0x0006 */ s8 tone;
|
||||
/* 0x0007 */ u8 semitone;
|
||||
} OcarinaNote; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ OcarinaNote notes[20];
|
||||
} OcarinaSong; // size = 0xA0
|
||||
|
||||
#define Audio_DisableSeq(seqIdx, fadeOut) Audio_QueueCmdS32(0x83000000 | ((u8)seqIdx << 16), fadeOut)
|
||||
#define Audio_Cmd82(seqIdx, a, b) Audio_QueueCmdS32(0x82000000 | ((u8)seqIdx << 16) | ((u8)a << 8), b)
|
||||
#define Audio_StartSeq(seqIdx, fadeTimer, seqId) Audio_QueueSeqCmd(0x00000000 | ((u8)seqIdx << 24) | ((u8)(fadeTimer) << 0x10) | (u16)seqId)
|
||||
#define Audio_SeqCmd7(seqIdx, a, b) Audio_QueueSeqCmd(0x70000000 | ((u8)seqIdx << 0x18) | ((u8)a << 0x10) | (u8)(b))
|
||||
#define Audio_SeqCmdC(seqIdx, a, b, c) Audio_QueueSeqCmd(0xC0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)(c)))
|
||||
#define Audio_SeqCmdA(seqIdx, a) Audio_QueueSeqCmd(0xA0000000 | ((u8)seqIdx << 24) | ((u16)(a)))
|
||||
#define Audio_SeqCmd1(seqIdx, a) Audio_QueueSeqCmd(0x100000FF | ((u8)seqIdx << 24) | ((u8)(a) << 16))
|
||||
#define Audio_SeqCmdB(seqIdx, a, b, c) Audio_QueueSeqCmd(0xB0000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
|
||||
#define Audio_SeqCmdB30(seqIdx, a, b) Audio_QueueSeqCmd(0xB0003000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b))
|
||||
#define Audio_SeqCmdB40(seqIdx, a, b) Audio_QueueSeqCmd(0xB0004000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b))
|
||||
#define Audio_SeqCmd6(seqIdx, a, b, c) Audio_QueueSeqCmd(0x60000000 | ((u8)seqIdx << 24) | ((u8)(a) << 16) | ((u8)b << 8) | ((u8)c))
|
||||
#define Audio_SeqCmdE0(seqIdx, a) Audio_QueueSeqCmd(0xE0000000 | ((u8)seqIdx << 24) | ((u8)a))
|
||||
#define Audio_SeqCmdE01(seqIdx, a) Audio_QueueSeqCmd(0xE0000100 | ((u8)seqIdx << 24) | ((u16)a))
|
||||
#define Audio_SeqCmd8(seqIdx, a, b, c) Audio_QueueSeqCmd(0x80000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)b << 8) | ((u8)c))
|
||||
#define Audio_SeqCmd3(seqIdx, a) Audio_QueueSeqCmd(0x80000000 | ((u8)seqIdx << 24) | ((u16)a))
|
||||
#define Audio_SeqCmd5(seqIdx, a, b) Audio_QueueSeqCmd(0x50000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u16)(b)))
|
||||
#define Audio_SeqCmd4(seqIdx, a, b) Audio_QueueSeqCmd(0x40000000 | ((u8)seqIdx << 24) | ((u8)a << 16) | ((u8)(b)))
|
||||
#define Audio_SeqCmdF(seqIdx, a) Audio_QueueSeqCmd(0xF0000000 | ((u8)seqIdx << 24) | ((u8)a))
|
||||
#define Unk2C_B8(v) (((v & 0x00F00000) >> 20))
|
||||
#define Unk2C_B12(v) (((v & 0x000F0000) >> 16))
|
||||
#define Unk2C_B16(v) (((v & 0x0000FF00) >> 8))
|
||||
#define Unk2C_B24(v) (((v & 0x000000FF) >> 0))
|
||||
|
||||
typedef struct {
|
||||
u8 len;
|
||||
u8 notesIdx[8];
|
||||
} OcarinaSongInfo;
|
||||
|
||||
typedef struct {
|
||||
u8 noteIdx;
|
||||
u8 state;
|
||||
u8 pos;
|
||||
} OcarinaStaff;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue