Mario Kart 64
Loading...
Searching...
No Matches
load.h
Go to the documentation of this file.
1#ifndef AUDIO_LOAD_H
2#define AUDIO_LOAD_H
3
4#include <libultra/types.h>
5#include "audio/internal.h"
6#include "PR/libaudio.h"
7#include <stdio.h>
8
9#define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40
10
11#define PRELOAD_BANKS 2
12#define PRELOAD_SEQUENCE 1
13
14#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t) (ptr) != (uintptr_t) &gSequenceChannelNone)
15
16struct SharedDma {
17 /*0x0*/ u8* buffer; // target, points to pre-allocated buffer
18 /*0x4*/ uintptr_t source; // device address
19 /*0x8*/ u16 sizeUnused; // set to bufSize, never read
20 /*0xA*/ u16 bufSize; // size of buffer
21 /*0xC*/ u8 unused2; // set to 0, never read
22 /*0xD*/ u8 reuseIndex; // position in sSampleDmaReuseQueue1/2, if ttl == 0
23 /*0xE*/ u8 ttl; // duration after which the DMA can be discarded
24}; // size = 0x10
25
26void audio_init(void);
27void audio_dma_copy_immediate(u8* devAddr, void* vAddr, size_t nbytes);
28void audio_dma_copy_async(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*);
29void audio_dma_partial_copy_async(uintptr_t*, u8**, size_t*, OSMesgQueue*, OSIoMesg*);
31void* dma_sample_data(uintptr_t, u32, s32, u8*);
32void func_800BB030(s32);
34s32 func_800BB388(s32 bankId, s32 instId, s32 arg2);
35void func_800BB43C(ALSeqFile*, u8*);
36void patch_sound(struct AudioBankSound* sound, u8* memBase, u8* offsetBase);
37void func_800BB584(s32);
38void patch_audio_bank(struct AudioBank* mem, u8* offset, u32 numInstruments, u32 numDrums);
39struct AudioBank* bank_load_immediate(s32, s32);
40struct AudioBank* bank_load_async(s32, s32, struct SequencePlayer*);
41void* sequence_dma_immediate(s32, s32);
42void* sequence_dma_async(s32, s32, struct SequencePlayer*);
43struct CtlEntry* load_banks_immediate(s32, u8*);
44void preload_sequence(u32, u8);
45void load_sequence(u32, u32, s32);
46void load_sequence_internal(u32, u32, s32);
47
52extern struct AudioListItem gLayerFreeList;
53extern struct NotePool gNoteFreeLists;
54extern OSMesgQueue gCurrAudioFrameDmaQueue;
57extern OSMesgQueue D_803B6720;
58extern OSMesg D_803B6738;
59
60extern OSIoMesg D_803B6740;
61extern struct SharedDma sSampleDmas[0x70];
62extern u32 gSampleDmaNumListItems;
63extern u32 sSampleDmaListSize1;
64extern s32 D_803B6E60;
65extern s32 load_bss_pad;
66
67extern u8 sSampleDmaReuseQueue1[256];
68extern u8 sSampleDmaReuseQueue2[256];
73
76extern ALSeqFile* gAlTbl;
77extern u8* gAlBankSets;
78extern u16 gSequenceCount;
79extern struct CtlEntry* gCtlEntries;
81extern u32 D_803B70A8;
82extern s32 gMaxAudioCmds;
83extern s32 gMaxSimultaneousNotes;
85extern s8 gAudioLibSoundMode;
86extern volatile s32 gAudioFrameCount;
88
89#endif // AUDIO_LOAD_H
s32 gCurrAudioFrameDmaCount
Definition load.c:61
s16 gTempoInternalToExternal
Definition load.c:57
s32 gMaxAudioCmds
Definition load.c:55
u32 gSampleDmaNumListItems
Definition load.c:35
#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:42
s8 gAudioLibSoundMode
Definition load.c:58
u8 sSampleDmaReuseQueue2[256]
Definition load.c:41
OSIoMesg D_803B6740
Definition load.c:33
ALSeqFile * gAlTbl
Definition load.c:49
struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS]
Definition load.c:20
struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS]
Definition load.c:21
struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS]
Definition load.c:22
u8 sSampleDmaReuseQueueTail2
Definition load.c:43
u32 sSampleDmaListSize1
Definition load.c:36
u8 sSampleDmaReuseQueueHead2
Definition load.c:45
u8 sSampleDmaReuseQueueHead1
Definition load.c:44
u8 sSampleDmaReuseQueue1[256]
Definition load.c:40
volatile s32 gAudioFrameCount
Definition load.c:60
s32 load_bss_pad
Definition load.c:38
OSMesgQueue D_803B6720
Definition load.c:30
struct SharedDma sSampleDmas[0x70]
Definition load.c:34
OSMesg gCurrAudioFrameDmaMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]
Definition load.c:28
struct SequenceChannel gSequenceChannelNone
Definition load.c:23
u16 gSequenceCount
Definition load.c:51
OSMesgQueue gCurrAudioFrameDmaQueue
Definition load.c:27
s32 D_803B6E60
Definition load.c:37
OSIoMesg gCurrAudioFrameDmaIoMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE]
Definition load.c:29
s32 gMaxSimultaneousNotes
Definition load.c:56
struct AudioBufferParametersEU gAudioBufferParameters
Definition load.c:53
ALSeqFile * gSeqFileHeader
Definition load.c:47
struct NotePool gNoteFreeLists
Definition load.c:26
u8 * gAlBankSets
Definition load.c:50
struct AudioListItem gLayerFreeList
Definition load.c:25
struct CtlEntry * gCtlEntries
Definition load.c:52
u32 D_803B70A8
Definition load.c:54
ALSeqFile * gAlCtlHeader
Definition load.c:48
OSMesg D_803B6738
Definition load.c:31
void decrease_sample_dma_ttls(void)
Definition load.c:142
void func_800BB030(s32)
void * sequence_dma_immediate(s32, s32)
Definition load.c:552
void * sequence_dma_async(s32, s32, struct SequencePlayer *)
Definition load.c:572
void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums)
Definition load.c:429
struct AudioBank * bank_load_async(s32, s32, struct SequencePlayer *)
Definition load.c:520
void load_sequence_internal(u32, u32, s32)
Definition load.c:663
struct CtlEntry * load_banks_immediate(s32, u8 *)
Definition load.c:609
void * dma_sample_data(uintptr_t, u32, s32, u8 *)
Definition load.c:170
void audio_dma_partial_copy_async(uintptr_t *, u8 **, size_t *, OSMesgQueue *, OSIoMesg *)
Definition load.c:132
void audio_dma_copy_async(uintptr_t, void *, size_t, OSMesgQueue *, OSIoMesg *)
Definition load.c:123
void load_sequence(u32, u32, s32)
Definition load.c:653
struct AudioBank * bank_load_immediate(s32, s32)
Definition load.c:497
void audio_dma_copy_immediate(u8 *devAddr, void *vAddr, size_t nbytes)
Definition load.c:112
void audio_init(void)
void preload_sequence(u32, u8)
Definition load.c:620
s32 func_800BB388(s32 bankId, s32 instId, s32 arg2)
Definition load.c:336
s32 func_800BB304(struct AudioBankSample *)
Definition load.c:314
#define AUDIO_FRAME_DMA_QUEUE_SIZE
Definition load.h:9
void patch_sound(struct AudioBankSound *sound, u8 *memBase, u8 *offsetBase)
Definition load.c:381
void func_800BB584(s32)
Definition load.c:415
void func_800BB43C(ALSeqFile *, u8 *)
Definition load.c:369
uint16_t nbytes
Definition mixer.c:82
Definition libaudio.h:11
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 internal.h:344
Definition internal.h:287
Definition internal.h:188
Definition load.h:16
uintptr_t source
Definition load.h:18
u16 sizeUnused
Definition load.h:19
u8 reuseIndex
Definition load.h:22
u8 * buffer
Definition load.h:17
u8 unused2
Definition load.h:21
u16 bufSize
Definition load.h:20
u8 ttl
Definition load.h:23