Mercurial > ~darius > hgwebdir.cgi > mikmod
diff playercode/drv_raw.c @ 8:b30908f9d9f9
Initial entry of mikmod into the CVS tree.
author | darius |
---|---|
date | Fri, 23 Jan 1998 16:05:10 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/playercode/drv_raw.c Fri Jan 23 16:05:10 1998 +0000 @@ -0,0 +1,111 @@ +/* + +Name: +DRV_RAW.C + +Description: +Mikmod driver for output to a file called MUSIC.RAW + +MS-DOS Programmers: + !! DO NOT CALL MD_UPDATE FROM A INTERRUPT IF YOU USE THIS DRIVER !! + +Portability: + +MSDOS: BC(y) Watcom(y) DJGPP(y) +Win95: BC(y) +Linux: y + +(y) - yes +(n) - no (not possible or not useful) +(?) - may be possible, but not tested + +*/ + +#include "mikmod.h" + +#ifdef __GNUC__ +#include <sys/types.h> +#else +#include <io.h> +#endif +#include <sys/stat.h> +#include <fcntl.h> + +#define RAWBUFFERSIZE 8192 + +static int rawout; + +static SBYTE RAW_DMABUF[RAWBUFFERSIZE]; + + +static BOOL RAW_IsThere(void) +{ + return 1; +} + + +static BOOL RAW_Init(void) +{ + if(-1 == (rawout = open("music.raw", +#ifndef __GNUC__ + O_BINARY | +#endif + O_RDWR | O_TRUNC | O_CREAT, S_IREAD | S_IWRITE))) + return 1; + + md_mode |= DMODE_SOFT_MUSIC | DMODE_SOFT_SNDFX; + + if(VC_Init()) return 1; + + return 0; +} + + +static void RAW_Exit(void) +{ + VC_Exit(); + close(rawout); +} + + +static void RAW_Update(void) +{ + VC_WriteBytes(RAW_DMABUF, RAWBUFFERSIZE); + write(rawout, RAW_DMABUF, RAWBUFFERSIZE); +} + + +static BOOL RAW_Reset(void) +{ + return 0; +} + + +MDRIVER drv_raw = +{ NULL, + "music.raw file", + "RAW [music.raw] file output driver v1.0", + 0,255, + RAW_IsThere, + VC_SampleLoad, + VC_SampleUnload, + VC_SampleSpace, + VC_SampleLength, + RAW_Init, + RAW_Exit, + RAW_Reset, + VC_SetNumVoices, + VC_PlayStart, + VC_PlayStop, + RAW_Update, + VC_VoiceSetVolume, + VC_VoiceSetFrequency, + VC_VoiceSetPanning, + VC_VoicePlay, + VC_VoiceStop, + VC_VoiceStopped, + VC_VoiceReleaseSustain, + VC_VoiceGetPosition, + VC_VoiceRealVolume +}; +