ogrebattle64/include/libmus.h

135 lines
3.9 KiB
C

#ifndef _LIBMUS_H_
#define _LIBMUS_H_
#include <ultra64.h>
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
typedef struct {
unsigned long control_flag;
int channels;
void *sched;
int thread_priority;
unsigned char *heap;
int heap_length;
unsigned char *ptr;
unsigned char *wbk;
void *default_fxbank;
int fifo_length;
int syn_updates;
int syn_output_rate;
int syn_rsp_cmds;
int syn_retraceCount;
int syn_num_dma_bufs;
int syn_dma_buf_size;
OSPiHandle *diskrom_handle;
} musConfig;
typedef enum {
MUSBOOL_OFF,
MUSBOOL_ON
} musBool;
typedef struct {
u64 *data;
int data_size;
u64 *ucode;
u64 *ucode_data;
} musTask;
typedef unsigned long musHandle;
typedef void (*LIBMUScb_marker)(musHandle, int);
typedef void (*LIBMUScb_install)(void);
typedef void (*LIBMUScb_waitframe)(void);
typedef void (*LIBMUScb_dotask)(musTask *);
typedef struct {
LIBMUScb_install install;
LIBMUScb_waitframe waitframe;
LIBMUScb_dotask dotask;
} musSched;
#define MUSCONTROL_RAM (1 << 0)
#define MUSFLAG_EFFECTS 1
#define MUSFLAG_SONGS 2
extern int MusInitialize(musConfig *config);
extern int MusSetFxType(int fxtype);
extern int MusSetSongFxChange(musBool onoff);
extern void MusSetMasterVolume(unsigned long flags, int volume);
extern musHandle MusStartSong(void *addr);
extern musHandle MusStartSongFromMarker(void *addr, int marker);
extern musHandle MusStartEffect(int number);
extern musHandle MusStartEffect2(int number, int volume, int pan,
int restartflag, int priority);
extern void MusStop(unsigned long flags, int speed);
extern int MusAsk(unsigned long flags);
extern int MusHandleAsk(musHandle handle);
extern int MusHandleStop(musHandle handle, int speed);
extern int MusHandleSetVolume(musHandle handle, int volume);
extern int MusHandleSetPan(musHandle handle, int pan);
extern int MusHandleSetFreqOffset(musHandle handle, float offset);
extern int MusHandleSetTempo(musHandle handle, int tempo);
extern int MusHandleSetReverb(musHandle handle, int reverb);
extern int MusHandlePause(musHandle handle);
extern int MusHandleUnPause(musHandle handle);
extern void* MusHandleGetPtrBank(musHandle handle);
extern void MusPtrBankInitialize(void *pbank, void *wbank);
extern void* MusPtrBankSetSingle(void *ipbank);
extern void MusPtrBankSetCurrent(void *ipbank);
extern void* MusPtrBankGetCurrent(void);
extern void MusFxBankInitialize(void *fxbank);
extern void MusFxBankSetSingle(void *ifxbank);
extern void MusFxBankSetCurrent(void *ifxbank);
extern void *MusFxBankGetCurrent(void);
extern int MusFxBankNumberOfEffects(void *ifxbank);
extern void MusFxBankSetPtrBank(void *ifxbank, void *ipbank);
extern void *MusFxBankGetPtrBank(void *ifxbank);
extern void MusFxBankSetSingle(void *ifxbank);
extern void MusSetScheduler(musSched *sched_list);
extern void MusSetMarkerCallback(void *callback);
extern int MusHandleWaveCount(musHandle handle);
extern unsigned short *MusHandleWaveAddress(musHandle handle);
#define MusBankInitialize(pbank, wbank) MusPtrBankInitialize(pbank, wbank)
#define MusBankStartSong(ipbank, addr) \
MusStartSong((addr) == (void *)MusPtrBankSetSingle(ipbank) ? (addr) : (addr))
#define MusBankStartEffect(ipbank, number) \
MusStartEffect((number) == (int)MusPtrBankSetSingle(ipbank) ? (number) \
: (number))
#define MusBankStartEffect2(ipbank, number, volume, pan, restartflag, \
priority) \
MusStartEffect2((number) == (int)MusPtrBankSetSingle(ipbank) ? (number) \
: (number), \
volume, pan, restartflag, priority)
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* _LIBMUS_H_ */