- #define _CRT_SECURE_NO_WARNINGS 
- #include <stdlib.h> 
- #include <stdio.h> 
- #include <string.h> 
-   
-   
-   
- unsigned int read_dword(unsigned char* data) 
- { 
-         return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24); 
- } 
-   
-   
-   
- unsigned int read_word(unsigned char* data) 
- { 
-         return data[0]+(data[1]<<8); 
- } 
-   
-   
-   
- bool get_bmp_dimensions(const char* filename,unsigned int& wdt,unsigned int& hgt) 
- { 
-         FILE *fin; 
-         int bpp,rle; 
-         unsigned char data[34]; 
-   
-         fin=fopen(filename,"rb"); 
-   
-         if(!fin) return false; 
-   
-         fread(data,sizeof(data),1,fin); 
-         fclose(fin); 
-   
-         bpp=read_word (&data[28]); 
-         rle=read_dword(&data[30]); 
-   
-         if(bpp!=8||rle) return false; 
-   
-         wdt=read_dword(&data[18]); 
-         hgt=read_dword(&data[22]); 
-   
-         if((wdt&15)||(hgt&15)) return false; 
-   
-         return true; 
- } 
-   
-   
-   
- void make_define(char *line) 
- { 
-         unsigned int i; 
-   
-         for(i=0;i<strlen(line);i++) 
-         { 
-                 if(line[i]>='0'&&line[i]<='9') continue; 
-                 if(line[i]>='A'&&line[i]<='Z') continue; 
-                 if(line[i]>='a'&&line[i]<='z') 
-                 { 
-                         line[i]-=32; 
-                         continue; 
-                 } 
-                 line[i]='_'; 
-         } 
- } 
-   
-   
-   
- void make_defines(FILE *fout,char* filename,char* prefix) 
- { 
-         FILE *fin; 
-         char line[1024]; 
-         unsigned int i,id; 
-   
-         fin=fopen(filename,"rt"); 
-   
-         if(!fin) return; 
-   
-         id=0; 
-   
-         while(fgets(line,sizeof(line),fin)!=NULL) 
-         { 
-                 if(!memcmp(line,"rem",3)||!memcmp(line,":",1)) continue; 
-   
-                 line[strlen(line)-2]=0; 
-   
-                 i=strlen(line)-1; 
-                 while(--i) 
-                 { 
-                         if(line[i]=='.') 
-                         { 
-                                 line[i]=0; 
-                                 break; 
-                         } 
-                 } 
-   
-                 i=strlen(line)-1; 
-                 while(--i) 
-                 { 
-                         if(line[i]=='\\'||line[i]=='/') 
-                         { 
-                                 strcpy(line,&line[i+1]); 
-                                 break; 
-                         } 
-                 } 
-   
-                 make_define(line); 
-   
-                 fprintf(fout,"#define %s%s\t%i\n",prefix,line,id); 
-                 id++; 
-         } 
-   
-         fprintf(fout,"\n"); 
-         fclose(fin); 
- } 
-   
-   
-   
- void make_defines_sprites(FILE *fout,char* filename,char* prefix) 
- { 
-         FILE *fin; 
-         char line[1024]; 
-         unsigned int i,wdt,hgt,spr; 
-   
-         fin=fopen(filename,"rt"); 
-   
-         if(!fin) return; 
-   
-         spr=0; 
-   
-         while(fgets(line,sizeof(line),fin)!=NULL) 
-         { 
-                 if(!memcmp(line,"rem",3)) continue; 
-   
-                 line[strlen(line)-1]=0; 
-   
-                 if(!get_bmp_dimensions(line,wdt,hgt)) continue; 
-   
-                 i=strlen(line)-1; 
-                 while(--i) 
-                 { 
-                         if(line[i]=='.') 
-                         { 
-                                 line[i]=0; 
-                                 break; 
-                         } 
-                 } 
-   
-                 i=strlen(line)-1; 
-                 while(--i) 
-                 { 
-                         if(line[i]=='\\'||line[i]=='/') 
-                         { 
-                                 strcpy(line,&line[i+1]); 
-                                 break; 
-                         } 
-                 } 
-   
-                 make_define(line); 
-   
-                 fprintf(fout,"#define %s%s\t%i\n",prefix,line,spr); 
-   
-                 spr+=(hgt>>4)*(wdt>>4); 
-         } 
-   
-         fprintf(fout,"\n"); 
-         fclose(fin); 
- } 
-   
-   
-   
- int skip_effect(int fxn,unsigned char *buf,int size) 
- { 
-         int pp,it,noise; 
-          
-         pp=0; 
-          
-         while(pp<size) 
-         { 
-                 it=buf[pp++]; 
-                  
-                 if(it&(1<<5)) pp+=2; 
-   
-                 if(it&(1<<6)) 
-                 { 
-                         noise=buf[pp++]; 
-                         if(it==0xd0&&noise>=0x20) break; 
-                 } 
-         } 
-          
-         return pp; 
- } 
-   
-   
-   
- void make_defines_sounds(FILE *fout,const char* filename,const char* prefix) 
- { 
-         FILE *fin; 
-         unsigned char* data; 
-         int i,off,len,rlen,size,effects_all; 
-         char line[1024]; 
-   
-         fin=fopen(filename,"rb"); 
-   
-         if(!fin) return; 
-   
-         fseek(fin,0,SEEK_END); 
-         size=ftell(fin); 
-         fseek(fin,0,SEEK_SET); 
-         data=(unsigned char*)malloc(size); 
-         fread(data,size,1,fin); 
-         fclose(fin); 
-   
-         effects_all=data[0]; 
-          
-         for(i=0;i<effects_all;++i) 
-         { 
-                 off=read_word(&data[1+i*2])+2+i*2; 
-   
-                 if(i<effects_all-1) 
-                 { 
-                         len=read_word(&data[3+i*2])+4+i*2-off; 
-                 } 
-                 else 
-                 { 
-                         len=size-off; 
-                 } 
-   
-                 rlen=skip_effect(i,&data[off],len); 
-                  
-                 if(rlen!=len) 
-                 { 
-                         strcpy(line,(const char*)&data[off+rlen]); 
-                 } 
-                 else 
-                 { 
-                         sprintf(line,"noname%3.3i",i+1); 
-                 } 
-   
-                 make_define(line); 
-   
-                 fprintf(fout,"#define %s%s\t%i\n",prefix,line,i); 
-         } 
-   
-         free(data); 
- } 
-   
-   
-   
- int main(int argc,char* argv[]) 
- { 
-         FILE *fout; 
-   
-         if(argc!=7) return 1; 
-   
-         fout=fopen("resources.h","wt"); 
-   
-         if(!fout) return 1; 
-   
-         fprintf(fout,"//└тЄюьрЄшўхёъш ухэхЁшЁєхь√х шфхэЄшЇшърЄюЁ√ ЁхёєЁёют\n\n"); 
-   
-         make_defines(fout,argv[1],"IMG_"); 
-         make_defines(fout,argv[2],"PAL_"); 
-         make_defines(fout,argv[3],"MUS_"); 
-         make_defines(fout,argv[4],"SMP_"); 
-         make_defines_sprites(fout,argv[5],"SPR_"); 
-         make_defines_sounds(fout,argv[6],"SFX_"); 
-   
-         fclose(fout); 
-   
-         return 0; 
- } 
-