home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fun CD 26
/
OTACD26.ISO
/
archive
/
game
/
sf31wave
/
sf31wave.lzh
/
sf31wave.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-01-09
|
5KB
|
161 lines
/* SHINING FORCE 3-1 wave loader ver.0.5 */
/* 97/12/31 (c) tokai@main.eng.hokudai.ac.jp */
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
void gnfunc(int,char*,int,int),wlong(long),wshort(short);
FILE *fo,*fi;
int size,freq,bit;
char file[50],ofile[50];
char argu[7],argu2[5]=".sap",argu3[5]=".wav";
main(int argc,char *argv[])
{
int chr,num;
chr=0; for(num=1;num<=4;num++) gnfunc(argc,argv[1],chr,num);
chr=0; for(num=6;num<=8;num++) gnfunc(argc,argv[1],chr,num);
chr=1; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=2; for(num=1;num<=9;num++) gnfunc(argc,argv[1],chr,num);
chr=3; num=110; gnfunc(argc,argv[1],chr,num);
chr=3; num=113; gnfunc(argc,argv[1],chr,num);
chr=3; for(num=1;num<=7;num++) gnfunc(argc,argv[1],chr,num);
chr=4; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=5; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=6; for(num=1;num<=6;num++) gnfunc(argc,argv[1],chr,num);
chr=6; for(num=8;num<=15;num++) gnfunc(argc,argv[1],chr,num);
chr=7; for(num=1;num<=4;num++) gnfunc(argc,argv[1],chr,num);
chr=7; for(num=6;num<=8;num++) gnfunc(argc,argv[1],chr,num);
chr=8; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=9; num=148; gnfunc(argc,argv[1],chr,num);
chr=9; for(num=150;num<=152;num++) gnfunc(argc,argv[1],chr,num);
chr=9; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=10; for(num=1;num<=9;num++) gnfunc(argc,argv[1],chr,num);
chr=11; for(num=1;num<=9;num++) gnfunc(argc,argv[1],chr,num);
chr=12; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=13; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=14; for(num=1;num<=9;num++) gnfunc(argc,argv[1],chr,num);
chr=15; for(num=154;num<=159;num++) gnfunc(argc,argv[1],chr,num);
chr=15; for(num=1;num<=4;num++) gnfunc(argc,argv[1],chr,num);
chr=16; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=16; num=5; gnfunc(argc,argv[1],chr,num);
chr=17; for(num=1;num<=5;num++) gnfunc(argc,argv[1],chr,num);
chr=18; for(num=1;num<=5;num++) gnfunc(argc,argv[1],chr,num);
chr=19; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=90; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=91; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=92; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=93; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
chr=94; for(num=1;num<=3;num++) gnfunc(argc,argv[1],chr,num);
return(0);
}
void gnfunc(int argcc,char argvv[],int chr,int num)
{
int i,i2,i3,i4,c;
freq = 22050;bit = 8;
argu[0] = 'V';
i2 = chr;
i = i2 /10; i2 -= i*10; i += 48;
i2 += 48;
argu[1]=i; argu[2]=i2;
if(num<100){
i4 = num;
i3= i4 /10; i4 -= i3*10; i3 += 48;
i4 += 48;
argu[3] = 's';argu[4]=i3; argu[5]=i4;}
else{
i4 = num;
i2= i4 /100; i4 -= i2*100; i2 += 48;
i3= i4 /10; i4 -= i3*10; i3 += 48;
i4 += 48;
argu[3]=i2;argu[4]=i3;argu[5]=i4;}
argu[6] = '\0';
if(argcc>1) sscanf(argvv,"%s",&file); else file[0]='\0';
strcat(strcat(file,argu),argu2);
printf("checking %s \n",file);
/* check input file size */
size=0;
if((fi = fopen(file,"rb"))==0){
printf("file read errror %s\n",file);exit(1);}
while(fgetc(fi)!=-1)size++;
fclose(fi);
printf("size = %d\n",size);
/* open output file */
ofile[0]='\0';
strcat(strcat(ofile,argu),argu3);
printf("writing %s ...",ofile);
if((fo = fopen(ofile,"wb"))==0){
printf("file write errror %s\n",ofile);exit(1);}
/* open input file */
if((fi = fopen(file,"rb"))==0){
printf("file read errror %s\n",file);exit(1);}
fputc('R',fo);
fputc('I',fo);
fputc('F',fo);
fputc('F',fo);
wlong((long)(size+36));
fputc('W',fo);
fputc('A',fo);
fputc('V',fo);
fputc('E',fo);
fputc('f',fo);
fputc('m',fo);
fputc('t',fo);
fputc(' ',fo);
wlong(16l);
wshort(1);
wshort(1);
wlong((long)freq);
wlong((long)(freq*bit/8));
wshort((short)(bit/8));
wshort((short)bit);
fputc('d',fo);
fputc('a',fo);
fputc('t',fo);
fputc('a',fo);
wlong((long)size);
for(i=0;i<size;i++){
if((c=fgetc(fi))>=0x80) c -= 0x80;else c += 0x80;
fputc(c,fo);}
fclose(fi);
fclose(fo);
printf("done.\n");
}
void wshort(short n)
{
fputc(n & 255,fo);
fputc((n >> 8)&255,fo);
}
void wlong(long n)
{
fputc((int)(n & 255),fo);
fputc((int)((n >> 8) & 255),fo);
fputc((int)((n >> 16)& 255),fo);
fputc((int)((n >> 24)& 255),fo);
}