Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/audio/load.h
7857 views
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)
40
extern struct AudioBufferParametersEU gAudioBufferParameters;
41
#endif
42
extern s32 gAiFrequency;
43
#ifdef VERSION_SH
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
#ifdef VERSION_SH
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
#ifdef VERSION_SH
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)
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
#ifdef VERSION_SH
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
#ifdef VERSION_SH
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
115
116