From ed0f0489d3d17002abe48fd343e70dc2112092cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20=C5=9Apiewak?= Date: Sun, 11 Aug 2024 15:41:21 +0200 Subject: [PATCH] Update HuffmanDecoder.cs Fix not so obvious errors. --- ArcFormats/DxLib/HuffmanDecoder.cs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ArcFormats/DxLib/HuffmanDecoder.cs b/ArcFormats/DxLib/HuffmanDecoder.cs index 981ebba2..6d334ee0 100644 --- a/ArcFormats/DxLib/HuffmanDecoder.cs +++ b/ArcFormats/DxLib/HuffmanDecoder.cs @@ -143,7 +143,7 @@ namespace GameRes.Formats.DxLib ushort BitArrayFirstBatch; if (nodes[j].bitNumber > 9) continue; - BitArrayFirstBatch = (ushort)(nodes[j].bitArray[0] | (nodes[j].bitNumber << 8)); + BitArrayFirstBatch = (ushort)(nodes[j].bitArray[0] | (nodes[j].bitArray[1] << 8)); if ((i & bitMask[nodes[j].bitNumber - 1]) == (BitArrayFirstBatch & bitMask[nodes[j].bitNumber-1])) { @@ -191,19 +191,20 @@ namespace GameRes.Formats.DxLib { PressBitData >>= nodes[NodeIndex].bitNumber; } - while (NodeIndex>255) + } + + while (NodeIndex > 255) + { + if (PressBitCounter == 8) { - if (PressBitCounter==8) - { - PressSizeCounter++; - PressBitData = compressedData[PressSizeCounter]; - PressBitCounter = 0; - } - Index = PressBitData & 1; - PressBitData >>= 1; - PressBitCounter++; - NodeIndex = nodes[NodeIndex].ChildNode[Index]; + PressSizeCounter++; + PressBitData = compressedData[PressSizeCounter]; + PressBitCounter = 0; } + Index = PressBitData & 1; + PressBitData >>= 1; + PressBitCounter++; + NodeIndex = nodes[NodeIndex].ChildNode[Index]; } m_output[DestSizeCounter] = (byte)NodeIndex; }