/********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; }
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); }