Mario Kart 64
load.h
Go to the documentation of this file.
1 #ifndef AUDIO_LOAD_H
2 #define AUDIO_LOAD_H
3 
4 #include <PR/ultratypes.h>
5 #include "audio/internal.h"
6 
7 #define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40
8 
9 #define PRELOAD_BANKS 2
10 #define PRELOAD_SEQUENCE 1
11 
12 #define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gSequenceChannelNone)
13 
14 struct SharedDma {
15  /*0x0*/ u8 *buffer; // target, points to pre-allocated buffer
16  /*0x4*/ uintptr_t source; // device address
17  /*0x8*/ u16 sizeUnused; // set to bufSize, never read
18  /*0xA*/ u16 bufSize; // size of buffer
19  /*0xC*/ u8 unused2; // set to 0, never read
20  /*0xD*/ u8 reuseIndex; // position in sSampleDmaReuseQueue1/2, if ttl == 0
21  /*0xE*/ u8 ttl; // duration after which the DMA can be discarded
22 }; // size = 0x10
23 
24 void audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes);
25 void audio_dma_copy_async(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*);
26 void audio_dma_partial_copy_async(uintptr_t*, u8**, ssize_t*, OSMesgQueue*, OSIoMesg*);
27 void decrease_sample_dma_ttls(void);
28 void *dma_sample_data(uintptr_t, u32, s32, u8*);
31 s32 func_800BB388(s32 bankId, s32 instId, s32 arg2);
32 void func_800BB43C(ALSeqFile*, u8*);
33 void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase);
34 void func_800BB584(s32);
35 void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums);
39 void *sequence_dma_async(s32, s32, struct SequencePlayer*);
40 u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount);
42 void preload_sequence(u32, u8);
43 void load_sequence(u32, u32, s32);
45 
50 extern struct AudioListItem gLayerFreeList;
51 extern struct NotePool gNoteFreeLists;
52 extern OSMesgQueue gCurrAudioFrameDmaQueue;
55 extern OSMesgQueue D_803B6720;
56 extern OSMesg D_803B6738;
57 
58 extern OSIoMesg D_803B6740;
59 extern struct SharedDma sSampleDmas[0x70];
62 extern s32 D_803B6E60;
63 extern s32 load_bss_pad;
64 
65 extern u8 sSampleDmaReuseQueue1[256];
66 extern u8 sSampleDmaReuseQueue2[256];
71 
73 extern ALSeqFile *gAlCtlHeader;
74 extern ALSeqFile *gAlTbl;
75 extern u8 *gAlBankSets;
76 extern u16 gSequenceCount;
77 extern struct CtlEntry *gCtlEntries;
79 extern u32 D_803B70A8;
80 extern s32 gMaxAudioCmds;
83 extern s8 gAudioLibSoundMode;
84 extern volatile s32 gAudioFrameCount;
86 
87 #endif // AUDIO_LOAD_H
#define SEQUENCE_CHANNELS
Definition: internal.h:9
#define SEQUENCE_LAYERS
Definition: internal.h:10
#define SEQUENCE_PLAYERS
Definition: internal.h:8
u8 sSampleDmaReuseQueueTail1
Definition: load.c:35
void decrease_sample_dma_ttls(void)
Definition: load.c:135
s16 gTempoInternalToExternal
Definition: load.c:50
void func_800BB030(s32)
s8 gAudioLibSoundMode
Definition: load.c:51
u8 sSampleDmaReuseQueue2[256]
Definition: load.c:34
OSIoMesg D_803B6740
Definition: load.c:26
s32 gMaxAudioCmds
Definition: load.c:48
void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums)
Definition: load.c:424
void load_sequence_internal(u32, u32, s32)
Definition: load.c:697
ALSeqFile * gAlTbl
Definition: load.c:42
struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS]
Definition: load.c:13
struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS]
Definition: load.c:14
struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS]
Definition: load.c:15
u8 sSampleDmaReuseQueueTail2
Definition: load.c:36
void * sequence_dma_async(s32, s32, struct SequencePlayer *)
Definition: load.c:568
void * sequence_dma_immediate(s32, s32)
Definition: load.c:548
u32 sSampleDmaListSize1
Definition: load.c:29
void audio_dma_copy_async(uintptr_t, void *, size_t, OSMesgQueue *, OSIoMesg *)
Definition: load.c:117
u8 sSampleDmaReuseQueueHead2
Definition: load.c:38
void audio_dma_partial_copy_async(uintptr_t *, u8 **, ssize_t *, OSMesgQueue *, OSIoMesg *)
Definition: load.c:126
u8 sSampleDmaReuseQueueHead1
Definition: load.c:37
u8 sSampleDmaReuseQueue1[256]
Definition: load.c:33
void load_sequence(u32, u32, s32)
Definition: load.c:687
u8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount)
Definition: load.c:600
volatile s32 gAudioFrameCount
Definition: load.c:53
s32 load_bss_pad
Definition: load.c:31
OSMesgQueue D_803B6720
Definition: load.c:23
struct SharedDma sSampleDmas[0x70]
Definition: load.c:27
struct AudioBank * bank_load_async(s32, s32, struct SequencePlayer *)
Definition: load.c:517
OSMesg gCurrAudioFrameDmaMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]
Definition: load.c:21
s32 gCurrAudioFrameDmaCount
Definition: load.c:54
struct SequenceChannel gSequenceChannelNone
Definition: load.c:16
u32 gSampleDmaNumListItems
Definition: load.c:28
u16 gSequenceCount
Definition: load.c:44
void preload_sequence(u32, u8)
Definition: load.c:654
OSMesgQueue gCurrAudioFrameDmaQueue
Definition: load.c:20
struct AudioBank * load_banks_immediate(s32, u8 *)
Definition: load.c:630
s32 func_800BB388(s32 bankId, s32 instId, s32 arg2)
Definition: load.c:331
s32 func_800BB304(struct AudioBankSample *)
Definition: load.c:310
void * dma_sample_data(uintptr_t, u32, s32, u8 *)
Definition: load.c:163
s32 D_803B6E60
Definition: load.c:30
#define AUDIO_FRAME_DMA_QUEUE_SIZE
Definition: load.h:7
OSIoMesg gCurrAudioFrameDmaIoMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]
Definition: load.c:22
s32 gMaxSimultaneousNotes
Definition: load.c:49
void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase)
Definition: load.c:376
void func_800BB584(s32)
Definition: load.c:411
struct AudioBufferParametersEU gAudioBufferParameters
Definition: load.c:46
void func_800BB43C(ALSeqFile *, u8 *)
Definition: load.c:364
ALSeqFile * gSeqFileHeader
Definition: load.c:40
struct NotePool gNoteFreeLists
Definition: load.c:19
u8 * gAlBankSets
Definition: load.c:43
void audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes)
Definition: load.c:106
struct AudioListItem gLayerFreeList
Definition: load.c:18
struct CtlEntry * gCtlEntries
Definition: load.c:45
struct AudioBank * bank_load_immediate(s32, s32)
Definition: load.c:493
u32 D_803B70A8
Definition: load.c:47
ALSeqFile * gAlCtlHeader
Definition: load.c:41
OSMesg D_803B6738
Definition: load.c:24
Definition: libaudio.h:13
Definition: internal.h:134
Definition: internal.h:143
Definition: internal.h:167
Definition: internal.h:534
Definition: internal.h:68
Definition: internal.h:172
Definition: internal.h:85
Definition: os_pi.h:53
Definition: internal.h:344
Definition: internal.h:287
Definition: internal.h:188
Definition: load.h:14
uintptr_t source
Definition: load.h:16
u16 sizeUnused
Definition: load.h:17
u8 reuseIndex
Definition: load.h:20
u8 * buffer
Definition: load.h:15
u8 unused2
Definition: load.h:19
u16 bufSize
Definition: load.h:18
u8 ttl
Definition: load.h:21
signed int s32
Definition: ultratypes.h:15
unsigned int u32
Definition: ultratypes.h:16
signed char s8
Definition: ultratypes.h:11
signed short int s16
Definition: ultratypes.h:13
unsigned short int u16
Definition: ultratypes.h:14
ptrdiff_t ssize_t
Definition: ultratypes.h:43
unsigned char u8
Definition: ultratypes.h:12