load.h (3607B)
1 #ifndef AUDIO_LOAD_H 2 #define AUDIO_LOAD_H 3 4 #include <PR/ultratypes.h> 5 6 #include "internal.h" 7 8 #define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40 9 10 #define PRELOAD_BANKS 2 11 #define PRELOAD_SEQUENCE 1 12 13 #define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gSequenceChannelNone) 14 15 extern struct Note *gNotes; 16 17 // Music in SM64 is played using 3 players: 18 // gSequencePlayers[0] is level background music 19 // gSequencePlayers[1] is misc music, like the puzzle jingle 20 // gSequencePlayers[2] is sound 21 extern struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS]; 22 23 extern struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS]; 24 extern struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS]; 25 26 extern struct SequenceChannel gSequenceChannelNone; 27 28 extern struct AudioListItem gLayerFreeList; 29 extern struct NotePool gNoteFreeLists; 30 31 extern OSMesgQueue gCurrAudioFrameDmaQueue; 32 extern u32 gSampleDmaNumListItems; 33 extern ALSeqFile *gAlCtlHeader; 34 extern ALSeqFile *gAlTbl; 35 extern ALSeqFile *gSeqFileHeader; 36 extern u8 *gAlBankSets; 37 38 extern struct CtlEntry *gCtlEntries; 39 #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN) 40 extern struct AudioBufferParametersEU gAudioBufferParameters; 41 #endif 42 extern s32 gAiFrequency; 43 #if defined(VERSION_SH) || defined(VERSION_CN) 44 extern s16 gCurrAiBufferLength; 45 extern s32 D_SH_8034F68C; 46 #endif 47 extern s32 gMaxAudioCmds; 48 49 extern s32 gMaxSimultaneousNotes; 50 extern s32 gSamplesPerFrameTarget; 51 extern s32 gMinAiBufferLength; 52 extern s16 gTempoInternalToExternal; 53 extern s8 gAudioUpdatesPerFrame; // = 4 54 extern s8 gSoundMode; 55 56 #if defined(VERSION_SH) || defined(VERSION_CN) 57 extern OSMesgQueue gUnkQueue1; 58 59 struct UnkStructSH8034EC88 { 60 u8 *endAndMediumIdentification; 61 struct AudioBankSample *sample; 62 u8 *ramAddr; 63 u32 encodedInfo; 64 s32 isFree; 65 }; 66 67 struct PatchStruct { 68 s32 bankId1; 69 s32 bankId2; 70 void *baseAddr1; 71 void *baseAddr2; 72 s32 medium1; 73 s32 medium2; 74 }; 75 76 extern struct UnkStructSH8034EC88 D_SH_8034EC88[0x80]; 77 #endif 78 79 void audio_dma_partial_copy_async(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg); 80 void decrease_sample_dma_ttls(void); 81 #if defined(VERSION_SH) || defined(VERSION_CN) 82 void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef, s32 medium); 83 #else 84 void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef); 85 #endif 86 void init_sample_dma_buffers(s32 arg0); 87 #if defined(VERSION_SH) || defined(VERSION_CN) 88 void patch_audio_bank(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo); 89 #else 90 void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums); 91 #endif 92 #if defined(VERSION_SH) || defined(VERSION_CN) 93 void preload_sequence(u32 seqId, s32 preloadMask); 94 #else 95 void preload_sequence(u32 seqId, u8 preloadMask); 96 #endif 97 void load_sequence(u32 player, u32 seqId, s32 loadAsync); 98 99 #if defined(VERSION_SH) || defined(VERSION_CN) 100 void func_sh_802f3158(s32 seqId, s32 arg1, s32 arg2, OSMesgQueue *retQueue); 101 u8 *func_sh_802f3220(u32 seqId, u32 *a1); 102 struct AudioBankSample *func_sh_802f4978(s32 bankId, s32 idx); 103 s32 func_sh_802f47c8(s32 bankId, u8 idx, s8 *io); 104 void *func_sh_802f3f08(s32 poolIdx, s32 arg1, s32 arg2, s32 arg3, OSMesgQueue *retQueue); 105 void func_sh_802f41e4(s32 audioResetStatus); 106 BAD_RETURN(s32) func_sh_802f3368(s32 bankId); 107 void *func_sh_802f3764(s32 arg0, s32 idx, s32 *arg2); 108 s32 func_sh_802f3024(s32 bankId, s32 instId, s32 arg2); 109 void func_sh_802f30f4(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue *arg3); 110 void func_sh_802f3288(s32 idx); 111 112 #endif 113 114 #endif // AUDIO_LOAD_H