/* Converts VOC samples to raw SPL format */

#include <stdio.h>
#include <conio.h>

unsigned char buffer[32768];

main(int argc,char **argv)
{
FILE *vocf, *splf;
char vocfname[80],splfname[80];
unsigned i,numread;
unsigned char in_char;
char *ptr;
char silencebyte = 0x80;

        if(argc > 1)
        {
                strcpy(vocfname,argv[1]);
                if(strstr(strupr(vocfname),".VOC") == NULL)
                       strcat(vocfname,".VOC");

                 if(vocf = fopen(vocfname,"rb"))
                 {
                          if(argc < 3)
                          {
                                ptr = strchr(vocfname,'.');
                                strncpy( splfname, vocfname, ptr - vocfname);
                                splfname[ptr-vocfname] = 0;
                                strcat(splfname,".SPL");
                          }
                          else
                                       strcpy(splfname,argv[2]);

                          splf = fopen(splfname,"wb");

                          fread(buffer,1,0x1A,vocf);    /* Read past VOC header */
                          fread(buffer,1,6,vocf);       /* Read past 1st block header */

                          do
                          {
                                       numread = fread(buffer,1,sizeof(buffer),vocf);
                                       fwrite(buffer,1,numread,splf);
                          } while(numread == sizeof(buffer));

                          fseek(splf,-1,SEEK_CUR);
                          fwrite(&silencebyte,1,1,splf);

                          fclose(vocf);
                          fclose(splf);

                          printf("Ok.\n");
                 }
                 else
                          printf("File %s not found!\n",argv[1]);
        }
        else
        {
                 printf("VOC2SPL converts VOC samples to Raw SPL format\n");
                 printf("usage: voc2spl <VOCInFile> [<SPLOutFile>]\n");
        }
}