From 597585030ad40a7890d8dd7452d1ee6993c2f4c1 Mon Sep 17 00:00:00 2001 From: Gl0 Date: Fri, 6 Jul 2018 16:37:17 +0300 Subject: [PATCH] fix parisng atf format version < 3 --- ATF/Atf.cs | 6 ++++-- ATF/Properties/AssemblyInfo.cs | 4 ++-- atf2png/Properties/AssemblyInfo.cs | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ATF/Atf.cs b/ATF/Atf.cs index 73f516a..c50be9e 100644 --- a/ATF/Atf.cs +++ b/ATF/Atf.cs @@ -46,7 +46,8 @@ public class ATFReader { uint length = 0; if (b[3] != 0xff) { _version = 0; - length = (uint)b[0] << 16 + b[1] << 8 + b[2]; + length = ((uint)b[0] << 16) + ((uint)b[1] << 8) + b[2]; + reader.BaseStream.Position = reader.BaseStream.Position - 1; } else { _version = reader.ReadByte(); @@ -60,7 +61,8 @@ public class ATFReader { _height = 1 << reader.ReadByte(); _mipCount = reader.ReadByte(); //currently we are interested only in highest quality texture and don't bother about cubemaps, so extract only first one. - length = BitConverter.IsLittleEndian ? BitConverter.ToUInt32(reader.ReadBytes(4).Reverse().ToArray(), 0) : reader.ReadUInt32(); + if (_version == 0) { b = reader.ReadBytes(3); length = ((uint)b[0] << 16) + ((uint)b[1] << 8) + b[2]; } + else length = BitConverter.IsLittleEndian ? BitConverter.ToUInt32(reader.ReadBytes(4).Reverse().ToArray(), 0) : reader.ReadUInt32(); byte[] image; if (_atfFormat == ATFFormat.ATFRAWCOMPRESSED) { image = DxtUtil.DecompressDxt1(reader.ReadBytes((int) length), _width, _height); } else if (_atfFormat == ATFFormat.ATFRAWCOMPRESSEDALPHA) { image = DxtUtil.DecompressDxt5(reader.ReadBytes((int)length), _width, _height); } diff --git a/ATF/Properties/AssemblyInfo.cs b/ATF/Properties/AssemblyInfo.cs index 0e0f25f..8f55f62 100644 --- a/ATF/Properties/AssemblyInfo.cs +++ b/ATF/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.1")] +[assembly: AssemblyFileVersion("1.0.0.1")] diff --git a/atf2png/Properties/AssemblyInfo.cs b/atf2png/Properties/AssemblyInfo.cs index 0084d3e..3d46d14 100644 --- a/atf2png/Properties/AssemblyInfo.cs +++ b/atf2png/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.1")] +[assembly: AssemblyFileVersion("1.0.0.1")]