diff --git a/ArcFormats/DxLib/ArcDX.cs b/ArcFormats/DxLib/ArcDX.cs index ec81a5af..8f25ae26 100644 --- a/ArcFormats/DxLib/ArcDX.cs +++ b/ArcFormats/DxLib/ArcDX.cs @@ -271,7 +271,7 @@ namespace GameRes.Formats.DxLib dx = ReadArcHeaderV6 (file, version, key); if (null == dx || dx.DirTable >= dx.IndexSize || dx.FileTable >= dx.IndexSize) return null; - using (var encrypted = file.CreateStream (dx.IndexOffset, dx.IndexSize)) + using (var encrypted = file.CreateStream (dx.IndexOffset, (uint)dx.IndexSize)) using (var index = new EncryptedStream (encrypted, version >= 6 ? 0 : dx.IndexOffset, key)) using (var reader = IndexReader.Create (dx, version, index)) { @@ -305,8 +305,8 @@ namespace GameRes.Formats.DxLib IndexSize = LittleEndian.ToUInt32 (header, 0), BaseOffset = LittleEndian.ToInt64 (header, 4), IndexOffset = LittleEndian.ToInt64 (header, 0x0C), - FileTable = (uint)LittleEndian.ToInt64 (header, 0x14), - DirTable = (uint)LittleEndian.ToInt64 (header, 0x1C), + FileTable = LittleEndian.ToInt64 (header, 0x14), + DirTable = LittleEndian.ToInt64 (header, 0x1C), CodePage = LittleEndian.ToInt32 (header, 0x24), }; } diff --git a/ArcFormats/DxLib/ArcDX8.cs b/ArcFormats/DxLib/ArcDX8.cs index 05ed84e9..4022a8dc 100644 --- a/ArcFormats/DxLib/ArcDX8.cs +++ b/ArcFormats/DxLib/ArcDX8.cs @@ -153,7 +153,8 @@ namespace GameRes.Formats.DxLib var readyStr = new MemoryStream(headerBuffer); ArcView arcView = new ArcView(readyStr, "hdr",(uint)headerBuffer.LongLength); List entries; - using (var indexStr = arcView.CreateStream(0, dx.IndexSize)) + //TODO: Try to memmap files with over 4GB. + using (var indexStr = arcView.CreateStream(0, (uint)dx.IndexSize)) using (var reader = IndexReader.Create(dx, 8, indexStr)) { entries = reader.Read();