home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Game Guide / AmigaGameGuide_CD.iso / Amiga / PD-Games / DogFight! / Sources.lha / ms.c < prev    next >
C/C++ Source or Header  |  1994-05-21  |  1KB  |  63 lines

  1. #include <stream.h>
  2. #include <dos/dos.h>
  3. #include <exec/types.h>
  4. #include <clib/dos_protos.h>
  5. #include <pragma/dos_lib.h>
  6.  
  7. #ifndef MakeID
  8. #define MakeID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
  9. #endif
  10.  
  11. #define FORM    MakeID('F', 'O', 'R', 'M')
  12. #define CAT        MakeID('C', 'A', 'T', ' ')
  13. #define SVX8    MakeID('8', 'S', 'V', 'X')
  14.  
  15. struct Chunk {
  16.     LONG id;
  17.     LONG size;
  18. };
  19.  
  20. void main() {
  21.     BPTR outfile = NULL;
  22.     BPTR infile = NULL;
  23.     LONG buffer[8];
  24.     char *names[] = {"explode.8svx", "start.8svx", "shoot.8svx"};
  25.     long length;
  26.     
  27.     outfile = Open("Sounds.8SVX", MODE_NEWFILE);
  28.     
  29.     long count;
  30.     
  31.     int i;
  32.     
  33.     for (i=0;i<3;i++) {
  34.         infile = Open(names[i], MODE_OLDFILE);
  35.         count = Read(infile, buffer, 8);
  36.         length += ((struct Chunk *)buffer)->size;
  37.         Close(infile);
  38.     }
  39.     
  40.     length += (3*8);            // for the three headers
  41.     length += 4;                // for the CAT & 8SVX header
  42.     
  43.     LONG val;
  44.     
  45.     val = CAT;
  46.     count = Write(outfile, &val, 4);
  47.     count = Write(outfile, &length, 4);
  48.     val = SVX8;
  49.     count = Write(outfile, &val, 4);
  50.     
  51.     int j;
  52.     ULONG c;
  53.     
  54.     for (i=0;i<3;i++) {
  55.         infile = Open(names[i], MODE_OLDFILE);
  56.         while((c=FGetC(infile))!=-1)
  57.             FPutC(outfile, c);
  58.         Close(infile);
  59.     }
  60.  
  61.     Close(outfile);
  62. }
  63.