From 881e5f1e3fe93b0960086217682d03ebe327523f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20=C5=9Apiewak?= Date: Thu, 1 Aug 2024 14:42:40 +0200 Subject: [PATCH] Update ArcDX8.cs Start work on huffman compression. --- ArcFormats/DxLib/ArcDX8.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ArcFormats/DxLib/ArcDX8.cs b/ArcFormats/DxLib/ArcDX8.cs index 4022a8dc..d67651ea 100644 --- a/ArcFormats/DxLib/ArcDX8.cs +++ b/ArcFormats/DxLib/ArcDX8.cs @@ -24,7 +24,6 @@ // using GameRes.Formats.Strings; -using NAudio.SoundFont; using System; using System.Collections.Generic; using System.ComponentModel.Composition; @@ -42,6 +41,17 @@ namespace GameRes.Formats.DxLib public bool HuffmanCompressed { get; set; } } + internal struct DXA8HuffmanNode + { + UInt64 Weight; + int bitNumber; + byte[] bitArray; //32 bytes here + int Index; + + int ParentNode; // index of parent node. + int[] ChildNode; //two children nodes, -1 if not existent. + } + [Export(typeof(ArchiveFormat))] public class Dx8Opener : DxOpener { @@ -153,7 +163,7 @@ namespace GameRes.Formats.DxLib var readyStr = new MemoryStream(headerBuffer); ArcView arcView = new ArcView(readyStr, "hdr",(uint)headerBuffer.LongLength); List entries; - //TODO: Try to memmap files with over 4GB. + //There MAY be the case where the singular file is over 4GB, but it's very rare. using (var indexStr = arcView.CreateStream(0, (uint)dx.IndexSize)) using (var reader = IndexReader.Create(dx, 8, indexStr)) {