home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 13
/
CD_ASCQ_13_0494.iso
/
maj
/
665
/
ruckdac.h
< prev
next >
Wrap
Text File
|
1994-02-26
|
10KB
|
270 lines
/* ruckdac.h
Defines the RUCKUS library's structs, constants, and prototype
v1.0d 27-Feb-94
***********************************************************************
* NOTE: RUCKUS is for medium, large, or huge models (do not use tiny, *
* ---- small, or compact since these allow for only 1 code segment). *
***********************************************************************
ALL Borland C compilers must use the DACMEMBC.OBJ module patch for
RUCKDAC.LIB. See the BORLAND.ZIP file for more information.
Struct types must be standard byte packed; do not special align elements
** MS-specific #pragma pack(1) and pack() used in this header file **
*/
#pragma pack(1)
int far pascal RUCKDAC(void far *datapack);
#define SysInfoDac 0
#define InitDac 1
#define ExitDac 2
#define AtExitDac 3
#define LoadDac 4
#define PlayDac 5
#define RecordDac 6
#define StoreDac 7
#define EndDac 8
#define PauseDac 9
#define DeallocDac 10
#define SetAllDac 20
#define SetVolumeDac 21
#define SetIntRateDac 22
#define SetPriorityDac 23
#define GetBufferDataDac 28
#define GetBytePosDac 29
#define SetAllSBP 30
#define SetVolMainSBP 31
#define SetVolVocSBP 32
#define SetLevelMicSBP 33
#define SetLevelCDSBP 34
#define SetLevelLineSBP 35
#define SetFilterOutSBP 36
#define SetFilterInSBP 37
#define SetSourceSBP 38
#define SetStereoSBP 39
#define SetSpeakerSB 40
#define GetMixerRegSBP 48
#define GetDacSB 49
#define ExitMod 50
#define AtExitMod 51
#define LoadMod 52
#define PlayMod 53
#define EndMod 54
#define PauseMod 55
#define SetIntRateMod 56
#define SetSpeedMod 57
#define SetVolumeMod 58
#define SetPositionMod 59
#define SetStereoMod 60
#define SetFastMod 61
/* current highest function is 61 */
struct DeallocPack { /* DP */
unsigned Func;
int Stat;
unsigned HandSeg; /* RUCKUS allocates either XMM handle or DOS para */
unsigned TypeFlag; /* 0=DOS para, 1=XMS handle */
}; /* 8 */
struct GetDataPack { /* GDP */
unsigned Func;
int Stat;
unsigned long BytePos; /* current byte relative base ptr (27) */
char far *BufferPtr; /* far pointer to buffer to fill with data */
long StartPos; /* start get at this offset relative BufferPtr */
unsigned BufferCnt; /* bytes to fill (2-65520) */
unsigned MixerReg; /* SBPro mixer register to get */
}; /* 20 */
struct InitPack { /* IP */
unsigned Func;
int Stat;
unsigned DeviceID; /* 0=SPKR,1=LPTDAC,2=DSS,4=SB,5=SBPro */
unsigned IOport;
unsigned IRQline;
unsigned DMAch;
unsigned Flags; /* see Appendix D. */
void far *InfoPtr; /* ret:far ptr to dac info */
void far *DacExitPtr; /* ret:far ptr to dac's ExitDac routine */
void far *ModExitPtr; /* ret:far ptr to mod's ExitMod routine */
}; /* 26 */
struct LoadPack { /* LP */
unsigned Func;
int Stat;
void far *FilenamePtr;/* far ptr to filenameZ to load */
unsigned long StartPos; /* offset into file to start load at */
unsigned long LoadSize; /* number of bytes to load (or 0 for autosize) */
int XMMflag; /* if <> 0 use XMS for load */
int XMMhandle; /* ret:XMS handle, or */
void far *LoadPtr; /* ret:DOS seg:offset (offset always 0) */
}; /* 24 */
struct PlaybackPack { /* PBP */
unsigned Func;
int Stat;
unsigned Mode; /* mode (0=interrupt FG,1=BG,2=DMA,3=DMA+BG for mod) */
unsigned XMMhandle; /* if <> 0 this XMM handle used regardless */
void far *LoadPtr; /* seg:off to start of data to play */
unsigned BufferSize; /* size of DMA buffer for mod playback */
}; /* 14 */
struct PausePack { /* PP */
unsigned Func;
int Stat;
unsigned Pause; /* 0=unpause else pause */
}; /* 6 */
struct RecordPack { /* RP */
unsigned Func;
int Stat;
unsigned SampleRate;
int XMMhandle; /* -1 auto XMS (ret here) else use this handle */
void far *RecordPtr; /* seg:off of buffer to store (0 for auto-store) */
unsigned long RecordBytes; /* bytes to record */
unsigned StereoFlag; /* stereo flag */
}; /* 18 */
struct SaveDataPack { /* SDP */
unsigned Func;
int Stat;
void far *FilenamePtr; /* far ptr to filenameZ to save */
void far *DataPtr; /* pointer to start of data to save */
unsigned FileType; /* 1=VOC,2=WAV */
unsigned XMMhandle; /* XMS handle of data to save (0 if DOS data) */
}; /* 16 */
struct SetPack { /* SP */
unsigned Func;
int Stat; /* (if volume=0 SB speaker off'ed else on'ed) */
unsigned Volume; /* volume (left ch=MSB,right=LSB) (0-127,0-127) */
unsigned IntRate; /* playback interrupt rate (5000-23000) */
unsigned Priority; /* priority level (0-2, default=1) */
}; /* 10 */
struct SetModPack { /* SMP */
unsigned Func;
int Stat;
unsigned VolCh1; /* channel volume (0-255) */
unsigned VolCh2; /* channel volumes adjustments made only */
unsigned VolCh3; /* if FastMode=0 */
unsigned VolCh4;
unsigned Stereo; /* playback mode (0=mono,stereo 1,2,3) */
int FastMode; /* fast playback (0=normal,1 fast,-1 skip) */
unsigned IntRate; /* playback interrupt rate (5000-45500) */
unsigned Position; /* pattern list position (0-patterns to play) */
unsigned Speed; /* overall playback speed (1-15,default=6,15=slow) */
unsigned SliceAdj; /* slice adjust (1-4096,default=1) set via FastMod */
}; /* 24 */
struct SetProPack { /* SPP */
unsigned Func;
int Stat;
unsigned Volume; /* volume (low=right;0-15, high byte=left;0-15) */
unsigned VolVoc;
unsigned VolMic; /* (mono only, 0-7) input level */
unsigned VolCD; /* input level (0-15,0-15) */
unsigned VolLI; /* input level (0-15,0-15) */
unsigned FilterOut; /* 0=filter off, 1=filter on */
unsigned FilterIn; /* 0=filter off, 1=3.2kHz, 2=8.8kHz */
unsigned SourceIn; /* 0=mic,1=CD,2=line */
unsigned StereoIn; /* 0=mono,1=stereo record */
}; /* 22 */
struct XitPack { /* XP */
unsigned Func;
int Stat;
}; /* 4 */
struct SysDev { /* SD (used by SysInfoPack below) */
int device; /* =1 device available */
unsigned Port;
unsigned IRQ;
unsigned DMA;
unsigned Flags; /* bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY */
}; /* 10 */
struct SysInfoPack { /* SIP */
unsigned Func;
int Stat;
unsigned CPU; /* CPU class (88,286,386,486) */
unsigned CPUmode; /* 0=real mode,1=PM,2=PM w/paging */
unsigned MHz; /* approx speed (5,20,33) */
struct SysDev SD[6];
}; /* 70 */
/* dac and mod data area structure */
struct DacDataArea {
unsigned DeviceID; /* 0 ;device ID */
unsigned IOport; /* 2 ;port of device */
unsigned IRQ; /* 4 ;IRQ of device */
unsigned DMA; /* 6 ;DMA of device */
unsigned Flags; /* 8 ;bit0=1 use DOS UMB memory */
/* ;bit1-3 reserved */
/* ;bit4=1 force SBPro device if SB15 (DSPtype=3) */
/* ; (but DSPversion remains same) */
/* ;bit5=1 force XMS2 to be used */
/* ;bit6=1 force device speaker on until exit */
/* ;bit7=1 force passed parms to be used */
/* ; Following values are ret bits */
/* ;bit8=1 paging mechanism in force, no UMBs */
/* ;bit9-15 reserved */
unsigned End; /* 10 ;=1 end of play (dac play,does not include mod) */
unsigned Pause; /* 12 ;=1 pause play */
unsigned EndOfMod; /* 14 ;=1 end of mod play (when dac@end AND dac@endmod */
/* ; both are 1 then play is done) */
unsigned MemDOS; /* 16 ;DOS memory available (in K) */
unsigned MemXMM; /* 18 ;XMS memory available (in K) */
unsigned Type; /* 20 ;digital file type (1=VOC,2=WAV,3=MOD) */
unsigned MemUsed; /* 22 ;memory used for last file load (in K) */
unsigned SampleRate; /* 24 ;sample rate currently playing */
unsigned Stereo; /* 26 ;stereo playback (data is stereo) */
unsigned long VocLen; /* 28 ;length of voc block (only current block) */
void far *VocPtrPtr; /* 32 ;pointer to pointer->current data */
unsigned long RecordLen;/*36 ;length of recorded data */
}; /* 40 */
struct ModData {
void near *chInfoPtr;/* -2 ;near ptr to channel info (not listed) */
unsigned Type; /* 0 ;mod type (15 or 31 samples) */
unsigned Samples; /* 2 ;number of instrument samples in mod */
unsigned HeaderSeg; /* 4 ;header segment (aka sample info) */
unsigned PatternSeg; /* 6 ;patterns' segment (1 to pats2play 1K pats) */
unsigned SampleSeg[31];/* 8 (+62) ;list of sample segments */
unsigned Stereo; /* 70 ;=1 then play in stereo (only SBPro can set) */
unsigned FastMode; /* 72 ;=1 then channel volume adjusts disabled */
unsigned PatListPos; /* 74 ;byte position within mod@patterList (0-127) */
unsigned NotePatPos; /* 76 ;note position within pattern 1K area (0-1008) */
/* ;pattern#=patternList(patListPos) */
/* ;note is at offset (pattern#*1024)+notePatPos */
/* ;-- in segment mod@patternSeg */
unsigned HiPattern; /* 78 ;highest pattern number to play/+1!/ (0-63) */
unsigned Pats2play; /* 80 ;patterns to play (direct DOS file load here) */
char PatternList[128]; /* 82 (+128) ;pattern positions (to here) */
char MKoverflow[6]; /*210 (+6) ;overflow for 31-instr patpos read */
unsigned MemUsed; /*216 ;DOS mem needed by mod file loaded (in para) */
unsigned long VS; /*218 ;times VS handler entered (50Hz rate) */
}; /* 222 */
#pragma pack()
/* end of ruckdac.h */