From b347582b41bc360335a7768276e83370c5e1386a Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Fri, 3 Apr 2020 11:45:02 -0400 Subject: [PATCH] fix FPK data format saving --- Libraries/UniversalEditor.Core/IO/Writer.cs | 7 +++++++ .../DataFormats/FileSystem/Eighting/FPK/FPKDataFormat.cs | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Libraries/UniversalEditor.Core/IO/Writer.cs b/Libraries/UniversalEditor.Core/IO/Writer.cs index 65fdbd8b..dff9a9c8 100644 --- a/Libraries/UniversalEditor.Core/IO/Writer.cs +++ b/Libraries/UniversalEditor.Core/IO/Writer.cs @@ -168,6 +168,13 @@ namespace UniversalEditor.IO WriteBytes(realData); } + public long CalculateAlignment(long currentPosition, long alignTo, long extraPadding = 0) + { + long paddingCount = ((alignTo - (currentPosition % alignTo)) % alignTo); + paddingCount += extraPadding; + return paddingCount; + } + public void WriteLengthPrefixedString(string value) { WriteLengthPrefixedString(value, base.Accessor.DefaultEncoding); diff --git a/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/Eighting/FPK/FPKDataFormat.cs b/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/Eighting/FPK/FPKDataFormat.cs index 5d35c63d..97ac5a87 100644 --- a/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/Eighting/FPK/FPKDataFormat.cs +++ b/Plugins/UniversalEditor.Plugins.FileSystem/DataFormats/FileSystem/Eighting/FPK/FPKDataFormat.cs @@ -16,7 +16,7 @@ namespace UniversalEditor.DataFormats.FileSystem.Eighting.FPK { _dfr = base.MakeReferenceInternal(); _dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All); - _dfr.ExportOptions.Add(new CustomOptionNumber(nameof(DataAlignment), "Data &alignment (in bytes): ", 16, 0, UInt32.MaxValue)); + _dfr.ExportOptions.Add(new CustomOptionNumber(nameof(DataAlignment), "Data _alignment (in bytes): ", 16, 0, UInt32.MaxValue)); _dfr.Sources.Add("http://wiki.xentax.com/index.php?title=Bleach_%28PSP%29"); } return _dfr; @@ -94,7 +94,7 @@ namespace UniversalEditor.DataFormats.FileSystem.Eighting.FPK long archiveSizePosition = base.Accessor.Position; writer.WriteUInt32(archiveSize); - uint offset = (uint)(base.Accessor.Position + (48 * files.Length)); + uint offset = (uint)(16 + (48 * files.Length)); byte[][] compressedDatas = new byte[files.Length][]; bool[] compressed = new bool[files.Length]; @@ -115,7 +115,7 @@ namespace UniversalEditor.DataFormats.FileSystem.Eighting.FPK offset += (uint)(compressedData.Length + 1); - long count = (offset % mvarDataAlignment); + long count = writer.CalculateAlignment(offset, mvarDataAlignment); // (offset % mvarDataAlignment); offset += (uint)count; } for (int i = 0; i < files.Length; i++)