You've already forked ultrasm64-2
mirror of
https://github.com/HackerN64/ultrasm64-2.git
synced 2026-01-21 10:38:08 -08:00
Refresh 16.5
This commit is contained in:
@@ -1,7 +1,195 @@
|
||||
#ifndef _ULTRA64_LIBAUDIO_H_
|
||||
#define _ULTRA64_LIBAUDIO_H_
|
||||
/*====================================================================
|
||||
* libaudio.h
|
||||
*
|
||||
* Copyright 1993, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
#include "abi.h"
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.173 $
|
||||
* $Date: 1997/12/01 12:42:21 $
|
||||
* $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/libaudio.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef __LIB_AUDIO__
|
||||
#define __LIB_AUDIO__
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/mbi.h>
|
||||
|
||||
/***********************************************************************
|
||||
* misc defines
|
||||
***********************************************************************/
|
||||
|
||||
typedef s32 ALMicroTime;
|
||||
typedef u8 ALPan;
|
||||
|
||||
/***********************************************************************
|
||||
* Error handling
|
||||
***********************************************************************/
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define ALFailIf(condition, error) \
|
||||
if (condition) { \
|
||||
__osError(error, 0); \
|
||||
return; }
|
||||
|
||||
#else
|
||||
#define ALFailIf(condition, error) \
|
||||
if (condition) { \
|
||||
return; }
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define ALFlagFailIf(condition, flag, error) \
|
||||
if (condition) { \
|
||||
if(flag) __osError(error, 0); \
|
||||
return; }
|
||||
|
||||
#else
|
||||
#define ALFlagFailIf(condition, flag, error) \
|
||||
if (condition) { \
|
||||
return; }
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* Macros
|
||||
***********************************************************************/
|
||||
|
||||
#define ALBnkfPatch(src, base, type) (type)((uintptr_t) src + (uintptr_t) base)
|
||||
|
||||
/***********************************************************************
|
||||
* data structures for sound banks
|
||||
***********************************************************************/
|
||||
|
||||
#define AL_BANK_VERSION 0x4231 /* 'B1' */
|
||||
|
||||
/* Possible wavetable types */
|
||||
enum {AL_ADPCM_WAVE = 0,
|
||||
AL_RAW16_WAVE};
|
||||
|
||||
typedef struct {
|
||||
s32 order;
|
||||
s32 npredictors;
|
||||
s16 book[1]; /* Actually variable size. Must be 8-byte aligned */
|
||||
} ALADPCMBook;
|
||||
|
||||
typedef struct {
|
||||
u32 start;
|
||||
u32 end;
|
||||
u32 count;
|
||||
ADPCM_STATE state;
|
||||
} ALADPCMloop;
|
||||
|
||||
typedef struct {
|
||||
u32 start;
|
||||
u32 end;
|
||||
u32 count;
|
||||
} ALRawLoop;
|
||||
|
||||
typedef struct {
|
||||
ALMicroTime attackTime;
|
||||
ALMicroTime decayTime;
|
||||
ALMicroTime releaseTime;
|
||||
u8 attackVolume;
|
||||
u8 decayVolume;
|
||||
} ALEnvelope;
|
||||
|
||||
typedef struct {
|
||||
u8 velocityMin;
|
||||
u8 velocityMax;
|
||||
u8 keyMin;
|
||||
u8 keyMax;
|
||||
u8 keyBase;
|
||||
s8 detune;
|
||||
} ALKeyMap;
|
||||
|
||||
typedef struct {
|
||||
ALADPCMloop *loop;
|
||||
ALADPCMBook *book;
|
||||
} ALADPCMWaveInfo;
|
||||
|
||||
typedef struct {
|
||||
ALRawLoop *loop;
|
||||
} ALRAWWaveInfo;
|
||||
|
||||
typedef struct ALWaveTable_s {
|
||||
u8 *base; /* ptr to start of wave data */
|
||||
s32 len; /* length of data in bytes */
|
||||
u8 type; /* compression type */
|
||||
u8 flags; /* offset/address flags */
|
||||
union {
|
||||
ALADPCMWaveInfo adpcmWave;
|
||||
ALRAWWaveInfo rawWave;
|
||||
} waveInfo;
|
||||
} ALWaveTable;
|
||||
|
||||
typedef struct ALSound_s {
|
||||
ALEnvelope *envelope;
|
||||
ALKeyMap *keyMap;
|
||||
ALWaveTable *wavetable; /* offset to wavetable struct */
|
||||
ALPan samplePan;
|
||||
u8 sampleVolume;
|
||||
u8 flags;
|
||||
} ALSound;
|
||||
|
||||
typedef struct {
|
||||
u8 volume; /* overall volume for this instrument */
|
||||
ALPan pan; /* 0 = hard left, 127 = hard right */
|
||||
u8 priority; /* voice priority for this instrument */
|
||||
u8 flags;
|
||||
u8 tremType; /* the type of tremelo osc. to use */
|
||||
u8 tremRate; /* the rate of the tremelo osc. */
|
||||
u8 tremDepth; /* the depth of the tremelo osc */
|
||||
u8 tremDelay; /* the delay for the tremelo osc */
|
||||
u8 vibType; /* the type of tremelo osc. to use */
|
||||
u8 vibRate; /* the rate of the tremelo osc. */
|
||||
u8 vibDepth; /* the depth of the tremelo osc */
|
||||
u8 vibDelay; /* the delay for the tremelo osc */
|
||||
s16 bendRange; /* pitch bend range in cents */
|
||||
s16 soundCount; /* number of sounds in this array */
|
||||
ALSound *soundArray[1];
|
||||
} ALInstrument;
|
||||
|
||||
typedef struct ALBank_s {
|
||||
s16 instCount; /* number of programs in this bank */
|
||||
u8 flags;
|
||||
u8 pad;
|
||||
s32 sampleRate; /* e.g. 44100, 22050, etc... */
|
||||
ALInstrument *percussion; /* default percussion for GM */
|
||||
ALInstrument *instArray[1]; /* ARRAY of instruments */
|
||||
} ALBank;
|
||||
|
||||
typedef struct { /* Note: sizeof won't be correct */
|
||||
s16 revision; /* format revision of this file */
|
||||
s16 bankCount; /* number of banks */
|
||||
ALBank *bankArray[1]; /* ARRAY of bank offsets */
|
||||
} ALBankFile;
|
||||
|
||||
void alBnkfNew(ALBankFile *f, u8 *table);
|
||||
|
||||
/***********************************************************************
|
||||
* Sequence Files
|
||||
***********************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -48,4 +236,8 @@ typedef struct
|
||||
|
||||
void alSeqFileNew(ALSeqFile *f, u8 *base);
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user