/***************************************************************************
* NAME: THREED.H
** COPYRIGHT:
** "Copyright (c) 1992, by FORTE
**
** "This software is furnished under a license and may be used,
** copied, or disclosed only in accordance with the terms of such
** license and with the inclusion of the above copyright notice.
** This software or any other copies thereof may not be provided or
** otherwise made available to any other person. No title to and
** ownership of the software is hereby transfered."
****************************************************************************
* CREATION DATE: 02/01/93
*--------------------------------------------------------------------------*
* VERSION DATE NAME DESCRIPTION
*> 1.0 02/01/93 Original
***************************************************************************/
#ifdef MSOFTC
#define _Cdecl _cdecl
#else
#if __STDC__
#undef _Cdecl
#define _Cdecl
#else
#define _Cdecl cdecl
#endif
#endif
#define FRONT_VOICE 0
#define NEAR_VOICE 1
#define REAR_VOICE 2
#define FAR_VOICE 3
#define UP_VOICE 4
#define DOWN_VOICE 5
#define XAXIS_3D 0
#define YAXIS_3D 1
#define ZAXIS_3D 2
typedef struct {
int voicenum; /* voice to start */
int curvol; /* current volume */
unsigned long begin; /* start location in ultra DRAM */
unsigned long start; /* start loop location in ultra DRAM */
unsigned long end; /* end location in ultra DRAM */
} VOICE_DATA_3D;
/* flag definitions */
#define RIGHT_HEMI 0x01 /* sound is in right hemisphere */
#define FRONT_HEMI 0x02 /* sound is in front */
#define TOP_HEMI 0x04 /* sound is above horizontal */
typedef struct {
char type; /* see above bits .... */
int flags; /* hemisphere flags */
char rate; /* set for speed of ramping ... */
int maxvol; /* volume when at 0,0,0 location */
int num_tracks; /* number of tracks for this sound */
unsigned long freq;
unsigned char vmode; /* mode to run the voice (loop etc) */
unsigned char dmode; /* mode to run the dma channel in */
VOICE_DATA_3D vdata[6]; /* voice specific data */
} SOUND_3D;
/* Error codes returned from the 3D functions */
/* Don't return a 1. Thats ULTRA_OK & defined in ultraerr.h */
#define NO_3D_FILE 101 /* Can't open file */
#define BAD_3D_HDR 102 /* Header for file is corrupt/non-existant */
#define NO_DRAM_3D 103 /* Not enough room for this sound */
#define NO_3D_HDR 104 /* No header on this file */
#define NOT_BLOCK_DATA 105 /* data not in block format */
#define BAD_FILE_DATA 106 /* not enough data as header says */
#define NOT_INTERLEAVED_DATA 107 /* data not in interleaved format */
#define BAD_3D_FREQ 108 /* invalid freq. for interleaved 3D data */
void _Cdecl UltraAbsPosition3d(SOUND_3D *, int, int, int);
void _Cdecl UltraAngFltPosition3d(SOUND_3D *, double, double, int);
void _Cdecl UltraAngPosition3d(SOUND_3D *, int, int, int);
void _Cdecl UltraCloseDup3d(SOUND_3D *);
int _Cdecl UltraDup3d(SOUND_3D *, SOUND_3D *);
int _Cdecl UltraLoad3dEffect(SOUND_3D *, char *, void far *, unsigned int);
int _Cdecl UltraSetFreq3d(SOUND_3D *, unsigned long);
void _Cdecl UltraSetFrequency(int, unsigned long);
void _Cdecl UltraStart3d(SOUND_3D *);
void _Cdecl UltraStop3d(SOUND_3D *, int);
void _Cdecl UltraUnLoad3dEffect(SOUND_3D *);
/* interleaved specific functions */
int _Cdecl UltraSetup3dInterleave(SOUND_3D *, char *, unsigned long);
void _Cdecl UltraRelease3dInterleave(SOUND_3D *);