ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Helper/LevelDB.pas
(Generate patch)

Comparing oup/current/Helper/LevelDB.pas (file contents):
Revision 142 by alloc, Fri Mar 30 02:08:49 2007 UTC vs.
Revision 154 by alloc, Sun Apr 1 20:36:23 2007 UTC

# Line 44 | Line 44 | end;
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;
# Line 199 | Line 202 | begin
202    Stream_Names := TMemoryStream.Create;
203    Stream_Dat   := TFileStream.Create(Target, fmCreate);
204    Stream_Raw   := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.raw'), fmCreate);
205 +  Stream_Raw.Write(EmptyBytes[0], 32);
206    if Connection.DataOS in [DOS_WINDEMO, DOS_MAC, DOS_MACBETA] then
207 +  begin
208      Stream_Sep := TFileStream.Create(AnsiReplaceStr(Target, '.dat', '.sep'), fmCreate);
209 +    Stream_Sep.Write(EmptyBytes[0], 32);
210 +  end;
211 +
212  
213    DoStep('Creating header');
214    progress.Position      := 0;
# Line 335 | Line 343 | begin
343              begin
344                RawLinks[i].RawAddr := Stream_Sep.Size;
345                Stream_sep.CopyFrom(RawFileStream, RawFileStream.Size);
346 +              if (Stream_Sep.Size mod 32) > 0 then
347 +                Stream_Sep.Write(EmptyBytes[0], 32 - (Stream_Sep.Size mod 32));
348              end else begin
349                RawLinks[i].RawAddr := Stream_Raw.Size;
350                Stream_Raw.CopyFrom(RawFileStream, RawFileStream.Size);
351 +              if (Stream_Raw.Size mod 32) > 0 then
352 +                Stream_Raw.Write(EmptyBytes[0], 32 - (Stream_Raw.Size mod 32));
353              end;
354            end else
355              RawLinks[i].RawAddr := 0;
# Line 347 | Line 359 | begin
359        end;
360        DatFileStream.Seek(0, soFromBeginning);
361        Stream_Body.CopyFrom(DatFileStream, DatFileStream.Size);
362 +      if (Stream_Body.Size mod 32) > 0 then
363 +      begin
364 +        ShowMessage(
365 +            IntToStr(FileID) + '-' + FileInfo.Name + '.' + FileInfo.Extension + #13#10 +
366 +            IntToStr(FileInfo.Size) + ' - 0x' + IntToHex(FileInfo.Size, 6) + ' - real: ' + IntToStr(DatFileStream.Size) + ' - 0x' + IntToHex(DatFileStream.Size, 6) + #13#10 +
367 +            IntToStr(Stream_Body.Size) + ' - 0x' + IntToHex(Stream_Body.Size, 6) );
368 +        Stream_Body.Write(EmptyBytes[0], 32 - (Stream_Body.Size mod 32));
369 +      end;
370      end
371      else
372        FilesHeader[FileID].DataAddr := 0;
# Line 377 | Line 397 | begin
397    for i := 0 to High(ExtensionsHeader) do
398      Stream_Dat.Write(ExtensionsHeader[i], SizeOf(ExtensionsHeader[i]));
399  
400 +  if (Stream_Dat.Size mod 32) > 0 then
401 +    Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32));
402 +
403    DatHeader.DataSize  := Stream_Body.Size;
404    DatHeader.NamesSize := Stream_Names.Size;
405    DatHeader.DataAddr  := Stream_Dat.Size;
406  
407    Stream_Body.Seek(0, soFromBeginning);
408    Stream_Dat.CopyFrom(Stream_Body, Stream_Body.Size);
409 +
410 +  if (Stream_Dat.Size mod 32) > 0 then
411 +    Stream_Dat.Write(EmptyBytes[0], 32 - (Stream_Dat.Size mod 32));
412 +
413    DatHeader.NamesAddr := Stream_Dat.Size;
414    Stream_Names.Seek(0, soFromBeginning);
415    Stream_Dat.CopyFrom(Stream_Names, Stream_Names.Size);

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)