From 2de5801946b7e6091fd6994ebd293666d3c0de41 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Sun, 20 Apr 2014 18:07:21 -0400 Subject: [PATCH] LZRW1 still does not work --- .../Modules/LZRW1/LZRW1CompressionModule.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CSharp/Libraries/UniversalEditor.Compression/Modules/LZRW1/LZRW1CompressionModule.cs b/CSharp/Libraries/UniversalEditor.Compression/Modules/LZRW1/LZRW1CompressionModule.cs index 41b0864c..745003d1 100644 --- a/CSharp/Libraries/UniversalEditor.Compression/Modules/LZRW1/LZRW1CompressionModule.cs +++ b/CSharp/Libraries/UniversalEditor.Compression/Modules/LZRW1/LZRW1CompressionModule.cs @@ -51,10 +51,15 @@ namespace UniversalEditor.Compression.Modules.LZRW1 if (controlbits == 0) { // control bits are 0, so it's time to read a new control ushort - control = br.ReadUInt16(); + // don't use ReadUInt16 here because we need to keep the bytes + // for future use + control = br.ReadByte(); + control |= (ushort)(br.ReadByte() << 8); controlbits = 16; } - if ((control & 1) != 0) + + int k = 1; // 0x8000; // 1 + if ((control & k) != 0) { ushort offset, len; offset = (ushort)((br.PeekByte() & 0xF0) << 4); @@ -63,8 +68,7 @@ namespace UniversalEditor.Compression.Modules.LZRW1 bw.Flush(); - int p = (int)(sao.Length - offset); - // sao.Position = p; + sao.Position = sao.Length - offset; byte[] nextdata = sao.Reader.ReadBytes(len); bw.WriteBytes(nextdata); }