| 44 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 45 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 46 |  | procedure TForm_LevelDB.CreateLevel(Source, Target: String); | 
 
 
 
 
 
 
 
 | 47 | + | const | 
 
 
 
 
 
 
 
 | 48 | + | EmptyBytes: Array[0..31] of Byte = ( | 
 
 
 
 
 
 
 
 | 49 | + | 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 50 |  | var | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 51 |  | DatHeader:        THeader; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 52 |  | FilesHeader:      TFilesMap; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 338 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 339 |  | RawLinks[i].RawAddr := Stream_Sep.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 340 |  | Stream_sep.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 | 341 | + | if (Stream_Sep.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 | 342 | + | Stream_Sep.Write(EmptyBytes[0], 32 - (Stream_Sep.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 343 |  | end else begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 344 |  | RawLinks[i].RawAddr := Stream_Raw.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 345 |  | Stream_Raw.CopyFrom(RawFileStream, RawFileStream.Size); | 
 
 
 
 
 
 
 
 | 346 | + | if (Stream_Raw.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 | 347 | + | Stream_Raw.Write(EmptyBytes[0], 32 - (Stream_Raw.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 348 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 349 |  | end else | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 350 |  | RawLinks[i].RawAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 354 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 355 |  | DatFileStream.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 356 |  | Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size); | 
 
 
 
 
 
 
 
 | 357 | + | if (Stream_Body.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 | 358 | + | Stream_Body.Write(EmptyBytes[0], 32 - (Stream_Body.Size mod 32)); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 359 |  | end | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 360 |  | else | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 361 |  | FilesHeader[FileID].DataAddr := 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 386 |  | for i := 0 to High(ExtensionsHeader) do | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 387 |  | Stream_Dat.Write(ExtensionsHeader[i], SizeOf(ExtensionsHeader[i])); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 388 |  |  | 
 
 
 
 
 
 
 
 | 389 | + | if (Stream_Dat.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 | 390 | + | Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32)); | 
 
 
 
 
 
 
 
 | 391 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 392 |  | DatHeader.DataSize  := Stream_Body.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 393 |  | DatHeader.NamesSize := Stream_Names.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 |  | DatHeader.DataAddr  := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 395 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 |  | Stream_Body.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 397 |  | Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size); | 
 
 
 
 
 
 
 
 | 398 | + |  | 
 
 
 
 
 
 
 
 | 399 | + | if (Stream_Dat.Size mod 32) > 0 then | 
 
 
 
 
 
 
 
 | 400 | + | Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32)); | 
 
 
 
 
 
 
 
 | 401 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 402 |  | DatHeader.NamesAddr := Stream_Dat.Size; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 403 |  | Stream_Names.Seek(0, soFromBeginning); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 404 |  | Stream_Dat.CopyFrom(Stream_Names, Stream_Names.Size); |