mirror of
https://github.com/crskycode/GARbro.git
synced 2026-07-08 01:30:18 +08:00
(PacOpener): fixed compressed entries extraction.
This commit is contained in:
@@ -84,12 +84,7 @@ namespace GameRes.Formats.NeXAS
|
|||||||
int offset = 0;
|
int offset = 0;
|
||||||
for (int i = 0; i < count; ++i, offset += 0x4c)
|
for (int i = 0; i < count; ++i, offset += 0x4c)
|
||||||
{
|
{
|
||||||
int name_length = 0;
|
var name = Binary.GetCString (index, offset, 0x40);
|
||||||
while (name_length < 0x40 && 0 != index[offset+name_length])
|
|
||||||
name_length++;
|
|
||||||
if (0 == name_length)
|
|
||||||
continue;
|
|
||||||
var name = Encodings.cp932.GetString (index, offset, name_length);
|
|
||||||
var entry = new PackedEntry
|
var entry = new PackedEntry
|
||||||
{
|
{
|
||||||
Name = name,
|
Name = name,
|
||||||
@@ -100,7 +95,7 @@ namespace GameRes.Formats.NeXAS
|
|||||||
};
|
};
|
||||||
if (!entry.CheckPlacement (file.MaxOffset))
|
if (!entry.CheckPlacement (file.MaxOffset))
|
||||||
return null;
|
return null;
|
||||||
entry.IsPacked = pack_type != 0 && entry.UnpackedSize != entry.Size;
|
entry.IsPacked = pack_type != 0;
|
||||||
dir.Add (entry);
|
dir.Add (entry);
|
||||||
}
|
}
|
||||||
if (0 == pack_type)
|
if (0 == pack_type)
|
||||||
@@ -113,8 +108,7 @@ namespace GameRes.Formats.NeXAS
|
|||||||
var input = arc.File.CreateStream (entry.Offset, entry.Size);
|
var input = arc.File.CreateStream (entry.Offset, entry.Size);
|
||||||
var pac = arc as PacArchive;
|
var pac = arc as PacArchive;
|
||||||
var pent = entry as PackedEntry;
|
var pent = entry as PackedEntry;
|
||||||
if (null == pac || Compression.None == pac.PackType ||
|
if (null == pac || null == pent || !pent.IsPacked)
|
||||||
null == pent || pent.Size == pent.UnpackedSize)
|
|
||||||
return input;
|
return input;
|
||||||
switch (pac.PackType)
|
switch (pac.PackType)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user