sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

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