예제 #1
0
파일: texture.c 프로젝트: AlexMax/deutex
/********Write PNAME entry in WAD********/
Int32 PNMwritePNAMEtoWAD(struct WADINFO *info)
{  Int16 idx; Int32 size =0;
   char buffer[8];
   if(PNMok!=TRUE)Bug("PNMok");
   /*Write the Number of entries*/
   size+=WADRwriteLong(info,PNMtop);
   /*Then write the names , '\0' padded*/
   for(idx=0;idx<PNMtop;idx++)   
   { Normalise(buffer,PNMpatchs[idx].name);
     size +=WADRwriteBytes(info,buffer,8);
   }
   return size;
}
예제 #2
0
static void HDRsetDir(struct WADINFO *rwad,Bool IsIwad,Bool Restore,
        Int32 time,Int32 dirpos,Int32 ntry,Int32 rsize,
        Int32 estart,Int32 esize,const char *wadext)
{ static char name[8];
  Int32 pos;
        /*Set the old references */
  Phase("ME43", "Writing new wad directory");
  write_i32_le (&HDRdir[0].start, 0x24061968L);
  write_i32_le (&HDRdir[0].size,  666L);
  Normalise(HDRdir[0].name,"IZNOGOOD");
        /*Set original WAD DIRECTORY*/
  write_i32_le (&HDRdir[1].start, dirpos);
  write_i32_le (&HDRdir[1].size,  ntry);
  Normalise(HDRdir[1].name,(IsIwad==TRUE)?"DOOM_DIR":"PWAD_DIR");
  /*Store original WAD size and start*/
  write_i32_le (&HDRdir[2].start, 0);
  write_i32_le (&HDRdir[2].size,  rsize);
  Normalise(HDRdir[2].name,"ORIGINAL");
  /*Store external WAD size and start*/
  write_i32_le (&HDRdir[3].start, estart);
  write_i32_le (&HDRdir[3].size,  esize);
  GetNameOfWAD(name,wadext);
  Normalise(HDRdir[3].name,name);
  /*old file time*/
  write_i32_le (&HDRdir[4].size,  time);
  write_i32_le (&HDRdir[4].start, Restore);
  Normalise(HDRdir[4].name,"TIME");
  /*save position of old ref if no previous _DEUTEX_ */
  WADRalign4(rwad);
  pos=(Int32)WADRfindEntry(rwad,"_DEUTEX_");
  if(pos<0)
  { pos=WADRposition(rwad);/*BC++ 4.5 bug*/
         WADRdirAddEntry(rwad,pos,HDRdirSz,"_DEUTEX_");
  }
  /*write old refs*/
  WADRwriteBytes(rwad,(char  *)HDRdir,HDRdirSz);
  /*write the directory*/
  rwad->dirpos = WADRposition(rwad);
  WADRwriteDir(rwad, 1);
}