diff --git a/ArcFormats/Cyberworks/ArcDAT.cs b/ArcFormats/Cyberworks/ArcDAT.cs index 7fed101c..08a2430c 100644 --- a/ArcFormats/Cyberworks/ArcDAT.cs +++ b/ArcFormats/Cyberworks/ArcDAT.cs @@ -213,8 +213,7 @@ namespace GameRes.Formats.Cyberworks int id = input.ReadByte(); if (id == scheme.Value2) { - using (var seekable = new SeekableStream (input)) - using (var reader = new AImageReader (seekable, scheme)) + using (var reader = new AImageReader (input, scheme)) { reader.Unpack(); return TgaStream.Create (reader.Info, reader.Data, scheme.Flipped); diff --git a/ArcFormats/Cyberworks/ImageTINK.cs b/ArcFormats/Cyberworks/ImageTINK.cs index 10115cda..725847be 100644 --- a/ArcFormats/Cyberworks/ImageTINK.cs +++ b/ArcFormats/Cyberworks/ImageTINK.cs @@ -116,12 +116,13 @@ namespace GameRes.Formats.Cyberworks if (src_stride * (int)Info.Height != data_size) throw new InvalidFormatException(); m_output = new byte[dst_stride * (int)Info.Height]; + var gap = new byte[src_stride-dst_stride]; int dst = 0; for (uint y = 0; y < Info.Height; ++y) { m_input.Read (m_output, dst, dst_stride); + m_input.Read (gap, 0, gap.Length); dst += dst_stride; - m_input.BaseStream.Seek (src_stride-dst_stride, SeekOrigin.Current); } } }