From 21e7acd774dd67bbe17a84bcab2c22f95f923b5c Mon Sep 17 00:00:00 2001 From: jwalz Date: Sat, 5 Jan 2002 21:05:54 +0000 Subject: [PATCH] *** empty log message *** --- sys/amiga/cvtsnd.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 sys/amiga/cvtsnd.c diff --git a/sys/amiga/cvtsnd.c b/sys/amiga/cvtsnd.c new file mode 100644 index 000000000..0e5f9c595 --- /dev/null +++ b/sys/amiga/cvtsnd.c @@ -0,0 +1,96 @@ +/* SCCS Id: @(#)cvtsnd.c 3.2 95/09/10 */ +/* Copyright (c) 1995, Andrew Church, Olney, Maryland */ +/* NetHack may be freely redistributed. See license for details. */ + +#include +#include +#include + +typedef struct { + short namelen; + char name[62]; + char misc[64]; /* rest of MacBinary header */ + long FORM; + long flen; + long AIFF; + long SSND; + long sndlen; +} AIFF; + +typedef struct { + char FORM[4]; + long flen; + char _8SVX[4]; + char VHDR[4]; + long vhlen; + long oneshot, repeat; + long samples; /* 'samplesPerHiCycle' in the docs - usually 32, so + * we'll use that */ + short freq; + char octaves, compress; + long volume; + char NAME[4]; + long nlen; /* should be 64; see name[] comment */ + char name[64]; /* for simplicity, i.e. just fwrite() entiree header */ + char BODY[4]; + long blen; +} IFF; + + +main(int ac, char **av) +{ + FILE *in, *out; + AIFF aiff; + IFF iff; + static char buf[16384]; + long n, len; + + if (ac != 3) { + fprintf(stderr, "Usage: %s input-file output-file\n", av[0]); + exit(20); + } + if (!(in = fopen(av[1], "r"))) { + fprintf(stderr, "Can't open input file\n"); + exit(20); + } + if (!(out = fopen(av[2], "w"))) { + fprintf(stderr, "Can't open output file\n"); + exit(20); + } + + fread(&aiff, sizeof(aiff), 1, in); + memcpy(iff.FORM, "FORM", 4); + iff.flen = sizeof(iff) + aiff.sndlen - 8; + memcpy(iff._8SVX, "8SVX", 4); + memcpy(iff.VHDR, "VHDR", 4); + iff.vhlen = 20; + iff.oneshot = aiff.sndlen; + iff.repeat = 0; + iff.samples = 32; + iff.freq = 22000; + iff.octaves = 1; + iff.compress= 0; + iff.volume = 0x10000; + memcpy(iff.NAME, "NAME", 4); + iff.nlen = 64; + strncpy(iff.name, aiff.name, 62); iff.name[aiff.namelen] = 0; + memcpy(iff.BODY, "BODY", 4); + iff.blen = aiff.sndlen; + fwrite(&iff, sizeof(iff), 1, out); + len = aiff.sndlen; + do { + if (len >= sizeof(buf)) + n = fread(buf, 1, sizeof(buf), in); + else + n = fread(buf, 1, len, in); + if (n) { + fwrite(buf, 1, n, out); + len -= n; + } + } while (len && n); + + if (len) + fprintf(stderr, "Warning: %ld bytes of sample missing\n", len); + fclose(in); fclose(out); + exit(0); +}